Logonme.Management.PowerShell.psm1

function Get-LogonmeVersionFromModulePath {
    $v = (Split-Path -Path $PSScriptRoot -Leaf)
    try {
        $version = [Version]::Parse($v)
        return [string]$version
    }
    catch {
        $defaultVersion = "latest"
        Write-Host "Failed to parse version string '$v', defaulting to '$defaultVersion'" -ForegroundColor Yellow
        return $defaultVersion
    }
}

$module = $MyInvocation.MyCommand
$env:LogonmeModuleFile = (Join-Path -Path $PSScriptRoot -ChildPath $module.Name)
$env:LogonmeVersion = (Get-LogonmeVersionFromModulePath)

Write-Host " _ " -ForegroundColor Red
Write-Host "| | " -ForegroundColor Red
Write-Host "| | ___ __ _ ___ _ __ _ __ ___ ___ " -ForegroundColor Red
Write-Host "| | / _ \ / _``` |/ _ \| '_ \ | '_ ``` _ \ / _ \" -ForegroundColor Red
Write-Host "| |___| (_) | (_| | (_) | | | |_| | | | | | __/" -ForegroundColor Red
Write-Host "|______\___/ \__, |\___/|_| |_(_)_| |_| |_|\___|" -ForegroundColor Red
Write-Host " __/ | " -ForegroundColor Red
Write-Host " |___/ " -ForegroundColor Red
Write-Host ""
Write-Host "Importing Logon.me PowerShell Module '$env:LogonmeModuleFile ($env:LogonmeVersion)'"
Write-Host ""
Write-Host "== Get API client ==" -ForegroundColor Green
Write-Host "`$client = Get-LogonmeApiClient" -ForegroundColor Cyan
Write-Host ""
Write-Host "== Create a local Docker compose file from template ==" -ForegroundColor Green
Write-Host "Get-LogonmeDockerComposeFile | Out-File docker-compose.yml" -ForegroundColor Cyan
Write-Host ""
Write-Host "== Setup a new system (Development) ==" -ForegroundColor Green
Write-Host "Invoke-LogonmeSetup -ApiClient `$client -Operation SeedConfiguration" -ForegroundColor Cyan
Write-Host ""
Write-Host "== Setup a new system (Docker) ==" -ForegroundColor Green
Write-Host "Invoke-LogonmeSetup -ApiClient `$client -Operation SeedConfiguration -Environment Docker" -ForegroundColor Cyan
Write-Host ""
Write-Host "== Verify/reload changed configurations ==" -ForegroundColor Green
Write-Host "Invoke-LogonmeSetup -ApiClient `$client -Operation VerifyConfiguration" -ForegroundColor Cyan
Write-Host "Invoke-LogonmeSetup -ApiClient `$client -Operation ClearConfigurationCache" -ForegroundColor Cyan
Write-Host ""
Write-Host "== Get system versions (backend/frontend) == " -ForegroundColor Green
Write-Host "Get-LogonmeVersion -ApiClient `$client" -ForegroundColor Cyan
Write-Host ""
Write-Host "== Get all config config objects of a type ==" -ForegroundColor Green
Write-Host "Get-LogonmeConfig -ApiClient `$client -ConfigType FormsMethodBankID" -ForegroundColor Cyan
Write-Host ""
Write-Host "== Create config object ==" -ForegroundColor Green
Write-Host "`$cfg = Add-LogonmeConfig -ApiClient `$client -ConfigType FormsMethodBankID -Id `'bankid1234`'" -ForegroundColor Cyan
Write-Host "`$cfg.displayName = `"MyNewConfiguration1234`"" -ForegroundColor Cyan
Write-Host "`$cfg | Set-LogonmeConfig -ApiClient `$client" -ForegroundColor Cyan 
Write-Host ""
Write-Host "== Update config object ==" -ForegroundColor Green
Write-Host "`$cfg = Get-LogonmeConfig -ApiClient `$client -ConfigType FormsMethodBankID -OdataFilter `"id eq `'bankid1234`'`"" -ForegroundColor Cyan 
Write-Host "`$cfg.description = `"Updated description`"" -ForegroundColor Cyan
Write-Host "`$cfg | Set-LogonmeConfig -ApiClient `$client" -ForegroundColor Cyan 
Write-Host ""
Write-Host "== Delete config object ==" -ForegroundColor Green
Write-Host "`$cfg = Get-LogonmeConfig -ApiClient `$client -ConfigType FormsMethodBankID -OdataFilter `"id eq `'bankid1234`'`"" -ForegroundColor Cyan 
Write-Host "`$cfg | Remove-LogonmeConfig -ApiClient `$client" -ForegroundColor Cyan 
Write-Host ""
Write-Host "== Find users by username, email or mobile phone ==" -ForegroundColor Green
Write-Host "Find-LogonmeUsers -ApiClient `$client -Login `"username1`"" -ForegroundColor Cyan
Write-Host "Find-LogonmeUsers -ApiClient `$client -Login `"first.last@domain.com`"" -ForegroundColor Cyan
Write-Host "Find-LogonmeUsers -ApiClient `$client -Login `"+46123456789`"" -ForegroundColor Cyan
Write-Host ""
Write-Host "== Getting user roles ==" -ForegroundColor Green
Write-Host "Get-LogonmeUserData -ApiClient `$client -Login `"username1`" -DataType Roles" -ForegroundColor Cyan
Write-Host ""
Write-Host "== Adding a user role named 'role1' ==" -ForegroundColor Green
Write-Host "Add-LogonmeUserRole -ApiClient `$client -Login `"first.last@domain.com`" -Name `"role1`"" -ForegroundColor Cyan
Write-Host ""
Write-Host "== Removing all user roles named 'role1' ==" -ForegroundColor Green
Write-Host "`$rolesToDelete = Get-LogonmeUserData -ApiClient `$client -Login `"first.last@domain.com`" -DataType Roles | Where-Object { `$`_.name -eq `"role1`" }" -ForegroundColor Cyan
Write-Host "`$rolesToDelete | ForEach-Object { Remove-LogonmeData -ApiClient `$client -Object `$_ }" -ForegroundColor Cyan
Write-Host ""
Write-Host "== Syncing external users into Logon.me (requires configured sync client) ==" -ForegroundColor Green
Write-Host "Sync-LogonmeUsers -ApiClient `$client -Username `"username1`"" -ForegroundColor Cyan
Write-Host "Sync-LogonmeUsers -ApiClient `$client -ImportFile `"c:\temp\users.txt`"" -ForegroundColor Cyan
Write-Host ""