Spaces:
Sleeping
Sleeping
| from typing import Annotated | |
| from fastapi import Depends | |
| from fastapi.security import HTTPAuthorizationCredentials, HTTPBearer | |
| from fastapi.responses import JSONResponse | |
| from src.apis.providers.jwt_provider import jwt_provider as jwt | |
| from src.apis.models.user_models import get_user | |
| from src.config.mongo import UserCRUD | |
| from bson import ObjectId | |
| from jose import JWTError | |
| from src.utils.logger import logger | |
| security = HTTPBearer() | |
| async def get_current_user( | |
| credentials: Annotated[HTTPAuthorizationCredentials, Depends(security)] | |
| ): | |
| try: | |
| token = credentials.credentials | |
| if not token: | |
| return JSONResponse( | |
| content={"msg": "Authentication failed"}, status_code=401 | |
| ) | |
| payload = jwt.decrypt(token) | |
| user_id: str = payload["id"] | |
| if not user_id: | |
| return JSONResponse( | |
| content={"msg": "Authentication failed"}, status_code=401 | |
| ) | |
| user = await UserCRUD.read_one({"_id": ObjectId(user_id)}) | |
| if not user: | |
| return JSONResponse( | |
| content={"msg": "Authentication failed"}, status_code=401 | |
| ) | |
| return get_user(user) | |
| except JWTError: | |
| return JSONResponse(content={"msg": "Authentication failed"}, status_code=401) | |