freeleaps-authentication/webapi/routes/role/create_or_update_role.py
2025-10-30 11:26:05 +08:00

50 lines
1.3 KiB
Python

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())