diff --git a/apps/app/src/lib/axios.ts b/apps/app/src/lib/axios.ts index d9e616be..95533e74 100644 --- a/apps/app/src/lib/axios.ts +++ b/apps/app/src/lib/axios.ts @@ -9,6 +9,7 @@ import type { AxiosInstance, InternalAxiosRequestConfig } from 'axios' */ export interface AxiosBindingsDeps { getActiveOrgId: () => string | null + getImpersonationTargetUserId: () => string | null notify: (message: string, level: 'error' | 'warning') => void onAuthFail: () => void onImpersonationRevoked: () => void @@ -31,18 +32,9 @@ export function registerInterceptors(client: AxiosInstance, deps: AxiosBindingsD if (orgId) config.headers['X-Organisation-Id'] = orgId - // Read impersonation header directly from sessionStorage — no store dep. - const impersonationData = sessionStorage.getItem('crewli_impersonation') - if (impersonationData) { - try { - const parsed = JSON.parse(impersonationData) as { targetUserId?: string } - if (parsed.targetUserId) - config.headers['X-Impersonate-User'] = parsed.targetUserId - } - catch { - // Invalid data — ignore - } - } + const impersonationTargetUserId = deps.getImpersonationTargetUserId() + if (impersonationTargetUserId) + config.headers['X-Impersonate-User'] = impersonationTargetUserId if (import.meta.env.DEV) console.log(`🚀 ${config.method?.toUpperCase()} ${config.url}`, config.data) diff --git a/apps/app/src/plugins/3.axios-bindings.ts b/apps/app/src/plugins/3.axios-bindings.ts index 599a1793..b58a2e3a 100644 --- a/apps/app/src/plugins/3.axios-bindings.ts +++ b/apps/app/src/plugins/3.axios-bindings.ts @@ -12,6 +12,7 @@ import { useOrganisationStore } from '@/stores/useOrganisationStore' export default function (_: App): void { registerInterceptors(apiClient, { getActiveOrgId: () => useOrganisationStore().activeOrganisationId, + getImpersonationTargetUserId: () => useImpersonationStore().targetUserId, notify: (message, level) => useNotificationStore().show(message, level), onAuthFail: () => { const authStore = useAuthStore()