diff options
Diffstat (limited to 'accounts/utils/login.py')
-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)) |