Spaces:
Runtime error
Runtime error
| from typing import Optional | |
| from fastapi.openapi.models import OpenIdConnect as OpenIdConnectModel | |
| from fastapi.security.base import SecurityBase | |
| from starlette.exceptions import HTTPException | |
| from starlette.requests import Request | |
| from starlette.status import HTTP_403_FORBIDDEN | |
| class OpenIdConnect(SecurityBase): | |
| def __init__( | |
| self, | |
| *, | |
| openIdConnectUrl: str, | |
| scheme_name: Optional[str] = None, | |
| description: Optional[str] = None, | |
| auto_error: bool = True, | |
| ): | |
| self.model = OpenIdConnectModel( | |
| openIdConnectUrl=openIdConnectUrl, description=description | |
| ) | |
| self.scheme_name = scheme_name or self.__class__.__name__ | |
| self.auto_error = auto_error | |
| async def __call__(self, request: Request) -> Optional[str]: | |
| authorization = request.headers.get("Authorization") | |
| if not authorization: | |
| if self.auto_error: | |
| raise HTTPException( | |
| status_code=HTTP_403_FORBIDDEN, detail="Not authenticated" | |
| ) | |
| else: | |
| return None | |
| return authorization | |