36 lines
908 B
Python
36 lines
908 B
Python
from fastapi import Request
|
|
|
|
from ..errors.not_authenticated import NotAuthenticatedError
|
|
from ..models.user import User
|
|
from ..settings import get_settings
|
|
|
|
|
|
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
|