Also set login_failed in case of form errors
authorSebastian Spaeth <Sebastian@SSpaeth.de>
Mon, 21 Jan 2013 15:27:19 +0000 (16:27 +0100)
committerSebastian Spaeth <Sebastian@SSpaeth.de>
Mon, 21 Jan 2013 16:15:39 +0000 (17:15 +0100)
If we send a POST request to the login page which contained form errors
(e.g. a too short password), the variable "login_failed" was not set to
true. This condition was tested by the test suite however, so we should
make sure that login_failed is set even if the form failed to validate.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
mediagoblin/auth/views.py

index 8c2a95ed7e1d6ec17840dd9cad9ddaa0a4130be3..d8ad7b51e0977258e07f5afaa544785a0aca44d4 100644 (file)
@@ -112,20 +112,21 @@ def login(request):
 
     login_failed = False
 
-    if request.method == 'POST' and login_form.validate():
-        user = User.query.filter_by(username=login_form.data['username']).first()
+    if request.method == 'POST':
+        if login_form.validate():
+            user = User.query.filter_by(username=login_form.data['username']).first()
 
-        if user and user.check_login(request.form['password']):
-            # set up login in session
-            request.session['user_id'] = unicode(user.id)
-            request.session.save()
+            if user and user.check_login(request.form['password']):
+                # set up login in session
+                request.session['user_id'] = unicode(user.id)
+                request.session.save()
 
-            if request.form.get('next'):
-                return redirect(request, location=request.form['next'])
-            else:
-                return redirect(request, "index")
+                if request.form.get('next'):
+                    return redirect(request, location=request.form['next'])
+                else:
+                    return redirect(request, "index")
 
-        else:
+            # Some failure during login occured if we are here!
             # Prevent detecting who's on this system by testing login
             # attempt timings
             auth_lib.fake_login_attempt()