18 lines
618 B
Python
18 lines
618 B
Python
from flask import jsonify, redirect, request
|
|||
|
|
from flask_login import LoginManager
|
||
|
|
|
||
|
|
|
||
|
|
def init_login_manager(app, login_url_builder, load_user, api_prefixes=("/api/",)):
|
||
|
|
login_manager = LoginManager()
|
||
|
|
login_manager.init_app(app)
|
||
|
|
login_manager.user_loader(load_user)
|
||
|
|
|
||
|
|
@login_manager.unauthorized_handler
|
||
|
|
def unauthorized():
|
||
|
|
# API clients get JSON instead of a redirect to the login page.
|
||
|
|
if request.path.startswith(tuple(api_prefixes)):
|
||
|
|
return jsonify({"error": "authentication required"}), 401
|
||
|
|
return redirect(login_url_builder(request))
|
||
|
|
|
||
|
|
return login_manager
|