feat(lst): added in modules activation, roles and userRoles
This commit is contained in:
@@ -1,7 +1,14 @@
|
||||
import {QueryClient, QueryClientProvider} from "@tanstack/react-query";
|
||||
import {useModuleStore} from "../../lib/store/useModuleStore";
|
||||
import {useEffect} from "react";
|
||||
|
||||
const queryClient = new QueryClient();
|
||||
|
||||
export const SessionProvider = ({children}: {children: React.ReactNode}) => {
|
||||
const {fetchModules} = useModuleStore();
|
||||
|
||||
useEffect(() => {
|
||||
fetchModules();
|
||||
}, []);
|
||||
return <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>;
|
||||
};
|
||||
|
||||
45
frontend/src/lib/store/useModuleStore.ts
Normal file
45
frontend/src/lib/store/useModuleStore.ts
Normal file
@@ -0,0 +1,45 @@
|
||||
import {create} from "zustand";
|
||||
//import useSWR from "swr";
|
||||
|
||||
interface Modules {
|
||||
module_id: string;
|
||||
name: string;
|
||||
active: boolean;
|
||||
roles: string;
|
||||
add_user: string;
|
||||
add_date: Date;
|
||||
upd_user: string;
|
||||
upd_date: Date;
|
||||
}
|
||||
|
||||
interface SettingState {
|
||||
modules: Modules[];
|
||||
|
||||
fetchModules: () => Promise<void>;
|
||||
setModules: (modules: Modules[]) => void;
|
||||
}
|
||||
interface FetchModulesResponse {
|
||||
data: Modules[];
|
||||
}
|
||||
|
||||
export const useModuleStore = create<SettingState>()((set) => ({
|
||||
modules: [],
|
||||
setModules: (modules) => set({modules}),
|
||||
fetchModules: async () => {
|
||||
try {
|
||||
//const response = await axios.get<{data: Setting[]}>(`${process.env.NEXT_PUBLIC_URL}/api/settings/client`);
|
||||
const response = await fetch(`/api/server/modules`, {
|
||||
method: "GET",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
// You can add other headers here if necessary
|
||||
},
|
||||
});
|
||||
const data: FetchModulesResponse = await response.json();
|
||||
//console.log(data);
|
||||
set({modules: data.data});
|
||||
} catch (error) {
|
||||
console.error("Failed to fetch settings:", error);
|
||||
}
|
||||
},
|
||||
}));
|
||||
@@ -1,20 +1,23 @@
|
||||
type Feature = string;
|
||||
interface Module {
|
||||
id: number;
|
||||
name: string;
|
||||
features: Feature[];
|
||||
active: boolean;
|
||||
}
|
||||
// type Feature = string;
|
||||
// interface Module {
|
||||
// id: number;
|
||||
// name: string;
|
||||
// features: Feature[];
|
||||
// active: boolean;
|
||||
// }
|
||||
|
||||
const modules: Module[] = [
|
||||
{id: 1, name: "production", active: true, features: ["view", "edit", "approve"]},
|
||||
{id: 2, name: "logistics", active: true, features: ["view", "assign", "track"]},
|
||||
{id: 3, name: "quality", active: false, features: ["view", "audit", "approve"]},
|
||||
{id: 4, name: "forklift", active: true, features: ["view", "request", "operate"]},
|
||||
{id: 5, name: "admin", active: true, features: ["view", "manage_users", "view_logs", "settings"]},
|
||||
];
|
||||
import {useModuleStore} from "../lib/store/useModuleStore";
|
||||
|
||||
// const modules: Module[] = [
|
||||
// {id: 1, name: "production", active: true, features: ["view", "edit", "approve"]},
|
||||
// {id: 2, name: "logistics", active: true, features: ["view", "assign", "track"]},
|
||||
// {id: 3, name: "quality", active: false, features: ["view", "audit", "approve"]},
|
||||
// {id: 4, name: "forklift", active: true, features: ["view", "request", "operate"]},
|
||||
// {id: 5, name: "admin", active: true, features: ["view", "manage_users", "view_logs", "settings"]},
|
||||
// ];
|
||||
|
||||
export function moduleActive(moduleName: string): boolean {
|
||||
const module = modules.find((m) => m.name === moduleName);
|
||||
const {modules} = useModuleStore();
|
||||
const module = modules.find((m: any) => m.name === moduleName);
|
||||
return module ? module.active : false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user