from datetime import datetime from fastapi import APIRouter, Depends from pydantic import BaseModel from typing import List from backend.services.permission.role_service import RoleService from common.token.token_manager import TokenManager router = APIRouter() token_manager = TokenManager() role_service = RoleService() class AssignPermissionsRequest(BaseModel): role_id: str permission_ids: List[str] class RoleResponse(BaseModel): id: str role_key: str role_name: str role_description: str permission_ids: List[str] role_level: int created_at: datetime updated_at: datetime @router.post( "/assign-permissions", response_model=RoleResponse, operation_id="assign-permissions-to-role", summary="Assign Permissions to Role", description="Assign permissions to a role by updating the permission_ids field." ) async def assign_permissions_to_role( req: AssignPermissionsRequest, #_: bool = Depends(token_manager.has_all_permissions([DefaultPermissionEnum.CHANGE_ROLES.value.permission_key])) ) -> RoleResponse: doc = await role_service.assign_permissions_to_role(req.role_id, req.permission_ids) return RoleResponse(**doc.model_dump())