27467bbb68
Modulo 1 da Fase 1 de padronizacao. Novos features/medicos (services + composable useMedicos) e features/insurance (idem). 3 cadastros rapidos (medicos, convenios, ComponentCadastroRapido + Insurance PlanQuickCreateDialog) migrados pra usar os composables novos — zero supabase.from() em UI components. TEST_ACCOUNTS extraido pra src/config/devTestAccounts.js. Topbar ganhou switcher de layout + atalhos M1 via novo useTopbarDevMenuExtras. M1.6 MelissaLayout 90 imports deferida pra sessao dedicada (memoria padronizacao_sweep). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
26 lines
949 B
JavaScript
26 lines
949 B
JavaScript
/*
|
|
|--------------------------------------------------------------------------
|
|
| Agência PSI
|
|
|--------------------------------------------------------------------------
|
|
| Arquivo: src/features/medicos/services/_tenantGuards.js
|
|
|
|
|
| Guards compartilhados entre repositories do feature medicos.
|
|
| Pattern canônico — ver blueprints/repository-blueprint.md seção 3.
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
import { supabase } from '@/lib/supabase/client';
|
|
|
|
export function assertTenantId(tenantId) {
|
|
if (!tenantId || tenantId === 'null' || tenantId === 'undefined') {
|
|
throw new Error('Tenant ativo inválido. Selecione a clínica/tenant antes de operar.');
|
|
}
|
|
}
|
|
|
|
export async function getUid() {
|
|
const { data, error } = await supabase.auth.getUser();
|
|
if (error) throw error;
|
|
const uid = data?.user?.id;
|
|
if (!uid) throw new Error('Usuário não autenticado.');
|
|
return uid;
|
|
}
|