""" Router endpoints for auth module Contains oauth registration Endpoints: """ from fastapi import APIRouter router = APIRouter( tags=["auth"], ) # oauth = OAuth() # oauth.register( # name="oidc", # server_metadata_url=auth_settings.OIDC_CONFIG, # client_id=auth_settings.CLIENT_ID, # client_secret=None, # code_challenge_method="S256", # client_kwargs={ # "code_challenge_method": "S256", # "scope": "openid profile email", # } # ) # @auth_router.get('/login') # async def login(request: Request): # redirect_uri = request.url_for('auth') # return await oauth.oidc.authorize_redirect(request, redirect_uri, code_challenge_method="S256") # # # @auth_router.get('/auth', include_in_schema=False) # async def auth(db: db_dependency, request: Request): # token = await oauth.oidc.authorize_access_token(request) # user = token.get("userinfo") # request.session["user"] = user # # try: # valid_user = OIDCUser(first_name=user["given_name"], last_name=user["family_name"], email=user["email"], oidc_id=user["sub"]) # except Exception as e: # print(e) # raise HTTPException(status_code=422, detail="Invalid or missing OIDC data") # # user_exists = db.query(exists().where(User.oidc_id == valid_user.oidc_id)).scalar() # # if not user_exists: # user_model = User(**valid_user.model_dump()) # db.add(user_model) # db.commit() # # return RedirectResponse(url="/") # # # @auth_router.get('/logout') # async def logout(request: Request): # request.session.pop('user', None) # return RedirectResponse(url='/')