43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
from fastapi import APIRouter, Depends
|
|
from auth.models import TokenPayload
|
|
from auth.dependencies import require_permission, require_roles
|
|
from auth.models import Role
|
|
from settings.models import MelodySettings, MelodySettingsUpdate
|
|
from settings.public_features_models import PublicFeaturesSettings, PublicFeaturesSettingsUpdate
|
|
from settings import service
|
|
from settings import public_features_service
|
|
|
|
router = APIRouter(prefix="/api/settings", tags=["settings"])
|
|
|
|
|
|
@router.get("/melody", response_model=MelodySettings)
|
|
async def get_melody_settings(
|
|
_user: TokenPayload = Depends(require_permission("melodies", "view")),
|
|
):
|
|
return service.get_melody_settings()
|
|
|
|
|
|
@router.put("/melody", response_model=MelodySettings)
|
|
async def update_melody_settings(
|
|
body: MelodySettingsUpdate,
|
|
_user: TokenPayload = Depends(require_permission("melodies", "edit")),
|
|
):
|
|
return service.update_melody_settings(body)
|
|
|
|
|
|
# ── Public Features Settings (sysadmin / admin only) ─────────────────────────
|
|
|
|
@router.get("/public-features", response_model=PublicFeaturesSettings)
|
|
async def get_public_features(
|
|
_user: TokenPayload = Depends(require_roles(Role.sysadmin, Role.admin)),
|
|
):
|
|
return public_features_service.get_public_features()
|
|
|
|
|
|
@router.put("/public-features", response_model=PublicFeaturesSettings)
|
|
async def update_public_features(
|
|
body: PublicFeaturesSettingsUpdate,
|
|
_user: TokenPayload = Depends(require_roles(Role.sysadmin, Role.admin)),
|
|
):
|
|
return public_features_service.update_public_features(body)
|