2020-08-26 15:23:53 +00:00
|
|
|
from flask import Blueprint, request, flash, url_for
|
2020-08-14 11:18:08 +00:00
|
|
|
from flask import render_template, redirect, jsonify
|
2020-08-19 14:20:57 +00:00
|
|
|
from flask_babel import gettext
|
|
|
|
|
|
|
|
from .forms import LoginForm
|
|
|
|
from .flaskutils import current_user
|
|
|
|
from .models import User
|
2020-08-17 15:49:49 +00:00
|
|
|
from .oauth2utils import require_oauth
|
2020-08-14 11:18:08 +00:00
|
|
|
|
|
|
|
|
2020-08-16 17:39:14 +00:00
|
|
|
bp = Blueprint(__name__, "home")
|
2020-08-14 11:18:08 +00:00
|
|
|
|
|
|
|
|
2020-08-19 14:20:57 +00:00
|
|
|
@bp.route("/")
|
|
|
|
def index():
|
|
|
|
if not current_user():
|
2020-08-31 09:23:50 +00:00
|
|
|
return redirect(url_for("oidc_ldap_bridge.routes.login"))
|
|
|
|
return redirect(url_for("oidc_ldap_bridge.tokens.tokens"))
|
2020-08-19 14:20:57 +00:00
|
|
|
|
|
|
|
|
|
|
|
@bp.route("/login", methods=("GET", "POST"))
|
|
|
|
def login():
|
|
|
|
form = LoginForm(request.form or None)
|
2020-08-14 13:26:14 +00:00
|
|
|
|
2020-08-19 14:20:57 +00:00
|
|
|
if request.form:
|
2020-08-21 08:23:39 +00:00
|
|
|
if not form.validate() or not User.authenticate(
|
|
|
|
form.login.data, form.password.data, True
|
|
|
|
):
|
2020-08-19 14:20:57 +00:00
|
|
|
flash(gettext("Login failed, please check your information"), "error")
|
|
|
|
return render_template("login.html", form=form)
|
2020-08-17 07:45:35 +00:00
|
|
|
|
2020-08-31 09:23:50 +00:00
|
|
|
return redirect(url_for("oidc_ldap_bridge.routes.index"))
|
2020-08-17 07:45:35 +00:00
|
|
|
|
2020-08-19 14:20:57 +00:00
|
|
|
return render_template("login.html", form=form)
|
2020-08-14 11:18:08 +00:00
|
|
|
|
2020-08-16 17:39:14 +00:00
|
|
|
|
|
|
|
@bp.route("/logout")
|
2020-08-14 13:26:14 +00:00
|
|
|
def logout():
|
2020-08-21 08:23:39 +00:00
|
|
|
if current_user():
|
|
|
|
current_user().logout()
|
2020-08-16 17:39:14 +00:00
|
|
|
return redirect("/")
|