canaille-globuzma/web/routes.py
2020-08-21 10:23:39 +02:00

48 lines
1.1 KiB
Python

from flask import Blueprint, request, session, 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("web.routes.login"))
return render_template("home.html")
@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("web.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")