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 { persist } from 'zustand/middleware';
import { apiGet } from '@/api/client';
import { ENDPOINTS } from '@/utils/constants';
@@ -9,27 +10,35 @@ interface AuthStore {
logout: () => void;
}
export const useAuthStore = create<AuthStore>((set) => ({
apiKey: null,
isAuthenticated: false,
export const useAuthStore = create<AuthStore>()(
persist(
(set, get) => ({
apiKey: null,
isAuthenticated: false,
login: async (key: string) => {
// Temporarily set the key so the apiGet will use it
set({ apiKey: key });
login: async (key: string) => {
// Temporarily set the key so the apiGet will use it
set({ apiKey: key });
try {
// Validate by calling clients endpoint (requires admin scope)
await apiGet(ENDPOINTS.CLIENTS);
set({ isAuthenticated: true });
return true;
} catch {
// Reset on failure
set({ apiKey: null, isAuthenticated: false });
return false;
try {
// Validate by calling clients endpoint (requires admin scope)
await apiGet(ENDPOINTS.CLIENTS);
set({ isAuthenticated: true });
return true;
} catch {
// Reset on failure
set({ apiKey: null, isAuthenticated: 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 });
},
}));
)
);