Example #1
0
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)
Example #2
0
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