from typing import Optional from fastapi import Depends, HTTPException, status from fastapi.security import OAuth2PasswordBearer from sqlalchemy.ext.asyncio import AsyncSession from app.db.session import get_db from app.crud import user as crud_user from app.services.auth_service import auth_service from app.models.user import User oauth2_scheme = OAuth2PasswordBearer(tokenUrl="api/v1/auth/login") async def get_current_user( token: str = Depends(oauth2_scheme), db: AsyncSession = Depends(get_db) ) -> User: """Получить текущего пользователя из токена""" credentials_exception = HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="Could not validate credentials", headers={"WWW-Authenticate": "Bearer"}, ) payload = auth_service.verify_token(token) if payload is None: raise credentials_exception user_id: str = payload.get("sub") if user_id is None: raise credentials_exception user = await crud_user.get(db, user_id) if user is None: raise credentials_exception return user async def get_current_active_user( current_user: User = Depends(get_current_user) ) -> User: """Получить активного пользователя""" return current_user