from ..errors.not_authenticated import NotAuthenticatedError from ..models.user import User from ..settings import get_settings from ..repositories.user_repository import UserRepository from typing import Annotated from fastapi import Depends, Request class AuthContext: """ Provides authentication context for the current request. """ def __init__( self, request: Request, ) -> None: if not get_settings().environment == "development": raise NotImplementedError("AuthProvider is only implemented for development environment.") self._authenticated_user = request.state.user @property def is_authenticated(self) -> bool: return bool(self._authenticated_user) @property def user(self) -> User: """ Returns the authenticated user. """ if not self._authenticated_user: raise NotAuthenticatedError() return self._authenticated_user