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