aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/auth/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'mediagoblin/auth/views.py')
-rw-r--r--mediagoblin/auth/views.py135
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')