Spaces:
Sleeping
Sleeping
File size: 907 Bytes
9953dc0 ae4fc51 9953dc0 ae4fc51 9953dc0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
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 |