from fastapi import APIRouter, Depends, HTTPException, Request from sqlmodel import Session from ..db.session import get_session from ..schemas.exposure_preferences import ExposurePreferences, ExposurePreferencesUpdate from ..services.exposure_preferences import get_exposure_preferences, update_exposure_preferences from ..services.user_access import authorize_request router = APIRouter(prefix="/api/settings/exposure") @router.get("", response_model=ExposurePreferences) def get_preferences(request: Request, session: Session = Depends(get_session)): authorize_request(request) return get_exposure_preferences(session) @router.patch("", response_model=ExposurePreferences) def patch_preferences(payload: ExposurePreferencesUpdate, request: Request, session: Session = Depends(get_session)): user = authorize_request(request) if user.role != "admin": raise HTTPException(403, "Only administrators may change exposure preferences") return update_exposure_preferences(session, payload, identity=f"{user.provider}:{user.subject}")