Public/Vaults/Set-DSVaultApplications.ps1
function Set-DSVaultApplications { <# .SYNOPSIS Sets the allowed applications for a given vault. .DESCRIPTION Sets which application have access to a given vault. If the "Update" flag is present and a supplied application name is already a member of the vault, it will remove this application. .EXAMPLE No update flag, no applications allowed Current applications allowed in vault: None Set-DSVaultApplications @("App1", "App2") -> Allowed applications: App1, App2 .EXAMPLE No update flag, some applications allowed Current applications allowed in vault: App1, App2 Set-DSVaultApplications @("App3") -> Allowed applications: App3 .EXAMPLE Update flag present, some applications allowed (Add another) Current applications allowed in vault: App1 Set-DSVaultApplications @("App2") -Update -> Allowed applications: App1, App2 .EXAMPLE Update flag present, some applications allowed (Remove an application) Current applications allowed in vault: App1, App2 Set-DSVaultApplications @("App2", "App3") -Update -> Allowed applications: App1, App3 #> [CmdletBinding()] PARAM ( [ValidateNotNullOrEmpty()] #Vault's ID to update [guid]$VaultID, #String array with application names (Not ID's) to allow in vault [string[]]$AllowedApplicationsList, #Used to know if we're creating a vault or updating a currently existing one [switch]$Update ) PROCESS { try { [object[]]$Applications = if ($Update) { (Invoke-DS -URI "$Script:DSBaseURI/api/security/repositories/$VaultID/applications" -Method "GET").Body.data } else { if (($res = Invoke-DS -URI "$Script:DSBaseURI/api/security/application/users/list" -Method "GET").isSuccess) { if ($res.Body.data.Length -eq 0) { throw "No applications were found." } $res.Body.data } else { throw "Error getting roles list." } } $ApplicationsListToSave = @() $Applications.GetEnumerator() | ForEach-Object { $ApplicationsListToSave += @{ description = if ($Update) { $_.description } else { $_.fullName } gravatarUrl = "" isAdministrator = if ($_.isAdministrator) { $true } else { $false } isMember = if ($Update) { if ($_.description -in $AllowedApplicationsList) { if ($_.isMember) { $false Write-Warning "Removed $($_.description) from allowed applications." } else { $true } } else { $_.isMember } } else { if ($_.fullName -in $AllowedApplicationsList) { $true } else { $false } } isRole = $false name = $_.name repositoryId = $VaultID userId = if ($Update) { $_.userId } else { $_.id } } } $RequestParams = @{ URI = "$Script:DSBaseURI/api/security/repositories/$VaultID/applications" Method = "PUT" Body = ConvertTo-Json $ApplicationsListToSave } $res = Invoke-DS @RequestParams -Verbose return $res } catch { Write-Error $_.Exception.Message } } } |