Private/Get-GuacUserPermissions.ps1
|
#Requires -Version 5.1 function Get-GuacUserPermissions { <# .SYNOPSIS Appends permission sets to a user object. .DESCRIPTION Fetches the directly-granted permission set (GET users/{id}/permissions, PermissionSetResource.getPermissions) and/or the effective permission set (GET users/{id}/effectivePermissions, UserResource.getEffectivePermissions) for a user and copies the result onto a copy of the user object as the "permissions" / "effectivePermissions" properties. The input user object is not mutated; a new [PSCustomObject] is returned. If a switch is not set, the corresponding property is not added. A $null user yields $null. Reference (Apache Guacamole 1.6.0): - guacamole/src/main/java/org/apache/guacamole/rest/user/UserResource.java - guacamole/src/main/java/org/apache/guacamole/rest/permission/PermissionSetResource.java (getPermissions) - guacamole/src/main/java/org/apache/guacamole/rest/permission/APIPermissionSet.java This function is private to the N2C.GuacAdmin module. #> [CmdletBinding()] [OutputType([PSCustomObject])] param ( [Parameter(Mandatory = $false)] [AllowNull()] [object] $User, [Parameter(Mandatory = $true)] [hashtable] $Context, [Parameter(Mandatory = $false)] [switch] $Direct, [Parameter(Mandatory = $false)] [switch] $Effective ) if ($null -eq $User) { return $null } if (-not $Direct -and -not $Effective) { return $User } $identifier = Get-GuacIdentifier -Object $User $props = ConvertTo-GuacEntityBody -Object $User $server = [string]$Context['Server'] $token = [string]$Context['Token'] $dataSource = [string]$Context['DataSource'] if ($Direct) { $path = Resolve-GuacContextUrl -DataSource $dataSource -Collection 'users' -Id $identifier -SubPath 'permissions' $props['permissions'] = Invoke-GuacRest -Server $server -Token $token -Method GET -Path $path } if ($Effective) { $path = Resolve-GuacContextUrl -DataSource $dataSource -Collection 'users' -Id $identifier -SubPath 'effectivePermissions' $props['effectivePermissions'] = Invoke-GuacRest -Server $server -Token $token -Method GET -Path $path } return [PSCustomObject]$props } |