41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
from datetime import datetime
|
|
|
|
from fastapi import APIRouter, Depends
|
|
from pydantic import BaseModel
|
|
from typing import List
|
|
|
|
from backend.models.permission.constants import DefaultPermissionEnum
|
|
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.INVITE_COLLABORATOR.value.permission_key]))
|
|
) -> RoleResponse:
|
|
doc = await role_service.assign_permissions_to_role(req.role_id, req.permission_ids)
|
|
return RoleResponse(**doc.dict()) |