/
Legit
/
Booking_app
Обзор
Документация
Войти
/
Legit
/
Booking_app
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
app/admin/auth.py
40 строк
1 KB
legit11
Initial commit
23 сен 2024, 22:53
23 сен 2024, 22:53
31d2337
Код
Авторство
О чём код?
from sqladmin.authentication import AuthenticationBackend from starlette.requests import Request from starlette.responses import RedirectResponse from app.users.auth import authenticate_user, create_access_token from app.users.dependencies import get_current_user class AdminAuth(AuthenticationBackend): async def login(self, request: Request) -> bool: form = await request.form() email, password = form["username"], form["password"] user = await authenticate_user(email, password) if user: access_token = create_access_token({"sub": str(user.id)}) request.session.update({"token": access_token}) return True async def logout(self, request: Request) -> bool: # Usually you'd want to just clear the session request.session.clear() return True async def authenticate(self, request: Request) -> bool: token = request.session.get("token") if not token: return RedirectResponse(request.url_for("admin:login"), status_code=302) user = await get_current_user(token) if not user: return RedirectResponse(request.url_for("admin:login"), status_code=302) return True authentication_backend = AdminAuth(secret_key="...")