// Re-export utility functions that were previously in utils.ts // These are now internal to AuthService, but we provide standalone versions for compat. import type { IStorage } from './core/types/common'; import type { AuthIdentity } from './core/types/auth.types'; const AUTH_FIELDS_LOCAL = ['token', 'roles', 'username', 'profile', 'email', 'permissions']; async function getToken(storage: IStorage): Promise { return await storage.getItem('token'); } async function getHeaders(storage: IStorage): Promise { const token = await getToken(storage); const authHeaders = token && token?.length > 0 ? { Authorization: `Bearer ${token}` } : ({} as any); return new Headers({ 'Content-Type': 'application/json', Accept: 'application/json', ...authHeaders }); } async function clearAuth(storage: IStorage): Promise { await unsetImpersonateAuthData(storage); for (const param of AUTH_FIELDS_LOCAL) { await storage.removeItem(`admin_${param}`); await storage.removeItem(param); } } async function clearNeedToChangePassword(storage: IStorage): Promise { const profile = await storage.getItem('profile'); await storage.setItem('profile', JSON.stringify({ ...JSON.parse(profile), needToChangePassword: false })); } async function setAuthData(storage: IStorage, data: AuthIdentity): Promise { const { token, user, permissions } = data; await storage.setItem('email', user?.email); await storage.setItem('token', token); await storage.setItem('roles', JSON.stringify(user?.roles || [])); await storage.setItem( 'profile', JSON.stringify({ ...user?.profile, fullName: user?.name, needToChangePassword: user?.needToChangePassword, firstLogin: user?.firstLogin }) ); await storage.setItem('permissions', permissions?.join(',')); } async function setImpersonateAuthData(storage: IStorage, data: AuthIdentity): Promise { for (const param of AUTH_FIELDS_LOCAL) { const toSaveParam = `admin_${param}`; await storage.setItem(toSaveParam, await storage.getItem(param)); await storage.setItem( param, ['profile', 'roles'].indexOf(param) !== -1 ? JSON.stringify(data[param]) : data[param] ); } await storage.setItem('impersonate', true); } async function unsetImpersonateAuthData(storage: IStorage): Promise { for (const param of AUTH_FIELDS_LOCAL) { const savedParam = `admin_${param}`; await storage.setItem(param, await storage.getItem(savedParam)); await storage.removeItem(savedParam); } await storage.setItem('impersonate', false); } function createFormData(body: any): string { return Object.keys(body) .map((key) => encodeURIComponent(key) + '=' + encodeURIComponent(body[key])) .join('&'); } // Re-export AUTH_FIELDS from auth service export { AUTH_FIELDS } from './core/services/auth.service'; /** * Backward compatibility shim — re-exports from new locations. */ export { AesUtil } from './core/crypto/aes-util'; export { Base64 } from './core/crypto/base64'; export { clearAuth, clearNeedToChangePassword, createFormData, getHeaders, getToken, setAuthData, setImpersonateAuthData, unsetImpersonateAuthData };