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, 35 insertions, 2 deletions
diff --git a/app/views/user.py b/app/views/user.py
index a532c45..7f6f998 100644
--- a/app/views/user.py
+++ b/app/views/user.py
@@ -3,13 +3,46 @@ from . import Blueprint, flash, db, \
current_user, login_required, \
templated, redirect, request, url_for
-from ..forms import LoginForm, ChangePwdForm
-from ..login import login_user, logout_user, login_manager
+from .. import forms as F
+from ..login import login_user, logout_user, login_manager, User
import flask
mod = Blueprint('user', __name__)
+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)
+ self.user = None
+
+ def validate(self):
+ rv = super(F.Form, self).validate()
+ if not rv:
+ return False
+
+ user = User.get_by(name = self.username.data)
+ if user is None or not user.check_password(self.pwd.data):
+ return False
+
+ 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')])
+ confirm = F.PasswordField(u'Wdh. neues Passwort', F.req)
+
+ def validate_old(self, field):
+ if not current_user.check_password(field.data):
+ raise F.ValidationError(u"Falsches Passwort")
+
+ @property
+ def newpwd(self):
+ return self.new.data
+
@mod.route('/login', methods=('GET', 'POST'))
@templated
def login():