From b36ec721ab97b80b1d070426c6f3f09b62ac5c7e Mon Sep 17 00:00:00 2001 From: René 'Necoro' Neumann Date: Fri, 1 Nov 2013 14:19:07 +0100 Subject: Some reorganization --- app/views/user.py | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) (limited to 'app/views/user.py') 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(): -- cgit v1.2.3-54-g00ecf