aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/auth
diff options
context:
space:
mode:
Diffstat (limited to 'mediagoblin/auth')
-rw-r--r--mediagoblin/auth/forms.py4
-rw-r--r--mediagoblin/auth/lib.py25
-rw-r--r--mediagoblin/auth/routing.py9
-rw-r--r--mediagoblin/auth/views.py85
4 files changed, 44 insertions, 79 deletions
diff --git a/mediagoblin/auth/forms.py b/mediagoblin/auth/forms.py
index db8aaceb..7bc0aeb1 100644
--- a/mediagoblin/auth/forms.py
+++ b/mediagoblin/auth/forms.py
@@ -27,7 +27,9 @@ class RegistrationForm(wtforms.Form):
'Password',
[wtforms.validators.Required(),
wtforms.validators.Length(min=6, max=30),
- wtforms.validators.EqualTo('confirm_password')])
+ wtforms.validators.EqualTo(
+ 'confirm_password',
+ 'Passwords must match.')])
confirm_password = wtforms.PasswordField(
'Confirm password',
[wtforms.validators.Required()])
diff --git a/mediagoblin/auth/lib.py b/mediagoblin/auth/lib.py
index dc5f9941..f40e560f 100644
--- a/mediagoblin/auth/lib.py
+++ b/mediagoblin/auth/lib.py
@@ -19,7 +19,7 @@ import random
import bcrypt
-from mediagoblin.util import send_email
+from mediagoblin.util import send_email, render_template
from mediagoblin import globals as mgoblin_globals
@@ -89,6 +89,10 @@ def fake_login_attempt():
randplus_stored_hash == randplus_hashed_pass
+EMAIL_VERIFICATION_TEMPLATE = (
+ u"http://{host}{uri}?"
+ u"userid={userid}&token={verification_key}")
+
def send_verification_email(user, request):
"""
Send the verification email to users to activate their accounts.
@@ -97,9 +101,14 @@ def send_verification_email(user, request):
- user: a user object
- request: the request
"""
-
- email_template = request.template_env.get_template(
- 'mediagoblin/auth/verification_email.txt')
+ rendered_email = render_template(
+ request, 'mediagoblin/auth/verification_email.txt',
+ {'username': user['username'],
+ 'verification_url': EMAIL_VERIFICATION_TEMPLATE.format(
+ host=request.host,
+ uri=request.urlgen('mediagoblin.auth.verify_email'),
+ userid=unicode(user['_id']),
+ verification_key=user['verification_key'])})
# TODO: There is no error handling in place
send_email(
@@ -111,10 +120,4 @@ def send_verification_email(user, request):
# specific GNU MediaGoblin instance in the subject line. For
# example "GNU MediaGoblin @ Wandborg - [...]".
'GNU MediaGoblin - Verify your email!',
- email_template.render(
- username=user['username'],
- verification_url='http://{host}{uri}?userid={userid}&token={verification_key}'.format(
- host=request.host,
- uri=request.urlgen('mediagoblin.auth.verify_email'),
- userid=unicode(user['_id']),
- verification_key=user['verification_key'])))
+ rendered_email)
diff --git a/mediagoblin/auth/routing.py b/mediagoblin/auth/routing.py
index a8909fbb..46c585d2 100644
--- a/mediagoblin/auth/routing.py
+++ b/mediagoblin/auth/routing.py
@@ -20,7 +20,8 @@ auth_routes = [
Route('mediagoblin.auth.register', '/register/',
controller='mediagoblin.auth.views:register'),
Route('mediagoblin.auth.register_success', '/register/success/',
- controller='mediagoblin.auth.views:register_success'),
+ template='mediagoblin/auth/register_success.html',
+ controller='mediagoblin.views:simple_template_render'),
Route('mediagoblin.auth.login', '/login/',
controller='mediagoblin.auth.views:login'),
Route('mediagoblin.auth.logout', '/logout/',
@@ -28,9 +29,11 @@ auth_routes = [
Route('mediagoblin.auth.verify_email', '/verify_email/',
controller='mediagoblin.auth.views:verify_email'),
Route('mediagoblin.auth.verify_email_notice', '/verification_required/',
- controller='mediagoblin.auth.views:verify_email_notice'),
+ template='mediagoblin/auth/verification_needed.html',
+ controller='mediagoblin.views:simple_template_render'),
Route('mediagoblin.auth.resend_verification', '/resend_verification/',
controller='mediagoblin.auth.views:resend_activation'),
Route('mediagoblin.auth.resend_verification_success',
'/resend_verification_success/',
- controller='mediagoblin.auth.views:resend_activation_success')]
+ template='mediagoblin/auth/resent_verification_email.html',
+ controller='mediagoblin.views:simple_template_render')]
diff --git a/mediagoblin/auth/views.py b/mediagoblin/auth/views.py
index e4f1a7b1..1d00f382 100644
--- a/mediagoblin/auth/views.py
+++ b/mediagoblin/auth/views.py
@@ -16,8 +16,9 @@
import uuid
-from webob import Response, exc
+from webob import exc
+from mediagoblin.util import render_to_response, redirect
from mediagoblin.db.util import ObjectId
from mediagoblin.auth import lib as auth_lib
from mediagoblin.auth import forms as auth_forms
@@ -53,25 +54,12 @@ def register(request):
send_verification_email(entry, request)
- # Redirect to register_success
- return exc.HTTPFound(
- location=request.urlgen("mediagoblin.auth.register_success"))
+ return redirect(request, "mediagoblin.auth.register_success")
- # render
- template = request.template_env.get_template(
- 'mediagoblin/auth/register.html')
- return Response(
- template.render(
- {'request': request,
- 'register_form': register_form}))
-
-
-def register_success(request):
- template = request.template_env.get_template(
- 'mediagoblin/auth/register_success.html')
- return Response(
- template.render(
- {'request': request}))
+ return render_to_response(
+ request,
+ 'mediagoblin/auth/register.html',
+ {'register_form': register_form})
def login(request):
@@ -96,8 +84,7 @@ def login(request):
if request.POST.get('next'):
return exc.HTTPFound(location=request.POST['next'])
else:
- return exc.HTTPFound(
- location=request.urlgen("index"))
+ return redirect(request, "index")
else:
# Prevent detecting who's on this system by testing login
@@ -105,23 +92,19 @@ def login(request):
auth_lib.fake_login_attempt()
login_failed = True
- # render
- template = request.template_env.get_template(
- 'mediagoblin/auth/login.html')
- return Response(
- template.render(
- {'request': request,
- 'login_form': login_form,
- 'next': request.GET.get('next') or request.POST.get('next'),
- 'login_failed': login_failed}))
+ return render_to_response(
+ request,
+ 'mediagoblin/auth/login.html',
+ {'login_form': login_form,
+ 'next': request.GET.get('next') or request.POST.get('next'),
+ 'login_failed': login_failed})
def logout(request):
# Maybe deleting the user_id parameter would be enough?
request.session.delete()
- return exc.HTTPFound(
- location=request.urlgen("index"))
+ return redirect(request, "index")
def verify_email(request):
@@ -146,27 +129,11 @@ def verify_email(request):
else:
verification_successful = False
- template = request.template_env.get_template(
- 'mediagoblin/auth/verify_email.html')
- return Response(
- template.render(
- {'request': request,
- 'user': user,
- 'verification_successful': verification_successful}))
-
-def verify_email_notice(request):
- """
- Verify warning view.
-
- When the user tries to do some action that requires their account
- to be verified beforehand, this view is called upon!
- """
-
- template = request.template_env.get_template(
- 'mediagoblin/auth/verification_needed.html')
- return Response(
- template.render(
- {'request': request}))
+ return render_to_response(
+ request,
+ 'mediagoblin/auth/verify_email.html',
+ {'user': user,
+ 'verification_successful': verification_successful})
def resend_activation(request):
@@ -175,19 +142,9 @@ def resend_activation(request):
Resend the activation email.
"""
-
request.user['verification_key'] = unicode(uuid.uuid4())
request.user.save()
send_verification_email(request.user, request)
- return exc.HTTPFound(
- location=request.urlgen('mediagoblin.auth.resend_verification_success'))
-
-
-def resend_activation_success(request):
- template = request.template_env.get_template(
- 'mediagoblin/auth/resent_verification_email.html')
- return Response(
- template.render(
- {'request': request}))
+ return redirect(request, 'mediagoblin.auth.resend_verification_success')