from fastapi import Depends, HTTPException from fastapi.security import OAuth2PasswordBearer from app.auth import decode_access_token from app.config import settings from motor.motor_asyncio import AsyncIOMotorClient from jose import ExpiredSignatureError oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/auth/login") client = AsyncIOMotorClient(settings.mongo_uri) db = client[settings.mongo_db_name] users = db["Users"] async def get_current_user(token: str = Depends(oauth2_scheme)): try: payload = decode_access_token(token) if not payload: raise HTTPException(status_code=401, detail="Invalid Token") except ExpiredSignatureError: raise HTTPException(status_code=401, detail="Token Expired") user = await users.find_one({"_id": payload["user_id"]}) if not user: raise HTTPException(status_code=404, detail="User Not Found") return user