diff options
author | Alexander Sulfrian <alexander@sulfrian.net> | 2016-01-31 23:16:34 +0100 |
---|---|---|
committer | Alexander Sulfrian <alexander@sulfrian.net> | 2016-02-02 04:23:27 +0100 |
commit | da538be78f3ee05ae1b7f47d1f32d9851468cc0e (patch) | |
tree | 6abc73be60f62bd5ac1195030c949d148bff0139 /accounts/utils | |
parent | a77885a72ff5e50633fa14d8c735f955c0009f2a (diff) | |
download | web-da538be78f3ee05ae1b7f47d1f32d9851468cc0e.tar.gz web-da538be78f3ee05ae1b7f47d1f32d9851468cc0e.tar.bz2 web-da538be78f3ee05ae1b7f47d1f32d9851468cc0e.zip |
utils/login: Add create_login_manager
Diffstat (limited to 'accounts/utils')
-rw-r--r-- | accounts/utils/login.py | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/accounts/utils/login.py b/accounts/utils/login.py index 9888e89..204296c 100644 --- a/accounts/utils/login.py +++ b/accounts/utils/login.py @@ -1,10 +1,28 @@ # -*- coding: utf-8 -*- -from flask.ext.login import current_user +from flask import current_app +from flask.ext.login import LoginManager, current_user from functools import wraps from werkzeug.exceptions import Forbidden from itsdangerous import base64_decode, base64_encode, compact_json +def create_login_manager(): + login_manager = LoginManager() + login_manager.login_message = 'Bitte einloggen' + login_manager.login_view = 'login.login' + + @login_manager.user_loader + def load_user(user_id): + try: + username, password = parse_userid(user_id) + return current_app.user_backend.auth(username, password) + except (current_app.user_backend.NoSuchUserError, + current_app.user_backend.InvalidPasswordError): + return None + + return login_manager + + def create_userid(username, password): userid = (username, password) return base64_encode(compact_json.dumps(userid)) |