canaille-globuzma/oidc_ldap_bridge/routes.py
Éloi Rivard 2eba625c39 Packaging
2020-08-31 11:23:50 +02:00

47 lines
1.2 KiB
Python

from flask import Blueprint, request, flash, url_for
from flask import render_template, redirect, jsonify
from flask_babel import gettext
from .forms import LoginForm
from .flaskutils import current_user
from .models import User
from .oauth2utils import require_oauth
bp = Blueprint(__name__, "home")
@bp.route("/")
def index():
if not current_user():
return redirect(url_for("oidc_ldap_bridge.routes.login"))
return redirect(url_for("oidc_ldap_bridge.tokens.tokens"))
@bp.route("/login", methods=("GET", "POST"))
def login():
form = LoginForm(request.form or None)
if request.form:
if not form.validate() or not User.authenticate(
form.login.data, form.password.data, True
):
flash(gettext("Login failed, please check your information"), "error")
return render_template("login.html", form=form)
return redirect(url_for("oidc_ldap_bridge.routes.index"))
return render_template("login.html", form=form)
@bp.route("/logout")
def logout():
if current_user():
current_user().logout()
return redirect("/")
@bp.route("/api/me")
@require_oauth("profile")
def api_me():
return jsonify(foo="bar")