38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
from fastapi import APIRouter
|
|
from fastapi.params import Depends
|
|
from pydantic import BaseModel
|
|
from typing import List, Optional
|
|
|
|
from backend.models.permission.constants import DefaultPermissionEnum
|
|
from backend.services.user.user_management_service import UserManagementService
|
|
from common.token.token_manager import TokenManager
|
|
|
|
router = APIRouter()
|
|
token_manager = TokenManager()
|
|
user_management_service = UserManagementService()
|
|
|
|
|
|
class AssignRolesRequest(BaseModel):
|
|
user_id: str
|
|
role_ids: List[str]
|
|
|
|
|
|
class UserRoleResponse(BaseModel):
|
|
user_id: str
|
|
role_ids: Optional[List[str]]
|
|
|
|
|
|
@router.post(
|
|
"/assign-roles",
|
|
response_model=UserRoleResponse,
|
|
operation_id="assign-roles-to-user",
|
|
summary="Assign Roles to User",
|
|
description="Assign roles to a user by updating or creating the UserRoleDoc."
|
|
)
|
|
async def assign_roles_to_user(
|
|
req: AssignRolesRequest,
|
|
_: bool = Depends(token_manager.has_all_permissions([DefaultPermissionEnum.ASSIGN_ROLES.value.permission_key])),
|
|
) -> UserRoleResponse:
|
|
doc = await user_management_service.assign_roles_to_user(req.user_id, req.role_ids)
|
|
return UserRoleResponse(**doc.dict())
|