/
tsps
/
core
Обзор
Документация
Войти
/
tsps
/
core
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
app/api/admin/auth.py
44 строки
1 KB
Василий Петров
Аутентификация в ЛК с разделением с админкой
14 мар 2026, 14:37
14 мар 2026, 14:37
3d80156
Код
Авторство
О чём код?
from fastapi import APIRouter, HTTPException, status, Form, Depends from sqlalchemy.orm import Session from app.database import get_db from app.models.admin import Admin from app.core.security import create_token, revoke_token, get_token_from_header router = APIRouter(tags=["admin", "auth"]) @router.post("/login") def login( email: str = Form(...), password: str = Form(...), db: Session = Depends(get_db) ): admin = db.query(Admin).filter(Admin.email == email).first() if not admin or not admin.verify_password(password): raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="Неверный логин или пароль" ) token = create_token(admin.id, owner_type="admin") # создаём токен с привязкой к admin.id return { "access_token": token, "token_type": "bearer", "admin": { "email": admin.email, "first_name": admin.first_name, "last_name": admin.last_name, } } @router.post("/logout") def logout(token: str = Depends(get_token_from_header)): if revoke_token(token): return {"message": "Выход выполнен успешно"} else: raise HTTPException( status_code=401, detail="Токен недействителен или уже удалён" )