UiPath / orchestrator-powershell

UiPath Orchestrator PowerShell cmdlet library
MIT License
106 stars 56 forks source link

Removing specific user roles from modern folders. #86

Closed martencassel closed 4 years ago

martencassel commented 4 years ago

We use Modern Folders in orchestrator 2019.10.15, where users have multiple roles for folders in the tenant. When we provision these roles we use the command "Add-UiPathFolderUserRoles " We would like to remove this role using a powershell command.

Example:

We have a user "John Doe" with two roles Business User + Business Runner to a modern folder named "TAX" in our tenant Default. We would like to remove the Business Runner role from the TAX folder, and keep the other role Business User.

martencassel commented 4 years ago

If i'm not mistaken, The web UI seems to use /odata/Folders/UiPath.Server.Configuration.OData.AssignUsers to achieve this.

martencassel commented 4 years ago

Oh Add-UiPathFolderUserRoles !

martencassel commented 4 years ago
Function Remove-UserFromFolderRole($Token, $UserEmail, $UiPathFolderName, $UiPathRoleName, $Tenant, $Env)
{
    $UiPathFolder = Get-UiPathFolder -AuthToken $Token -DisplayName $UiPathFolderName
    $FolderUsers  = Get-UiPathFolderUsers -Id $UiPathFolder.Id -AuthToken $Token
    $UiPathRole = Get-UiPathRole -AuthToken $Token -Name $UiPathRoleName
    $FolderUsers  = Get-UiPathFolderUsers -Id $UiPathFolder.Id -AuthToken $Token
    $FolderUser = $FolderUsers|Where { $_.UserEntity.UserName -eq $UserEmail }
    $NotRole = $FolderUser.Roles|Where { $_.Id -ne $UiPathRole.Id}
    $RolesToKeep = @()
    foreach($Role in $NotRole) {
        $RolesToKeep += $Role.Id
    }  
    Add-UiPathFolderUserRoles -Id $UiPathFolder.Id -AuthToken $Token -UserIds $UiPathUser.Id -RoleIds  $RolesToKeep
}
alinahornet commented 4 years ago

In order to remove a specific user role from a folder the same command Add-UiPathFolderUserRoles should be used with the roles to keep as parameter.The endpoint will remove the roles which were previously added and are not passed as parameter anymore.