/
FlysAt
/
DataFoundry
Обзор
Документация
Войти
/
FlysAt
/
DataFoundry
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
backend/src/api/auth.py
62 строки
2 KB
AlexanderShmygol
refactoring
07 апр 2026, 13:55
07 апр 2026, 13:55
5cff70c
Код
Авторство
О чём код?
from fastapi import APIRouter, Depends, status from sqlalchemy.ext.asyncio import AsyncSession from src.core.db import get_db from src.dependencies.auth import get_current_user, require_roles from src.models.user import User from src.schemas.auth import ( UserRegisterSchema, UserLoginSchema, RefreshTokenRequestSchema, TokenPairSchema, UserResponseSchema, ) from src.api.services.auth import AuthService router = APIRouter(prefix="/auth", tags=["auth"]) @router.post("/register", response_model=UserResponseSchema, status_code=status.HTTP_201_CREATED) async def register_user( payload: UserRegisterSchema, db: AsyncSession = Depends(get_db), ): service = AuthService(db) return await service.register_user(payload) @router.post("/login", response_model=TokenPairSchema) async def login_user( payload: UserLoginSchema, db: AsyncSession = Depends(get_db), ): service = AuthService(db) return await service.login_user(payload) @router.post("/refresh", response_model=TokenPairSchema) async def refresh_tokens( payload: RefreshTokenRequestSchema, db: AsyncSession = Depends(get_db), ): service = AuthService(db) return await service.refresh_tokens(payload) @router.get("/me", response_model=UserResponseSchema) async def get_me(current_user: User = Depends(get_current_user)): return current_user @router.get("/executor-only") async def executor_only_route( current_user: User = Depends(require_roles(["executor"])), ): return {"message": f"Hello executor {current_user.email}"} @router.get("/customer-or-executor") async def customer_or_executor_route( current_user: User = Depends(require_roles(["customer", "executor"])), ): return {"message": f"Hello privileged user {current_user.email}"}