Logins seem to work.

This commit is contained in:
Christopher Allan Webber 2011-04-03 17:05:30 -05:00
parent 4ad5af85e2
commit a37767172b
3 changed files with 50 additions and 4 deletions

View File

@ -35,3 +35,13 @@ class RegistrationForm(wtforms.Form):
'Email address',
[wtforms.validators.Required(),
wtforms.validators.Email()])
class LoginForm(wtforms.Form):
username = wtforms.TextField(
'Username',
[wtforms.validators.Required(),
wtforms.validators.Regexp(r'^\w+$')])
password = wtforms.PasswordField(
'Password',
[wtforms.validators.Required()])

View File

@ -69,8 +69,15 @@ def register_success(request):
def login(request):
"""
Mediagoblin login view.
If you provide the POST with 'next', it'll redirect to that view.
"""
login_form = auth_forms.LoginForm(request.POST)
login_failed = False
if request.method == 'POST' and login_form.validate():
#try:
user = request.db.User.find_one(
@ -79,15 +86,19 @@ def login(request):
if user.check_login(request.POST['password']):
# set up login in session
request.session['user_id'] = unicode(user['_id'])
request.session.save()
import pdb
pdb.set_trace()
if request.POST.has_key('next'):
return exc.HTTPFound(location=request.POST['next'])
else:
return exc.HTTPFound(
location=request.urlgen("index"))
else:
# Prevent detecting who's on this system by testing login
# attempt timings
auth_lib.fake_login_attempt()
login_failed = True
# render
template = request.template_env.get_template(
@ -95,7 +106,9 @@ def login(request):
return Response(
template.render(
{'request': request,
'login_form': login_form}))
'login_form': login_form,
'next': request.GET.get('next') or request.POST.get('next'),
'login_failed': login_failed}))
def logout(request):

View File

@ -0,0 +1,23 @@
{% extends "mediagoblin/base.html" %}
{% import "/mediagoblin/utils/wtforms.html" as wtforms_util %}
{% block mediagoblin_content %}
<h2>Login:</h2>
<form action="{{ request.urlgen('mediagoblin.auth.login') }}"
method="POST" enctype="multipart/form-data">
{% if login_failed %}
<p><i>Login failed!</i></p>
{% endif %}
<table>
{{ wtforms_util.render_table(login_form) }}
<tr>
<td></td>
<td><input type="submit" value="submit" /></td>
</tr>
</table>
</form>
{% endblock %}