Skip to content

Commit

Permalink
New-FolderPermission - add support for multiple Folder IDs
Browse files Browse the repository at this point in the history
  • Loading branch information
wsmelton committed Jun 25, 2021
1 parent 948747b commit acf6bd3
Showing 1 changed file with 38 additions and 37 deletions.
75 changes: 38 additions & 37 deletions src/functions/folder-permissions/New-FolderPermission.ps1
Expand Up @@ -31,7 +31,7 @@ function New-FolderPermission {

# Folder ID
[Parameter(Mandatory, ValueFromPipeline)]
[int]
[int[]]
$FolderId,

# Group Id
Expand Down Expand Up @@ -70,46 +70,47 @@ function New-FolderPermission {
if ($tssNewParams.ContainsKey('TssSession') -and $TssSession.IsValidSession()) {
. $CheckVersion $TssSession '10.9.000000' $PSCmdlet.MyInvocation
if ($tssNewParams.ContainsKey('UserId') -or $tssNewParams.ContainsKey('GroupId')) {
$restResponse = $null
$uri = $TssSession.ApiUrl, 'folder-permissions' -join '/'
$invokeParams.Uri = $uri
$invokeParams.Method = 'POST'

$newBody = [ordered]@{}
if ($tssNewParams.ContainsKey('Force')) {
$newBody.Add('breakInheritance',$true)
} else {
$newBody.Add('breakInheritance',$false)
}
switch ($tssNewParams.Keys) {
'FolderId' { $newBody.Add('folderId', $FolderId) }
'GroupId' { $newBody.Add('groupId', $GroupId) }
'FolderAccessRoleName' { $newBody.Add('folderAccessRoleName', $FolderAccessRoleName) }
'UserId' { $newBody.Add('userId', $UserId) }
'SecretAccessRoleName' { $newBody.Add('secretAccessRoleName', $SecretAccessRoleName) }
}

$invokeParams.Body = $newBody | ConvertTo-Json
foreach ($folder in $FolderId) {
$restResponse = $null
$uri = $TssSession.ApiUrl, 'folder-permissions' -join '/'
$invokeParams.Uri = $uri
$invokeParams.Method = 'POST'

$newBody = [ordered]@{}
if ($tssNewParams.ContainsKey('Force')) {
$newBody.Add('breakInheritance',$true)
} else {
$newBody.Add('breakInheritance',$false)
}
switch ($tssNewParams.Keys) {
'FolderId' { $newBody.Add('folderId', $folder) }
'GroupId' { $newBody.Add('groupId', $GroupId) }
'FolderAccessRoleName' { $newBody.Add('folderAccessRoleName', $FolderAccessRoleName) }
'UserId' { $newBody.Add('userId', $UserId) }
'SecretAccessRoleName' { $newBody.Add('secretAccessRoleName', $SecretAccessRoleName) }
}

Write-Verbose "$($invokeParams.Method) $uri with:`n $newBody"
if (-not $PSCmdlet.ShouldProcess("FolderID: $FolderId", "$($invokeParams.Method) $uri with $($invokeParams.Body)")) { return }
try {
$restResponse = . $InvokeApi @invokeParams
} catch {
Write-Warning "Issue creating Folder Permission on Folder [$FolderId]"
$err = $_
if ($err.ErrorDetails.Message) {
$errorMsg = $err.ErrorDetails.Message | ConvertFrom-Json
if ($errorMsg.Message -eq 'API_PermissionsAreInherited') {
Write-Error "Folder [$FolderId] has InheritPermissions enabled, use -Force parameter to break inheritance"
$invokeParams.Body = $newBody | ConvertTo-Json
Write-Verbose "$($invokeParams.Method) $uri with:`n $newBody"
if (-not $PSCmdlet.ShouldProcess("Folder ID: $folder", "$($invokeParams.Method) $uri with $($invokeParams.Body)")) { return }
try {
$restResponse = . $InvokeApi @invokeParams
} catch {
Write-Warning "Issue creating Folder Permission on Folder [$folder]"
$err = $_
if ($err.ErrorDetails.Message) {
$errorMsg = $err.ErrorDetails.Message | ConvertFrom-Json
if ($errorMsg.Message -eq 'API_PermissionsAreInherited') {
Write-Error "Folder [$folder] has InheritPermissions enabled, use -Force parameter to break inheritance"
}
} else {
. $ErrorHandling $err
}
} else {
. $ErrorHandling $err
}
}

if ($restResponse) {
[TssFolderPermissionSummary]$restResponse
if ($restResponse) {
[TssFolderPermissionSummary]$restResponse
}
}
} else {
Write-Error 'Please provide one of the following parameters: -GroupId or -UserId'
Expand Down

0 comments on commit acf6bd3

Please sign in to comment.