from datetime import datetime from fastapi import APIRouter, Depends from pydantic import BaseModel from typing import Optional from backend.services.permission.permission_service import PermissionService from common.token.token_manager import TokenManager router = APIRouter() token_manager = TokenManager() permission_service = PermissionService() class CreateOrUpdatePermissionRequest(BaseModel): permission_key: str permission_name: str custom_permission_id: Optional[str] = None description: Optional[str] = None class PermissionResponse(BaseModel): id: str permission_key: str permission_name: str description: Optional[str] = None created_at: datetime updated_at: datetime @router.post( "/create-or-update", response_model=PermissionResponse, operation_id="create-or-update-permission", summary="Create or Update Permission", description="Create or update a permission by id." ) async def create_or_update_permission( req: CreateOrUpdatePermissionRequest, #_: bool = Depends(token_manager.has_all_permissions([DefaultPermissionEnum.CHANGE_PERMISSIONS.value.permission_key])) ) -> PermissionResponse: doc = await permission_service.create_or_update_permission(req.permission_key, req.permission_name, req.custom_permission_id, req.description) return PermissionResponse(**doc.model_dump())