From 2a3ad5657f75fa9de0bf57928c524f4f7a0a055c Mon Sep 17 00:00:00 2001 From: Mathieu Virbel Date: Fri, 18 Aug 2023 12:02:16 +0200 Subject: [PATCH] server: add /v1/me to get current user information sub, email and email_verified --- server/reflector/app.py | 17 ++++++++++------- server/reflector/views/user.py | 20 ++++++++++++++++++++ 2 files changed, 30 insertions(+), 7 deletions(-) create mode 100644 server/reflector/views/user.py diff --git a/server/reflector/app.py b/server/reflector/app.py index fa148240..14d55d7a 100644 --- a/server/reflector/app.py +++ b/server/reflector/app.py @@ -1,15 +1,17 @@ +from contextlib import asynccontextmanager + +import reflector.auth # noqa +import reflector.db # noqa from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware -from fastapi_pagination import add_pagination from fastapi.routing import APIRoute -import reflector.db # noqa -import reflector.auth # noqa -from reflector.views.rtc_offer import router as rtc_offer_router -from reflector.views.transcripts import router as transcripts_router -from reflector.events import subscribers_startup, subscribers_shutdown +from fastapi_pagination import add_pagination +from reflector.events import subscribers_shutdown, subscribers_startup from reflector.logger import logger from reflector.settings import settings -from contextlib import asynccontextmanager +from reflector.views.rtc_offer import router as rtc_offer_router +from reflector.views.transcripts import router as transcripts_router +from reflector.views.user import router as user_router try: import sentry_sdk @@ -50,6 +52,7 @@ app.add_middleware( # register views app.include_router(rtc_offer_router) app.include_router(transcripts_router, prefix="/v1") +app.include_router(user_router, prefix="/v1") add_pagination(app) diff --git a/server/reflector/views/user.py b/server/reflector/views/user.py new file mode 100644 index 00000000..4952c471 --- /dev/null +++ b/server/reflector/views/user.py @@ -0,0 +1,20 @@ +from typing import Annotated, Optional + +import reflector.auth as auth +from fastapi import APIRouter, Depends +from pydantic import BaseModel + +router = APIRouter() + + +class UserInfo(BaseModel): + sub: str + email: Optional[str] + email_verified: Optional[bool] + + +@router.get("/me") +async def user_me( + user: Annotated[Optional[auth.UserInfo], Depends(auth.current_user_optional)], +) -> UserInfo | None: + return user