feat(lst): added in modules activation, roles and userRoles

This commit is contained in:
2025-02-23 21:20:26 -06:00
parent f320118880
commit 7df5143835
20 changed files with 1576 additions and 20 deletions

View File

@@ -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>;
};

View 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);
}
},
}));

View File

@@ -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;
}