import { keycloakAdminHttp } from './httpClient'; import { KeycloakUserSummary } from './types'; export async function findUserByEmail(email: string): Promise { const response = await keycloakAdminHttp.get>('/users', { params: { email, exact: true }, }); const [utente] = response.data; return utente ? { id: utente.id } : null; } export interface KeycloakUserProfile { id: string; email: string; firstName: string; lastName: string; } export async function getUserById(userId: string): Promise { const response = await keycloakAdminHttp.get<{ id: string; email?: string; firstName?: string; lastName?: string; }>(`/users/${userId}`); return { id: response.data.id, email: response.data.email ?? '', firstName: response.data.firstName ?? '', lastName: response.data.lastName ?? '', }; } export interface UpdateUserProfileInput { email: string; firstName: string; lastName: string; } // Il realm ha `registrationEmailAsUsername: true`, quindi username ed email // devono restare sincronizzati: aggiornare l'email senza lo username // lascerebbe l'utente con un login (username) diverso dalla nuova email. export async function updateUserProfile(userId: string, input: UpdateUserProfileInput): Promise { await keycloakAdminHttp.put(`/users/${userId}`, { email: input.email, username: input.email, firstName: input.firstName, lastName: input.lastName, }); } export async function resetUserPassword(userId: string, password: string): Promise { await keycloakAdminHttp.put(`/users/${userId}/reset-password`, { type: 'password', value: password, temporary: false, }); }