canaille-globuzma/web/routes.py

49 lines
1.1 KiB
Python
Raw Normal View History

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():
return redirect(url_for("web.routes.login"))
return render_template("home.html")
@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-19 14:20:57 +00:00
return redirect(url_for("web.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("/")
2020-08-14 11:18:08 +00:00
2020-08-16 17:39:14 +00:00
@bp.route("/api/me")
@require_oauth("profile")
2020-08-14 11:18:08 +00:00
def api_me():
2020-08-14 13:26:14 +00:00
return jsonify(foo="bar")