from fastapi import Cookie, Depends, HTTPException, status from fastapi.security import OAuth2PasswordBearer from module.database import Database from module.models.user import User, UserUpdate from .jwt import verify_token oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/api/v1/auth/login") active_user = [] async def get_current_user(token: str = Cookie(None)): if not token: raise UNAUTHORIZED payload = verify_token(token) if not payload: raise UNAUTHORIZED username = payload.get("sub") if not username: raise UNAUTHORIZED if username not in active_user: raise UNAUTHORIZED return username async def get_token_data(token: str = Depends(oauth2_scheme)): payload = verify_token(token) if not payload: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="invalid token" ) return payload async def update_user_info(user_data: UserUpdate, current_user): try: async with Database() as db: await db.user.update_user(current_user, user_data) return True except Exception as e: raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=str(e)) async def auth_user(user: User): async with Database() as db: resp = await db.user.auth_user(user) if resp.status: active_user.append(user.username) return resp UNAUTHORIZED = HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="Unauthorized" )