M15: synchronize contracts and acceptance
This commit is contained in:
@@ -13,6 +13,7 @@ from app.core.db import SessionLocal
|
||||
from app.core.security import SessionPayload, read_session_token
|
||||
from app.models.user import User
|
||||
from app.schemas import CurrentUser, Role
|
||||
from app.services.sessions import is_session_revoked
|
||||
|
||||
settings = get_settings()
|
||||
_VALID_ROLES = frozenset(Role.__args__) # type: ignore[attr-defined]
|
||||
@@ -29,7 +30,8 @@ def get_db() -> Generator[Session, None, None]:
|
||||
def get_current_user(request: Request, db: Session = Depends(get_db)) -> CurrentUser:
|
||||
token = request.cookies.get(settings.session_cookie_name)
|
||||
payload: SessionPayload | None = read_session_token(token) if token else None
|
||||
if payload is None or payload.role not in _VALID_ROLES:
|
||||
revoked = token is not None and is_session_revoked(db, token)
|
||||
if payload is None or payload.role not in _VALID_ROLES or revoked:
|
||||
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Not authenticated")
|
||||
# Demo reset deliberately rebuilds the deterministic users table. Retaining the
|
||||
# signed demo session until the reset endpoint clears its cookie keeps existing demo
|
||||
|
||||
Reference in New Issue
Block a user