import { keycloakAdminHttp } from './httpClient'; interface RealmRoleRepresentation { id: string; name: string; } // Ruoli assegnati automaticamente da Keycloak a ogni utente (non gestiti da // questa app): il composite "default-roles-{realm}" e i ruoli che include. const RUOLI_DEFAULT_KEYCLOAK = new Set(['offline_access', 'uma_authorization']); function isRuoloDefaultKeycloak(nome: string): boolean { return RUOLI_DEFAULT_KEYCLOAK.has(nome) || nome.startsWith('default-roles-'); } export async function assignRealmRoleToUser(userId: string, ruolo: string): Promise { const { data: ruoloRepresentation } = await keycloakAdminHttp.get(`/roles/${ruolo}`); await keycloakAdminHttp.post(`/users/${userId}/role-mappings/realm`, [ruoloRepresentation]); } export async function removeRealmRoleFromUser(userId: string, ruolo: string): Promise { const { data: ruoloRepresentation } = await keycloakAdminHttp.get(`/roles/${ruolo}`); await keycloakAdminHttp.delete(`/users/${userId}/role-mappings/realm`, { data: [ruoloRepresentation] }); } export async function getUserRealmRoles(userId: string): Promise { const response = await keycloakAdminHttp.get(`/users/${userId}/role-mappings/realm`); return response.data.map((ruolo) => ruolo.name).filter((nome) => !isRuoloDefaultKeycloak(nome)); }