26 lines
985 B
Python
26 lines
985 B
Python
"""Routes — authentification (login/logout pages)."""
|
|
from fastapi import APIRouter, Form, Request
|
|
from fastapi.responses import RedirectResponse, HTMLResponse
|
|
from app.auth import login_user, logout_user
|
|
from app.templates import templates
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.get("/login", response_class=HTMLResponse)
|
|
async def login_page(request: Request, error: str = ""):
|
|
return templates.TemplateResponse("login.html", {"request": request, "error": error})
|
|
|
|
|
|
@router.post("/login")
|
|
async def login(request: Request, username: str = Form(...), password: str = Form(...)):
|
|
if login_user(request, username, password):
|
|
return RedirectResponse(url="/", status_code=303)
|
|
return templates.TemplateResponse("login.html", {"request": request, "error": "اسم المستخدم أو كلمة المرور غير صحيحة"}, status_code=401)
|
|
|
|
|
|
@router.get("/logout")
|
|
async def logout(request: Request):
|
|
logout_user(request)
|
|
return RedirectResponse(url="/login")
|