Spaces:
Runtime error
Runtime error
| from datetime import datetime | |
| from typing import Annotated | |
| from fastapi import Depends, Header | |
| from fastapi.security import HTTPAuthorizationCredentials, HTTPBearer | |
| from sqlalchemy.ext.asyncio import AsyncSession | |
| from sqlalchemy.orm.exc import NoResultFound | |
| from reworkd_platform.db.crud.user import UserCrud | |
| from reworkd_platform.db.dependencies import get_db_session | |
| from reworkd_platform.schemas.user import UserBase | |
| from reworkd_platform.web.api.http_responses import forbidden | |
| def user_crud( | |
| session: AsyncSession = Depends(get_db_session), | |
| ) -> UserCrud: | |
| return UserCrud(session) | |
| async def get_current_user( | |
| x_organization_id: Annotated[str | None, Header()] = None, | |
| bearer: HTTPAuthorizationCredentials = Depends(HTTPBearer()), | |
| crud: UserCrud = Depends(user_crud), | |
| ) -> UserBase: | |
| session_token = bearer.credentials | |
| try: | |
| session = await crud.get_user_session(session_token) | |
| except NoResultFound: | |
| raise forbidden("Invalid session token") | |
| if session.expires <= datetime.utcnow(): | |
| raise forbidden("Session token expired") | |
| return UserBase( | |
| id=session.user.id, | |
| name=session.user.name, | |
| email=session.user.email, | |
| image=session.user.image, | |
| ) | |