from fastapi import Depends, HTTPException, status from fastapi.security import HTTPAuthorizationCredentials from sqlalchemy.orm import Session from utils import * from models import * from db import SessionLocal from app import security # Зависимость для получения сессии БД def get_db(): db = SessionLocal() try: yield db finally: db.close() # Зависимость для получения текущего пользователя def get_current_user( credentials: HTTPAuthorizationCredentials = Depends(security), db: Session = Depends(get_db) ): token = credentials.credentials payload = verify_token(token) if not payload: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid or expired token", headers={"WWW-Authenticate": "Bearer"}, ) user = db.query(User).filter(User.id == payload["user_id"]).first() if not user: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="User not found", headers={"WWW-Authenticate": "Bearer"}, ) return {"user_id": user.id, "username": user.username}