43 lines
1.0 KiB
Python
43 lines
1.0 KiB
Python
|
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
|