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.INVITE_COLLABORATOR.value.permission_key])), ) -> UserRoleResponse: doc = await user_management_service.assign_roles_to_user(req.user_id, req.role_ids) return UserRoleResponse(**doc.dict())