diff options
Diffstat (limited to 'accounts/__init__.py')
-rw-r--r-- | accounts/__init__.py | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/accounts/__init__.py b/accounts/__init__.py index b11a143..ba5a670 100644 --- a/accounts/__init__.py +++ b/accounts/__init__.py @@ -1,10 +1,11 @@ # -*- coding: utf-8 -*- +from flask.ext.login import LoginManager import account from flask import Flask, g, session from utils import * - from utils.sessions import EncryptedSessionInterface +from utils.login import parse_userid from views import default, admin @@ -24,23 +25,21 @@ 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.init_app(app) + +@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 + @app.before_request def session_permanent(): if app.config.get('PERMANENT_SESSION_LIFETIME'): session.permanent = True else: session.permanent = False - -@app.before_request -def initialize_user(): - g.user = None - - if 'username' in session and 'password' in session: - username = ensure_utf8(session['username']) - password = ensure_utf8(session['password']) - try: - g.user = current_app.user_backend.auth(username, password) - except (current_app.user_backend.NoSuchUserError, - current_app.user_backend.InvalidPasswordError): - # we had crap in the session, delete it - logout_user() |