haldis/app/login.py

40 lines
1 KiB
Python
Raw Permalink Normal View History

2019-09-10 13:17:35 +00:00
"Script for everything related to logging in and out"
2019-09-07 23:58:21 +00:00
from flask import Blueprint, abort, redirect, session, url_for
from flask_login import current_user, logout_user
2019-09-07 23:58:21 +00:00
from werkzeug.wrappers import Response
2015-03-31 18:15:22 +00:00
from models import User
from zeus import zeus_login
2019-09-05 01:33:29 +00:00
auth_bp = Blueprint("auth_bp", __name__)
2015-03-31 18:15:22 +00:00
2019-09-07 23:58:21 +00:00
def init_login(app) -> None:
2019-09-10 13:17:35 +00:00
"Initialize the login"
# pylint: disable=W0612
@app.login_manager.user_loader
2019-09-07 23:58:21 +00:00
def load_user(userid) -> User:
2019-09-10 13:17:35 +00:00
"Load the user"
return User.query.filter_by(id=userid).first()
2015-03-31 18:15:22 +00:00
2019-09-05 01:33:29 +00:00
@auth_bp.route("/login")
2015-03-31 18:15:22 +00:00
def login():
2019-09-10 13:17:35 +00:00
"Function to handle a user trying to log in"
2015-03-31 18:15:22 +00:00
return zeus_login()
2019-09-05 01:33:29 +00:00
@auth_bp.route("/logout")
2019-09-07 23:58:21 +00:00
def logout() -> Response:
2019-09-10 13:17:35 +00:00
"Function to handle a user trying to log out"
2019-09-05 01:33:29 +00:00
if "zeus_token" in session:
session.pop("zeus_token", None)
2015-03-31 18:15:22 +00:00
logout_user()
2019-09-05 01:33:29 +00:00
return redirect(url_for("general_bp.home"))
2015-03-31 18:15:22 +00:00
2019-09-07 23:58:21 +00:00
def before_request() -> None:
2019-09-10 13:17:35 +00:00
"Function for what has to be done before a request"
2015-03-31 18:15:22 +00:00
if current_user.is_anonymous() or not current_user.is_allowed():
abort(401)