diff --git a/KeeperSdk/src/roles/roleUtils.ts b/KeeperSdk/src/roles/roleUtils.ts index ab8519cd..5e3c5037 100644 --- a/KeeperSdk/src/roles/roleUtils.ts +++ b/KeeperSdk/src/roles/roleUtils.ts @@ -182,10 +182,17 @@ export async function applyRoleEnforcements( continue } + const exists = roleHasEnforcement(roleId, enforcement, existingLinks) const response = await auth.executeRestCommand( - roleEnforcementAddCommand({ role_id: roleId, enforcement, value }) + exists + ? roleEnforcementUpdateCommand({ role_id: roleId, enforcement, value }) + : roleEnforcementAddCommand({ role_id: roleId, enforcement, value }) + ) + assertCommandSucceeded( + response, + `role_enforcement_${exists ? 'update' : 'add'} failed: ${enforcement}`, + ResultCodes.ROLE_ENFORCEMENT_FAILED ) - assertCommandSucceeded(response, `role_enforcement_add failed: ${enforcement}`, ResultCodes.ROLE_ENFORCEMENT_FAILED) } } diff --git a/keeperapi/src/commands.ts b/keeperapi/src/commands.ts index 4b9bff28..011c1d33 100644 --- a/keeperapi/src/commands.ts +++ b/keeperapi/src/commands.ts @@ -189,49 +189,6 @@ export const roleEnforcementAddCommand = ( request: RoleEnforcementAddRequest ): RestCommand => createCommand(request, 'role_enforcement_add') -export const roleEnforcementUpdateCommand = ( - request: RoleEnforcementAddRequest -): RestCommand => createCommand(request, 'role_enforcement_update') - -export type RoleEnforcementRemoveRequest = { - role_id: number - enforcement: string -} - -export const roleEnforcementRemoveCommand = ( - request: RoleEnforcementRemoveRequest -): RestCommand => createCommand(request, 'role_enforcement_remove') - -export type EnterpriseAllocateIdsRequest = { - number_requested: number -} - -export const enterpriseAllocateIdsCommand = ( - request: EnterpriseAllocateIdsRequest -): RestCommand => - createCommand(request, 'enterprise_allocate_ids') - -export type RoleEditRequest = { - role_id: number - node_id: number - encrypted_data: string - visible_below: boolean - new_user_inherit: boolean -} - -export const roleAddCommand = (request: RoleEditRequest): RestCommand => - createCommand(request, 'role_add') - -export const roleUpdateCommand = (request: RoleEditRequest): RestCommand => - createCommand(request, 'role_update') - -export type RoleDeleteRequest = { - role_id: number -} - -export const roleDeleteCommand = (request: RoleDeleteRequest): RestCommand => - createCommand(request, 'role_delete') - export type MoveRequest = { to_type: 'user_folder' | 'shared_folder' | 'shared_folder_folder' to_uid?: string