def login(): form = LoginForm(request.form) if form.button_login.data and form.validate(): user_name = form.login.data role_name = form.user_type.data user = None class_map = Person.get_class_map() if not role_name: for clazz in class_map.values(): user = user or db.session.query(clazz).filter(clazz.login == user_name).one_or_none() elif role_name in class_map.keys(): clazz = class_map[role_name] user = user or db.session.query(clazz).filter(clazz.login == user_name).one_or_none() if user is not None: password = form.password.data if password_checker(user_name, password): login_user(user) return redirect(request.args.get("next") or url_for('index')) else: form.password.errors.append("Неверный пароль") else: form.login.errors.append("Пользователя с таким учётным именем не существует") return render_template('login.html', form=form)
def load_user(user_name): if "@" not in user_name: return None role_name, ulogin = user_name.split("@", 1) class_map = Person.get_class_map() user = None if role_name in class_map.keys(): clazz = class_map[role_name] user = user or db.session.query(clazz).filter(clazz.login == ulogin).one_or_none() return user