feature/app-selector
This commit is contained in:
@@ -81,16 +81,18 @@ export function clearAuthTokens(cookies: Cookies) {
|
||||
cookies.delete('refresh_token', { path: '/' });
|
||||
cookies.delete('id_token', { path: '/' });
|
||||
cookies.delete('active_company_id', { path: '/' });
|
||||
cookies.delete('active_system', { path: '/' });
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea headers de autorización con el token Bearer
|
||||
*/
|
||||
export function createAuthHeaders(token: string, additionalHeaders?: Record<string, string>, tenantOverride?: string) {
|
||||
export function createAuthHeaders(token: string, additionalHeaders?: Record<string, string>, tenantOverride?: string, activeSystem?: string) {
|
||||
return {
|
||||
'Authorization': `Bearer ${token}`,
|
||||
'Content-Type': 'application/json',
|
||||
...(tenantOverride ? { 'X-Tenant-Override': tenantOverride } : {}),
|
||||
...(activeSystem ? { 'X-Active-System': activeSystem } : {}),
|
||||
...additionalHeaders
|
||||
};
|
||||
}
|
||||
@@ -169,6 +171,8 @@ export async function authenticatedFetch(
|
||||
|
||||
// Leer tenant override de cookie SSO (flujo multi-tenant relay)
|
||||
const tenantOverride = cookies.get('sso_tenant_id');
|
||||
// Sistema activo (SCAF/SCAII) para reenviar al backend vía header
|
||||
const activeSystem = cookies.get('active_system');
|
||||
|
||||
// Crear AbortController para timeout
|
||||
const controller = new AbortController();
|
||||
@@ -181,8 +185,12 @@ export async function authenticatedFetch(
|
||||
// Si el body es FormData, no incluir Content-Type (el navegador lo establece con el boundary)
|
||||
const isFormData = options.body instanceof FormData;
|
||||
const headers = isFormData
|
||||
? { 'Authorization': `Bearer ${accessToken}`, ...(options.headers as Record<string, string> || {}) }
|
||||
: createAuthHeaders(accessToken, options.headers as Record<string, string>, tenantOverride);
|
||||
? {
|
||||
'Authorization': `Bearer ${accessToken}`,
|
||||
...(activeSystem ? { 'X-Active-System': activeSystem } : {}),
|
||||
...(options.headers as Record<string, string> || {})
|
||||
}
|
||||
: createAuthHeaders(accessToken, options.headers as Record<string, string>, tenantOverride, activeSystem);
|
||||
|
||||
let response = await fetch(url, {
|
||||
...options,
|
||||
@@ -212,8 +220,12 @@ export async function authenticatedFetch(
|
||||
|
||||
// Si el body es FormData, no incluir Content-Type
|
||||
const newHeaders = isFormData
|
||||
? { 'Authorization': `Bearer ${newToken}`, ...(options.headers as Record<string, string> || {}) }
|
||||
: createAuthHeaders(newToken, options.headers as Record<string, string>, tenantOverride);
|
||||
? {
|
||||
'Authorization': `Bearer ${newToken}`,
|
||||
...(activeSystem ? { 'X-Active-System': activeSystem } : {}),
|
||||
...(options.headers as Record<string, string> || {})
|
||||
}
|
||||
: createAuthHeaders(newToken, options.headers as Record<string, string>, tenantOverride, activeSystem);
|
||||
|
||||
response = await fetch(url, {
|
||||
...options,
|
||||
|
||||
Reference in New Issue
Block a user