20 lines
598 B
Python
20 lines
598 B
Python
"""Authentification admin — session cookie simple."""
|
|
|
|
from functools import wraps
|
|
from fastapi import Request
|
|
from fastapi.responses import RedirectResponse
|
|
|
|
|
|
def is_authenticated(request: Request) -> bool:
|
|
return request.session.get("authenticated") is True
|
|
|
|
|
|
def require_auth(func):
|
|
"""Décorateur pour les routes admin."""
|
|
@wraps(func)
|
|
async def wrapper(request: Request, *args, **kwargs):
|
|
if not is_authenticated(request):
|
|
return RedirectResponse(url="/admin/login", status_code=302)
|
|
return await func(request, *args, **kwargs)
|
|
return wrapper
|