24 lines
1.0 KiB
Python
24 lines
1.0 KiB
Python
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}")
|