SecretManagement.HashiCorp.HCP.Vault.Secrets.Extension/public/Test-SecretVault.ps1
function Test-SecretVault { [CmdletBinding()] param ( [string] $VaultName, [hashtable] $AdditionalParameters ) try { if ($null -eq $AdditionalParameters.OrganizationId -or $null -eq $AdditionalParameters.ProjectId -or $null -eq $AdditionalParameters.AppName) { Write-Error 'Register the vault with a HCP organization ID, HCP project ID and HCP Vault Secrets App name' } $script:authenticated = $false $accessToken = Get-Variable -Name ('SecretManagement_{0}_Vault_AccessToken' -f $VaultName) -Scope Script -ErrorAction SilentlyContinue if ($null -ne $accessToken) { $accessTokenDateTime = (Get-Variable -Name ('SecretManagement_{0}_Vault_AccessToken_DateTime' -f $VaultName) -Scope Script -ErrorAction SilentlyContinue).Value $accessTokenExpiryInSeconds = (Get-Variable -Name ('SecretManagement_{0}_Vault_AccessToken_ExpiryInSeconds' -f $VaultName) -Scope Script -ErrorAction SilentlyContinue).Value if ([DateTime]$accessTokenDateTime.AddSeconds($accessTokenExpiryInSeconds) -gt (Get-Date).AddMinutes(-1)) { $script:authenticated = $true } } if ($script:authenticated -eq $false) { $script:authenticated = Request-SecretVaultAccessToken -VaultName $VaultName -AdditionalParameters $AdditionalParameters } if ($script:authenticated -eq $false) { return $false } else { try { $uri = ('{0}/secrets/{1}/organizations/{2}/projects/{3}/apps/{4}' -f $script:HCPBaseUri, $script:HCPApiVersion, $AdditionalParameters.OrganizationId, $AdditionalParameters.ProjectId, $AdditionalParameters.AppName) $app = Invoke-RestMethod -Uri $uri -Method Get -Headers $script:authorizationHeader return $true } catch { Write-Error ('HashiCorp HCP Vault Secrets App {0} does not exist in the current project' -f $AdditionalParameters.AppName) return $false } } } catch { $false } } |