feat(newwhats): envia x-nw-clinica do workspace ativo (modelo de canal)
nwClient inclui o header x-nw-clinica (id do SCOREODONTO_ACTIVE_WORKSPACE) e o proxy REST o encaminha ao motor — assim as ações manuais escopam a ponte de agenda para a clínica do workspace ativo (por-requisição). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -9,9 +9,19 @@ export function nwToken(): string | null {
|
||||
try { return localStorage.getItem(TOKEN_KEY); } catch { return null; }
|
||||
}
|
||||
|
||||
// Clínica do workspace ativo — escopo por-requisição (modelo de canal).
|
||||
function activeClinicaId(): string | null {
|
||||
try { return JSON.parse(localStorage.getItem('SCOREODONTO_ACTIVE_WORKSPACE') || '{}')?.id || null; } catch { return null; }
|
||||
}
|
||||
|
||||
function authHeaders(extra?: Record<string, string>): Record<string, string> {
|
||||
const t = nwToken();
|
||||
return { ...(t ? { Authorization: `Bearer ${t}` } : {}), ...(extra || {}) };
|
||||
const c = activeClinicaId();
|
||||
return {
|
||||
...(t ? { Authorization: `Bearer ${t}` } : {}),
|
||||
...(c ? { 'x-nw-clinica': c } : {}),
|
||||
...(extra || {}),
|
||||
};
|
||||
}
|
||||
|
||||
async function req(method: string, path: string, body?: any): Promise<any> {
|
||||
|
||||
Reference in New Issue
Block a user