public/Register-DevolutionsHubSecretVault.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55

function Register-DevolutionsHubSecretVault
{
    [CmdletBinding()]
    param(
        [string] $Name,
        [string] $Url,
        [string] $ApplicationKey,
        [string] $ApplicationSecret,
        [string] $Vault
    )

    $PSHubContext = [Devolutions.Hub.PowerShell.Entities.PowerShell.PSHubContext]@{
        ApplicationKey = $ApplicationKey;
        ApplicationSecret = $ApplicationSecret;
        Url = $Url;
    }

    $context = Connect-HubAccount -PSHubContext $PSHubContext 

    if (-not $context) {
        Write-Error "Hub credentials are invalid"
        return
    }

    Write-Verbose "Parsing VaultId" -Verbose:$verboseEnabled
    try {
        $vaultId = [System.Guid]::Parse($Vault)
        Write-Verbose "$vaultId" -Verbose:$verboseEnabled
    }
    catch {
        Write-Verbose "VaultId is not a valid GUID. Looking for Vault with name: $Vault" -Verbose:$verboseEnabled

        foreach ($hubVault in Get-HubVault) {
            if ($hubVault.Name -eq $Vault) {
                $vaultId = $hubVault.Id 
                break;
            }
        }
    }
    
    $ModuleName = 'SecretManagement.DevolutionsHub'

    Register-SecretVault -ModuleName $ModuleName -Name $Name -VaultParameters @{
        Url = $Url
        ApplicationKey = $ApplicationKey
        ApplicationSecret = $ApplicationSecret
        VaultId = $vaultId
    }

    if (-not (Get-SecretVault -Name $name)) {
        throw 'SecretVault could not be registered properly'
    }
}