38 lines
879 B
TypeScript
38 lines
879 B
TypeScript
import { create } from 'zustand';
|
|
import { persist } from 'zustand/middleware';
|
|
|
|
export type User = {
|
|
id: number;
|
|
name: string;
|
|
email: string;
|
|
is_admin?: boolean;
|
|
is_active?: boolean;
|
|
// případně další pole: roles, callsign, atd.
|
|
};
|
|
|
|
type UserState = {
|
|
user: User | null;
|
|
setUser: (user: User | null) => void;
|
|
clearUser: () => void;
|
|
};
|
|
|
|
|
|
|
|
export const useUserStore = create<UserState>()(
|
|
persist(
|
|
(set) => ({
|
|
user: null,
|
|
setUser: (user) => set({ user }),
|
|
clearUser: () => set({ user: null }),
|
|
}),
|
|
{ name: 'user-store' }
|
|
)
|
|
);
|
|
|
|
// použití:
|
|
// import { useUserStore } from '@/stores/userStore';
|
|
// const user = useUserStore((s) => s.user); // získání přihlášeného uživatele
|
|
// const isAuthenticated = !!user;
|
|
// const setUser = useUserStore((s) => s.setUser);
|
|
// const clearUser = useUserStore((s) => s.clearUser);
|