from datetime import datetime from fastapi import APIRouter, Depends from pydantic import BaseModel from typing import Optional, 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 CreateOrUpdateRoleRequest(BaseModel): role_key: str role_name: str role_level: int custom_role_id: Optional[str] = None role_description: Optional[str] = None class RoleResponse(BaseModel): id: str role_key: str role_name: str role_description: Optional[str] = None permission_ids: List[str] role_level: int created_at: datetime updated_at: datetime @router.post( "/create-or-update", response_model=RoleResponse, operation_id="create-or-update-role", summary="Create or Update Role", description="Create or update a role by id." ) async def create_or_update_permission( req: CreateOrUpdateRoleRequest, #_: bool = Depends(token_manager.has_all_permissions([DefaultPermissionEnum.CHANGE_PERMISSIONS.value.permission_key])) ) -> RoleResponse: doc = await role_service.create_or_update_role(req.role_key, req.role_name, req.role_level, req.custom_role_id, req.role_description) return RoleResponse(**doc.model_dump())