fix: persistance du login admin via localStorage (zustand persist)
CI / Lint & Format (push) Failing after 1m3s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 8s
CI / Docker Build (push) Has been skipped

This commit is contained in:
2026-06-23 16:09:20 -04:00
parent a8eeb6394a
commit 7787d6db98
+30 -21
View File
@@ -1,4 +1,5 @@
import { create } from 'zustand'; import { create } from 'zustand';
import { persist } from 'zustand/middleware';
import { apiGet } from '@/api/client'; import { apiGet } from '@/api/client';
import { ENDPOINTS } from '@/utils/constants'; import { ENDPOINTS } from '@/utils/constants';
@@ -9,27 +10,35 @@ interface AuthStore {
logout: () => void; logout: () => void;
} }
export const useAuthStore = create<AuthStore>((set) => ({ export const useAuthStore = create<AuthStore>()(
apiKey: null, persist(
isAuthenticated: false, (set, get) => ({
apiKey: null,
isAuthenticated: false,
login: async (key: string) => { login: async (key: string) => {
// Temporarily set the key so the apiGet will use it // Temporarily set the key so the apiGet will use it
set({ apiKey: key }); set({ apiKey: key });
try { try {
// Validate by calling clients endpoint (requires admin scope) // Validate by calling clients endpoint (requires admin scope)
await apiGet(ENDPOINTS.CLIENTS); await apiGet(ENDPOINTS.CLIENTS);
set({ isAuthenticated: true }); set({ isAuthenticated: true });
return true; return true;
} catch { } catch {
// Reset on failure // Reset on failure
set({ apiKey: null, isAuthenticated: false }); set({ apiKey: null, isAuthenticated: false });
return false; return false;
}
},
logout: () => {
set({ apiKey: null, isAuthenticated: false });
},
}),
{
name: 'imago-auth',
partialize: (state) => ({ apiKey: state.apiKey, isAuthenticated: state.isAuthenticated }),
} }
}, )
);
logout: () => {
set({ apiKey: null, isAuthenticated: false });
},
}));