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.py59
1 files changed, 42 insertions, 17 deletions
diff --git a/mediagoblin/auth/views.py b/mediagoblin/auth/views.py
index 2450023f..fb5db870 100644
--- a/mediagoblin/auth/views.py
+++ b/mediagoblin/auth/views.py
@@ -19,6 +19,7 @@ import uuid
from webob import exc
from mediagoblin import messages
+from mediagoblin import mg_globals
from mediagoblin.util import render_to_response, redirect
from mediagoblin.db.util import ObjectId
from mediagoblin.auth import lib as auth_lib
@@ -30,6 +31,14 @@ def register(request):
"""
Your classic registration view!
"""
+ # Redirects to indexpage if registrations are disabled
+ if not mg_globals.app_config["allow_registration"]:
+ messages.add_message(
+ request,
+ messages.WARNING,
+ ('Sorry, registration is disabled on this instance.'))
+ return redirect(request, "index")
+
register_form = auth_forms.RegistrationForm(request.POST)
if request.method == 'POST' and register_form.validate():
@@ -46,16 +55,25 @@ def register(request):
else:
# Create the user
- entry = request.db.User()
- entry['username'] = request.POST['username'].lower()
- entry['email'] = request.POST['email']
- entry['pw_hash'] = auth_lib.bcrypt_gen_password_hash(
+ user = request.db.User()
+ user['username'] = request.POST['username'].lower()
+ user['email'] = request.POST['email']
+ user['pw_hash'] = auth_lib.bcrypt_gen_password_hash(
request.POST['password'])
- entry.save(validate=True)
-
- send_verification_email(entry, request)
+ user.save(validate=True)
+
+ # log the user in
+ request.session['user_id'] = unicode(user['_id'])
+ request.session.save()
- return redirect(request, "mediagoblin.auth.register_success")
+ # send verification email
+ send_verification_email(user, request)
+
+ # redirect the user to their homepage... there will be a
+ # message waiting for them to verify their email
+ return redirect(
+ request, 'mediagoblin.user_pages.user_home',
+ user=user['username'])
return render_to_response(
request,
@@ -98,13 +116,14 @@ def login(request):
'mediagoblin/auth/login.html',
{'login_form': login_form,
'next': request.GET.get('next') or request.POST.get('next'),
- 'login_failed': login_failed})
+ 'login_failed': login_failed,
+ 'allow_registration': mg_globals.app_config["allow_registration"]})
def logout(request):
# Maybe deleting the user_id parameter would be enough?
request.session.delete()
-
+
return redirect(request, "index")
@@ -128,16 +147,16 @@ def verify_email(request):
user.save()
verification_successful = True
messages.add_message(
- request,
- messages.SUCCESS,
+ request,
+ messages.SUCCESS,
('Your email address has been verified. '
'You may now login, edit your profile, and submit images!'))
else:
verification_successful = False
- messages.add_message(request,
- messages.ERROR,
- 'The verification key or user id is incorrect')
-
+ messages.add_message(request,
+ messages.ERROR,
+ 'The verification key or user id is incorrect')
+
return render_to_response(
request,
'mediagoblin/user_pages/user.html',
@@ -156,4 +175,10 @@ def resend_activation(request):
send_verification_email(request.user, request)
- return redirect(request, 'mediagoblin.auth.resend_verification_success')
+ messages.add_message(
+ request,
+ messages.INFO,
+ 'Resent your verification email.')
+ return redirect(
+ request, 'mediagoblin.user_pages.user_home',
+ user=request.user['username'])