from datetime import datetime from typing import Annotated from fastapi import APIRouter, Depends, HTTPException, status from fastapi.security import OAuth2PasswordBearer from src.neo_neo_todo.models.member import Member router = APIRouter( prefix="/members", tags=["members"], ) oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token") def fake_decode_token(_): return Member( id=1, email="fake@token.com", password_hash="asdfasdffqwerqwe!@#09098@%)(*)", created=datetime.now(), email_verified=None, ) async def get_current_member(token: Annotated[str, Depends(oauth2_scheme)]): member = fake_decode_token(token) if not member: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid authentication credentials", headers={"WWW-Authenticate": "Bearer"}, ) return member @router.get("/me") async def read_users_me(current_user: Annotated[Member, Depends(get_current_member)]): return current_user