summaryrefslogtreecommitdiff
path: root/app/views/user.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/views/user.py')
-rw-r--r--app/views/user.py37
1 files changed, 24 insertions, 13 deletions
diff --git a/app/views/user.py b/app/views/user.py
index 7f6f998..6102d3b 100644
--- a/app/views/user.py
+++ b/app/views/user.py
@@ -10,16 +10,19 @@ import flask
mod = Blueprint('user', __name__)
+#
+# Forms
+#
class LoginForm(F.Form):
username = F.StringField(u'Username', F.req)
pwd = F.PasswordField(u'Passwort', F.req)
def __init__(self, *args, **kwargs):
- super(F.Form, self).__init__(*args, **kwargs)
+ super(LoginForm, self).__init__(*args, **kwargs)
self.user = None
def validate(self):
- rv = super(F.Form, self).validate()
+ rv = super(LoginForm, self).validate()
if not rv:
return False
@@ -30,6 +33,7 @@ class LoginForm(F.Form):
self.user = user
return True
+
class ChangePwdForm(F.Form):
old = F.PasswordField(u'Passwort', F.req)
new = F.PasswordField(u'Neues Passwort', F.req + [F.validators.EqualTo('confirm', u'Passwörter stimmen nicht überein')])
@@ -43,22 +47,33 @@ class ChangePwdForm(F.Form):
def newpwd(self):
return self.new.data
+#
+# Views
+#
@mod.route('/login', methods=('GET', 'POST'))
@templated
def login():
- form = LoginForm(flash=u"Login fehlgeschlagen!")
+ """Log the user in."""
+ form = LoginForm(flash=u"Login fehlgeschlagen!")
+ if form.validate_on_submit():
+ login_user(form.user)
+ # we explicitly need flask's variant as we redirect to a URI
+ return flask.redirect(request.args.get('next') or url_for('index'))
+ return { 'form': form }
- if form.validate_on_submit():
- login_user(form.user)
- # we explicitly need flask's variant as we redirect to a URI
- return flask.redirect(request.args.get('next') or url_for('index'))
- return { 'form': form }
+@mod.route('/logout')
+def logout():
+ """Log the user out."""
+ logout_user()
+ return redirect('.login')
+
@mod.route('/cpw', methods=('GET', 'POST'))
@login_required
@templated
def cpw():
+ """Change the password of the user."""
form = ChangePwdForm()
if form.validate_on_submit():
@@ -69,9 +84,5 @@ def cpw():
return { 'form': form }
-@mod.route('/logout')
-def logout():
- logout_user()
- return redirect('.login')
-
+# set this, so the user is redirected to the correct view, when not logged in
login_manager.login_view = 'user.login'