63 lines
2.2 KiB
PowerShell
63 lines
2.2 KiB
PowerShell
# Script pour lister les rôles des utilisateurs Keycloak
|
|
# Usage: .\list-user-roles.ps1 [username]
|
|
# Exemple: .\list-user-roles.ps1 admin.meska@unionflow.test
|
|
|
|
param(
|
|
[string]$Username = ""
|
|
)
|
|
|
|
Write-Host "=== Rôles des Utilisateurs (Realm: unionflow) ===" -ForegroundColor Cyan
|
|
Write-Host ""
|
|
|
|
# Obtenir le token admin
|
|
$tokenResponse = Invoke-RestMethod -Method Post `
|
|
-Uri 'http://localhost:8180/realms/master/protocol/openid-connect/token' `
|
|
-ContentType 'application/x-www-form-urlencoded' `
|
|
-Body 'username=admin&password=admin&grant_type=password&client_id=admin-cli'
|
|
|
|
$token = $tokenResponse.access_token
|
|
|
|
# Récupérer les utilisateurs
|
|
$users = Invoke-RestMethod -Method Get `
|
|
-Uri 'http://localhost:8180/admin/realms/unionflow/users' `
|
|
-Headers @{ Authorization = "Bearer $token" }
|
|
|
|
# Filtrer si un username est spécifié
|
|
if ($Username) {
|
|
$users = $users | Where-Object { $_.username -eq $Username }
|
|
if (-not $users) {
|
|
Write-Host "[ERREUR] Utilisateur '$Username' non trouvé" -ForegroundColor Red
|
|
exit 1
|
|
}
|
|
}
|
|
|
|
# Parcourir les utilisateurs
|
|
foreach ($user in $users) {
|
|
Write-Host "[$($user.username)]" -ForegroundColor Yellow
|
|
Write-Host " Email: $($user.email)"
|
|
Write-Host " Enabled: $($user.enabled)"
|
|
|
|
# Realm roles
|
|
$realmRoles = Invoke-RestMethod -Method Get `
|
|
-Uri "http://localhost:8180/admin/realms/unionflow/users/$($user.id)/role-mappings/realm" `
|
|
-Headers @{ Authorization = "Bearer $token" }
|
|
|
|
if ($realmRoles) {
|
|
Write-Host " Rôles:"
|
|
$realmRoles | Where-Object { $_.name -ne 'default-roles-unionflow' -and $_.name -ne 'offline_access' -and $_.name -ne 'uma_authorization' } | ForEach-Object {
|
|
Write-Host " - $($_.name)" -ForegroundColor Green
|
|
}
|
|
}
|
|
|
|
Write-Host ""
|
|
}
|
|
|
|
Write-Host "=== Rôles Disponibles ===" -ForegroundColor Cyan
|
|
$allRoles = Invoke-RestMethod -Method Get `
|
|
-Uri "http://localhost:8180/admin/realms/unionflow/roles" `
|
|
-Headers @{ Authorization = "Bearer $token" }
|
|
|
|
$allRoles | Where-Object { $_.name -notlike 'default-*' -and $_.name -ne 'offline_access' -and $_.name -ne 'uma_authorization' } | ForEach-Object {
|
|
Write-Host " - $($_.name)"
|
|
}
|