summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2016-01-31 23:16:34 +0100
committerAlexander Sulfrian <alexander@sulfrian.net>2016-02-02 04:23:27 +0100
commitda538be78f3ee05ae1b7f47d1f32d9851468cc0e (patch)
tree6abc73be60f62bd5ac1195030c949d148bff0139
parenta77885a72ff5e50633fa14d8c735f955c0009f2a (diff)
downloadweb-da538be78f3ee05ae1b7f47d1f32d9851468cc0e.tar.gz
web-da538be78f3ee05ae1b7f47d1f32d9851468cc0e.tar.bz2
web-da538be78f3ee05ae1b7f47d1f32d9851468cc0e.zip
utils/login: Add create_login_manager
-rw-r--r--accounts/__init__.py16
-rw-r--r--accounts/utils/login.py20
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))