Commit inicial - upload de todos os arquivos da pasta

This commit is contained in:
2026-07-24 15:51:10 -03:00
commit efa06def71
44 changed files with 3604 additions and 0 deletions
+45
View File
@@ -0,0 +1,45 @@
"""Rotas de login/logout."""
from __future__ import annotations
from fastapi import APIRouter, Form, Request
from starlette.responses import RedirectResponse
from .. import auth
from ..templating import flash, render
router = APIRouter()
@router.get("/login")
def login_form(request: Request):
if auth.current_user(request):
return RedirectResponse("/", status_code=303)
return render(request, "login.html", hide_nav=True)
@router.post("/login")
def login_submit(
request: Request,
username: str = Form(...),
password: str = Form(...),
csrf_token: str = Form(""),
):
if not auth.check_csrf(request, csrf_token):
flash(request, "Sessão expirada. Tente novamente.", "error")
return RedirectResponse("/login", status_code=303)
if auth.authenticate(username.strip(), password):
auth.login_session(request, username.strip())
flash(request, "Bem-vindo de volta.", "success")
return RedirectResponse("/", status_code=303)
flash(request, "Usuário ou senha inválidos.", "error")
return RedirectResponse("/login", status_code=303)
@router.post("/logout")
def logout(request: Request, csrf_token: str = Form("")):
if auth.check_csrf(request, csrf_token):
auth.logout_session(request)
return RedirectResponse("/login", status_code=303)