From da538be78f3ee05ae1b7f47d1f32d9851468cc0e Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Sun, 31 Jan 2016 23:16:34 +0100 Subject: utils/login: Add create_login_manager --- accounts/__init__.py | 16 ++-------------- accounts/utils/login.py | 20 +++++++++++++++++++- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/accounts/__init__.py b/accounts/__init__.py index a86974e..0eb202a 100644 --- a/accounts/__init__.py +++ b/accounts/__init__.py @@ -1,11 +1,10 @@ # -*- coding: utf-8 -*- from flask import Flask, g, session -from flask.ext.login import LoginManager from models import Service from utils import * from utils.sessions import EncryptedSessionInterface -from utils.login import parse_userid +from utils.login import create_login_manager from views import default, login, admin @@ -30,16 +29,5 @@ if app.config.get('USERNAME_BLACKLIST_FILE'): with open(app.config['USERNAME_BLACKLIST_FILE']) as f: app.username_blacklist = f.read().split('\n') -login_manager = LoginManager() +login_manager = create_login_manager() login_manager.init_app(app) -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 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)) -- cgit v1.2.3-1-g7c22