/*
|--------------------------------------------------------------------------
| Agência PSI
|--------------------------------------------------------------------------
| Arquivo: src/utils/roleNormalizer.js
|
| Normalização única de roles de tenant. Antes existia em guards.js e
| tenantStore.js duplicada — se uma mudasse sem a outra, tenant e guard
| divergiam sobre o role normalizado (bug sutil de permissão).
|--------------------------------------------------------------------------
*/

/**
 * Normaliza o role a partir do role cru do tenant_members + kind do tenant.
 *
 * Regras:
 *   tenant_admin / admin  +  kind = 'therapist' | 'saas' → 'therapist'
 *   tenant_admin / admin  +  kind = 'supervisor'         → 'supervisor'
 *   tenant_admin / admin  +  kind desconhecido            → 'clinic_admin' (legado)
 *   'clinic_admin' (role canônico)                         → 'clinic_admin'
 *   qualquer outro role                                    → pass-through
 *
 * @param {string|null|undefined} role  Role cru (tenant_members.role ou profiles.role).
 * @param {string|null|undefined} kind  Kind do tenant (tenants.kind).
 * @returns {string} role normalizado (sempre string — '' quando sem input).
 */
export function normalizeRole(role, kind) {
    const r = String(role || '').trim();
    if (!r) return '';

    const isAdmin = r === 'tenant_admin' || r === 'admin';

    if (isAdmin) {
        const k = String(kind || '').trim();
        if (k === 'therapist' || k === 'saas') return 'therapist';
        if (k === 'supervisor') return 'supervisor';
        return 'clinic_admin';
    }

    if (r === 'clinic_admin') return 'clinic_admin';

    return r;
}
