Refactor the auth component init a bit
This commit is contained in:
parent
96db62fb35
commit
d8a18854cb
|
@ -4,7 +4,7 @@ from flask import Flask, render_template
|
||||||
from flask_login import LoginManager
|
from flask_login import LoginManager
|
||||||
|
|
||||||
from amanuensis.config import get, root
|
from amanuensis.config import get, root
|
||||||
from amanuensis.server.auth import get_bp as get_auth_bp
|
# from amanuensis.server.auth import get_bp as get_auth_bp
|
||||||
from amanuensis.server.home import get_bp as get_home_bp
|
from amanuensis.server.home import get_bp as get_home_bp
|
||||||
from amanuensis.server.helpers import register_custom_filters
|
from amanuensis.server.helpers import register_custom_filters
|
||||||
from amanuensis.server.lexicon import get_bp as get_lex_bp
|
from amanuensis.server.lexicon import get_bp as get_lex_bp
|
||||||
|
@ -29,7 +29,9 @@ login.login_view = 'auth.login'
|
||||||
login.anonymous_user = AnonymousUserModel
|
login.anonymous_user = AnonymousUserModel
|
||||||
|
|
||||||
# Blueprint inits
|
# Blueprint inits
|
||||||
auth_bp = get_auth_bp(login)
|
from amanuensis.server.auth import bp as auth_bp
|
||||||
|
from amanuensis.server.auth import login_manager as login_manager
|
||||||
|
login_manager.init_app(app)
|
||||||
app.register_blueprint(auth_bp)
|
app.register_blueprint(auth_bp)
|
||||||
|
|
||||||
home_bp = get_home_bp()
|
home_bp = get_home_bp()
|
||||||
|
|
|
@ -1,41 +1,43 @@
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from flask import Blueprint, render_template, redirect, url_for, flash
|
from flask import Blueprint, render_template, redirect, url_for, flash, current_app
|
||||||
from flask_login import login_user, logout_user, login_required
|
from flask_login import login_user, logout_user, login_required, LoginManager
|
||||||
|
|
||||||
from amanuensis.config import logger, json_rw
|
from amanuensis.config import logger, json_rw
|
||||||
from amanuensis.server.forms import LoginForm
|
from amanuensis.server.forms import LoginForm
|
||||||
from amanuensis.user import UserModel
|
from amanuensis.user import UserModel, AnonymousUserModel
|
||||||
|
|
||||||
def get_bp(login_manager):
|
# TODO refactor login init into a func that takes a root cdc
|
||||||
"""Create a blueprint for the auth functions"""
|
|
||||||
bp = Blueprint('auth', __name__, url_prefix='/auth')
|
|
||||||
|
|
||||||
@login_manager.user_loader
|
login_manager = LoginManager()
|
||||||
def load_user(uid):
|
login_manager.login_view = 'auth.login'
|
||||||
return UserModel.by(uid=str(uid))
|
login_manager.anonymous_user = AnonymousUserModel
|
||||||
|
|
||||||
@bp.route('/login/', methods=['GET', 'POST'])
|
bp = Blueprint('auth', __name__, url_prefix='/auth')
|
||||||
def login():
|
|
||||||
form = LoginForm()
|
|
||||||
if form.validate_on_submit():
|
|
||||||
username = form.username.data
|
|
||||||
u = UserModel.by(name=username)
|
|
||||||
if u is not None and u.check_password(form.password.data):
|
|
||||||
remember_me = form.remember.data
|
|
||||||
login_user(u, remember=remember_me)
|
|
||||||
with json_rw(u.config_path) as cfg:
|
|
||||||
cfg.last_login = int(time.time())
|
|
||||||
logger.info("Logged in user '{}' ({})".format(
|
|
||||||
u.username, u.uid))
|
|
||||||
return redirect(url_for('home.home'))
|
|
||||||
flash("Login not recognized")
|
|
||||||
return render_template('auth/login.html', form=form)
|
|
||||||
|
|
||||||
@bp.route("/logout/", methods=['GET'])
|
@login_manager.user_loader
|
||||||
@login_required
|
def load_user(uid):
|
||||||
def logout():
|
return UserModel.by(uid=str(uid))
|
||||||
logout_user()
|
|
||||||
return redirect(url_for('home.home'))
|
|
||||||
|
|
||||||
return bp
|
@bp.route('/login/', methods=['GET', 'POST'])
|
||||||
|
def login():
|
||||||
|
form = LoginForm()
|
||||||
|
if form.validate_on_submit():
|
||||||
|
username = form.username.data
|
||||||
|
u = UserModel.by(name=username)
|
||||||
|
if u is not None and u.check_password(form.password.data):
|
||||||
|
remember_me = form.remember.data
|
||||||
|
login_user(u, remember=remember_me)
|
||||||
|
with json_rw(u.config_path) as cfg:
|
||||||
|
cfg.last_login = int(time.time())
|
||||||
|
logger.info("Logged in user '{}' ({})".format(
|
||||||
|
u.username, u.uid))
|
||||||
|
return redirect(url_for('home.home'))
|
||||||
|
flash("Login not recognized")
|
||||||
|
return render_template('auth/login.html', form=form)
|
||||||
|
|
||||||
|
@bp.route("/logout/", methods=['GET'])
|
||||||
|
@login_required
|
||||||
|
def logout():
|
||||||
|
logout_user()
|
||||||
|
return redirect(url_for('home.home'))
|
||||||
|
|
Loading…
Reference in New Issue