feat: add bulk_actions, info_pages, news to PERMISSION_REGISTRY
- bulk_actions: read, execute (was using users:edit) - info_pages: read, create, edit, delete (was using settings:read/edit) - news: read, create, edit, delete (was missing from registry entirely) Backend endpoints updated to use dedicated permissions instead of piggybacking on users:edit / settings:read.
This commit is contained in:
@@ -890,7 +890,7 @@ async def _execute_for_subscription(
|
||||
async def bulk_execute(
|
||||
request: BulkExecuteRequest,
|
||||
stream: bool = Query(default=False, description='Stream progress via SSE'),
|
||||
admin: User = Depends(require_permission('users:edit')),
|
||||
admin: User = Depends(require_permission('bulk_actions:execute')),
|
||||
db: AsyncSession = Depends(get_cabinet_db),
|
||||
):
|
||||
"""Execute a bulk action on multiple users or subscriptions.
|
||||
|
||||
@@ -34,7 +34,7 @@ router = APIRouter(prefix='/admin/info-pages', tags=['Cabinet Admin Info Pages']
|
||||
@router.get('', response_model=list[InfoPageListItem])
|
||||
async def list_all_info_pages(
|
||||
page_type: str | None = Query(None, pattern=r'^(page|faq)$'),
|
||||
admin: User = Depends(require_permission('settings:read')),
|
||||
admin: User = Depends(require_permission('info_pages:read')),
|
||||
db: AsyncSession = Depends(get_cabinet_db),
|
||||
) -> list[InfoPageListItem]:
|
||||
"""Get all info pages (admin view, includes inactive)."""
|
||||
@@ -54,7 +54,7 @@ async def list_all_info_pages(
|
||||
@router.get('/{page_id}', response_model=InfoPageResponse)
|
||||
async def get_info_page_detail(
|
||||
page_id: int,
|
||||
admin: User = Depends(require_permission('settings:read')),
|
||||
admin: User = Depends(require_permission('info_pages:read')),
|
||||
db: AsyncSession = Depends(get_cabinet_db),
|
||||
) -> InfoPageResponse:
|
||||
"""Get a single info page by ID (admin view)."""
|
||||
@@ -70,7 +70,7 @@ async def get_info_page_detail(
|
||||
@router.post('', response_model=InfoPageResponse, status_code=status.HTTP_201_CREATED)
|
||||
async def create_page(
|
||||
request: InfoPageCreateRequest,
|
||||
admin: User = Depends(require_permission('settings:edit')),
|
||||
admin: User = Depends(require_permission('info_pages:edit')),
|
||||
db: AsyncSession = Depends(get_cabinet_db),
|
||||
) -> InfoPageResponse:
|
||||
"""Create a new info page."""
|
||||
@@ -108,7 +108,7 @@ async def create_page(
|
||||
async def update_page(
|
||||
page_id: int,
|
||||
request: InfoPageUpdateRequest,
|
||||
admin: User = Depends(require_permission('settings:edit')),
|
||||
admin: User = Depends(require_permission('info_pages:edit')),
|
||||
db: AsyncSession = Depends(get_cabinet_db),
|
||||
) -> InfoPageResponse:
|
||||
"""Update an existing info page."""
|
||||
@@ -150,7 +150,7 @@ async def update_page(
|
||||
@router.delete('/{page_id}', status_code=status.HTTP_204_NO_CONTENT)
|
||||
async def remove_page(
|
||||
page_id: int,
|
||||
admin: User = Depends(require_permission('settings:edit')),
|
||||
admin: User = Depends(require_permission('info_pages:edit')),
|
||||
db: AsyncSession = Depends(get_cabinet_db),
|
||||
) -> None:
|
||||
"""Delete an info page."""
|
||||
@@ -174,7 +174,7 @@ async def remove_page(
|
||||
@router.post('/reorder', status_code=status.HTTP_204_NO_CONTENT)
|
||||
async def reorder_pages(
|
||||
request: ReorderRequest,
|
||||
admin: User = Depends(require_permission('settings:edit')),
|
||||
admin: User = Depends(require_permission('info_pages:edit')),
|
||||
db: AsyncSession = Depends(get_cabinet_db),
|
||||
) -> None:
|
||||
"""Bulk update sort_order for info pages."""
|
||||
@@ -191,7 +191,7 @@ async def reorder_pages(
|
||||
@router.post('/{page_id}/toggle-active', response_model=InfoPageResponse)
|
||||
async def toggle_active(
|
||||
page_id: int,
|
||||
admin: User = Depends(require_permission('settings:edit')),
|
||||
admin: User = Depends(require_permission('info_pages:edit')),
|
||||
db: AsyncSession = Depends(get_cabinet_db),
|
||||
) -> InfoPageResponse:
|
||||
"""Toggle the active status of an info page."""
|
||||
|
||||
@@ -77,6 +77,9 @@ PERMISSION_REGISTRY: dict[str, list[str]] = {
|
||||
'pinned_messages': ['read', 'create', 'edit', 'delete'],
|
||||
'landings': ['read', 'create', 'edit', 'delete'],
|
||||
'updates': ['read', 'manage'],
|
||||
'bulk_actions': ['read', 'execute'],
|
||||
'info_pages': ['read', 'create', 'edit', 'delete'],
|
||||
'news': ['read', 'create', 'edit', 'delete'],
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user