diff options
Diffstat (limited to 'mediagoblin/auth/views.py')
-rw-r--r-- | mediagoblin/auth/views.py | 135 |
1 files changed, 25 insertions, 110 deletions
diff --git a/mediagoblin/auth/views.py b/mediagoblin/auth/views.py index e9d75f8b..1d00f382 100644 --- a/mediagoblin/auth/views.py +++ b/mediagoblin/auth/views.py @@ -16,13 +16,13 @@ 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 -from mediagoblin.util import send_email -from mediagoblin import globals as mgoblin_globals +from mediagoblin.auth.lib import send_verification_email def register(request): @@ -52,46 +52,14 @@ def register(request): request.POST['password']) entry.save(validate=True) - email_template = request.template_env.get_template( - 'mediagoblin/auth/verification_email.txt') - - # TODO: There is no error handling in place - send_email( - mgoblin_globals.email_sender_address, - [entry['email']], - # TODO - # Due to the distributed nature of GNU MediaGoblin, we should - # find a way to send some additional information about the - # specific GNU MediaGoblin instance in the subject line. For - # example "GNU MediaGoblin @ Wandborg - [...]". - 'GNU MediaGoblin - Verify email', - email_template.render( - username=entry['username'], - verification_url='http://{host}{uri}?userid={userid}&token={verification_key}'.format( - host=request.host, - uri=request.urlgen('mediagoblin.auth.verify_email'), - userid=unicode(entry['_id']), - verification_key=entry['verification_key']))) - - # Redirect to register_success - return exc.HTTPFound( - location=request.urlgen("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})) + send_verification_email(entry, request) + return redirect(request, "mediagoblin.auth.register_success") -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): @@ -116,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 @@ -125,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): @@ -158,8 +121,6 @@ def verify_email(request): user = request.db.User.find_one( {'_id': ObjectId(unicode(request.GET['userid']))}) - verification_successful = bool - if user and user['verification_key'] == unicode(request.GET['token']): user['status'] = u'active' user['email_verified'] = True @@ -168,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): @@ -200,36 +145,6 @@ def resend_activation(request): request.user['verification_key'] = unicode(uuid.uuid4()) request.user.save() - # Copied shamelessly from the register view above. - - email_template = request.template_env.get_template( - 'mediagoblin/auth/verification_email.txt') - - # TODO: There is no error handling in place - send_email( - mgoblin_globals.email_sender_address, - [request.user['email']], - # TODO - # Due to the distributed nature of GNU MediaGoblin, we should - # find a way to send some additional information about the - # specific GNU MediaGoblin instance in the subject line. For - # example "GNU MediaGoblin @ Wandborg - [...]". - 'GNU MediaGoblin - Verify email', - email_template.render( - username=request.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(request.user['_id']), - verification_key=request.user['verification_key']))) - - 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})) + send_verification_email(request.user, request) + + return redirect(request, 'mediagoblin.auth.resend_verification_success') |