feat: refactor frontend routing and authentication
- Changed root div ID from 'root' to 'app' in index.html. - Updated package.json to include new dependencies for routing and state management. - Removed App component and replaced it with a router setup in main.tsx. - Added route definitions for login, about, and index pages. - Implemented authentication logic using Zustand for state management. - Created API client with Axios for handling requests and token management. - Added CORS support in the backend API. - Updated schema for login requests to use camelCase.
This commit is contained in:
29
libertas-frontend/src/hooks/use-auth-storage.ts
Normal file
29
libertas-frontend/src/hooks/use-auth-storage.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import { create } from 'zustand'
|
||||
import { createJSONStorage, persist } from 'zustand/middleware'
|
||||
import type { User } from "@/domain/types"
|
||||
|
||||
type AuthState = {
|
||||
token: string | null
|
||||
user: User | null
|
||||
setToken: (token: string, user: User) => void
|
||||
clearToken: () => void
|
||||
}
|
||||
|
||||
/**
|
||||
* Global store for authentication state (token and user).
|
||||
* Persisted to localStorage.
|
||||
*/
|
||||
export const useAuthStorage = create<AuthState>()(
|
||||
persist(
|
||||
(set) => ({
|
||||
token: null,
|
||||
user: null,
|
||||
setToken: (token, user) => set({ token, user }),
|
||||
clearToken: () => set({ token: null, user: null }),
|
||||
}),
|
||||
{
|
||||
name: 'auth-storage',
|
||||
storage: createJSONStorage(() => localStorage),
|
||||
},
|
||||
),
|
||||
)
|
||||
Reference in New Issue
Block a user