diff --git a/frontend/src/components/admin/settings/SettingsPage.tsx b/frontend/src/components/admin/settings/SettingsPage.tsx
new file mode 100644
index 0000000..306c547
--- /dev/null
+++ b/frontend/src/components/admin/settings/SettingsPage.tsx
@@ -0,0 +1,47 @@
+import {LstCard} from "@/components/extendedUI/LstCard";
+import {useSessionStore} from "@/lib/store/sessionStore";
+import {useModuleStore} from "@/lib/store/useModuleStore";
+import {useQuery} from "@tanstack/react-query";
+import {useRouter} from "@tanstack/react-router";
+import axios from "axios";
+
+export default function SettingsPage() {
+ const token = localStorage.getItem("auth_token");
+ const {user} = useSessionStore();
+ const {modules} = useModuleStore();
+ const router = useRouter();
+
+ const fetchSettings = async () => {
+ const {data} = await axios.get("/api/server/settings", {headers: {Authorization: `Bearer ${token}`}});
+ return data.data;
+ };
+
+ const adminModule = modules.filter((n) => n.name === "admin");
+ const userLevel = user?.roles.filter((r) => r.module_id === adminModule[0].module_id) || [];
+
+ if (!adminModule[0].roles.includes(userLevel[0]?.role)) {
+ router.navigate({to: "/"});
+ }
+
+ const {data, isError, error, isLoading} = useQuery({
+ queryKey: ["settings"],
+ queryFn: fetchSettings,
+ enabled: !!token,
+ refetchOnWindowFocus: true,
+ });
+
+ if (isLoading) {
+ return
Loading.....
;
+ }
+ if (isError) {
+ return {JSON.stringify(error)}
;
+ }
+
+ return (
+
+ {data.map((i) => {
+ return {i.name};
+ })}
+
+ );
+}
diff --git a/frontend/src/components/layout/lst-sidebar.tsx b/frontend/src/components/layout/lst-sidebar.tsx
index d924ffb..4d2a16f 100644
--- a/frontend/src/components/layout/lst-sidebar.tsx
+++ b/frontend/src/components/layout/lst-sidebar.tsx
@@ -22,7 +22,7 @@ export function AppSidebar() {
{moduleActive("production") && }
{moduleActive("logistics") && hasAccess(user, "logistics", modules) && }
{moduleActive("forklift") && hasAccess(user, "forklift", modules) && }
- {moduleActive("admin") && hasAccess(user, "eom", modules) && }
+ {moduleActive("eom") && hasAccess(user, "eom", modules) && }
{moduleActive("quality") && hasAccess(user, "quality", modules) && }
{moduleActive("admin") && hasAccess(user, "admin", modules) && }
diff --git a/frontend/src/components/layout/side-components/admin.tsx b/frontend/src/components/layout/side-components/admin.tsx
index c372710..a471ec7 100644
--- a/frontend/src/components/layout/side-components/admin.tsx
+++ b/frontend/src/components/layout/side-components/admin.tsx
@@ -29,7 +29,7 @@ const data = {
items: [
{
title: "Settings",
- url: "#",
+ url: "/settings",
icon: Settings,
isActive: false,
},
@@ -53,9 +53,16 @@ const data = {
},
{
title: "UCD",
- url: "#",
+ url: "https://ucd.alpla.net:8443/",
icon: Atom,
isActive: false,
+ newWindow: true,
+ },
+ {
+ title: "Lst Api",
+ url: "/api/docs",
+ icon: Webhook,
+ isActive: false,
},
],
},
@@ -85,7 +92,7 @@ export function AdminSideBar() {
{item.items.map((item) => (
-
+
{item.title}
diff --git a/frontend/src/routeTree.gen.ts b/frontend/src/routeTree.gen.ts
index 3bca86c..248e49d 100644
--- a/frontend/src/routeTree.gen.ts
+++ b/frontend/src/routeTree.gen.ts
@@ -19,6 +19,7 @@ import { Route as IndexImport } from './routes/index'
import { Route as OcpIndexImport } from './routes/ocp/index'
import { Route as OcpLotsImport } from './routes/ocp/lots'
import { Route as AuthProfileImport } from './routes/_auth/profile'
+import { Route as AdminSettingsImport } from './routes/_admin/settings'
import { Route as AdminModulesImport } from './routes/_admin/modules'
// Create/Update Routes
@@ -69,6 +70,12 @@ const AuthProfileRoute = AuthProfileImport.update({
getParentRoute: () => AuthRoute,
} as any)
+const AdminSettingsRoute = AdminSettingsImport.update({
+ id: '/settings',
+ path: '/settings',
+ getParentRoute: () => AdminRoute,
+} as any)
+
const AdminModulesRoute = AdminModulesImport.update({
id: '/modules',
path: '/modules',
@@ -121,6 +128,13 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof AdminModulesImport
parentRoute: typeof AdminImport
}
+ '/_admin/settings': {
+ id: '/_admin/settings'
+ path: '/settings'
+ fullPath: '/settings'
+ preLoaderRoute: typeof AdminSettingsImport
+ parentRoute: typeof AdminImport
+ }
'/_auth/profile': {
id: '/_auth/profile'
path: '/profile'
@@ -149,10 +163,12 @@ declare module '@tanstack/react-router' {
interface AdminRouteChildren {
AdminModulesRoute: typeof AdminModulesRoute
+ AdminSettingsRoute: typeof AdminSettingsRoute
}
const AdminRouteChildren: AdminRouteChildren = {
AdminModulesRoute: AdminModulesRoute,
+ AdminSettingsRoute: AdminSettingsRoute,
}
const AdminRouteWithChildren = AdminRoute._addFileChildren(AdminRouteChildren)
@@ -173,6 +189,7 @@ export interface FileRoutesByFullPath {
'/about': typeof AboutRoute
'/login': typeof LoginRoute
'/modules': typeof AdminModulesRoute
+ '/settings': typeof AdminSettingsRoute
'/profile': typeof AuthProfileRoute
'/ocp/lots': typeof OcpLotsRoute
'/ocp': typeof OcpIndexRoute
@@ -184,6 +201,7 @@ export interface FileRoutesByTo {
'/about': typeof AboutRoute
'/login': typeof LoginRoute
'/modules': typeof AdminModulesRoute
+ '/settings': typeof AdminSettingsRoute
'/profile': typeof AuthProfileRoute
'/ocp/lots': typeof OcpLotsRoute
'/ocp': typeof OcpIndexRoute
@@ -197,6 +215,7 @@ export interface FileRoutesById {
'/about': typeof AboutRoute
'/login': typeof LoginRoute
'/_admin/modules': typeof AdminModulesRoute
+ '/_admin/settings': typeof AdminSettingsRoute
'/_auth/profile': typeof AuthProfileRoute
'/ocp/lots': typeof OcpLotsRoute
'/ocp/': typeof OcpIndexRoute
@@ -210,6 +229,7 @@ export interface FileRouteTypes {
| '/about'
| '/login'
| '/modules'
+ | '/settings'
| '/profile'
| '/ocp/lots'
| '/ocp'
@@ -220,6 +240,7 @@ export interface FileRouteTypes {
| '/about'
| '/login'
| '/modules'
+ | '/settings'
| '/profile'
| '/ocp/lots'
| '/ocp'
@@ -231,6 +252,7 @@ export interface FileRouteTypes {
| '/about'
| '/login'
| '/_admin/modules'
+ | '/_admin/settings'
| '/_auth/profile'
| '/ocp/lots'
| '/ocp/'
@@ -282,7 +304,8 @@ export const routeTree = rootRoute
"/_admin": {
"filePath": "_admin.tsx",
"children": [
- "/_admin/modules"
+ "/_admin/modules",
+ "/_admin/settings"
]
},
"/_auth": {
@@ -301,6 +324,10 @@ export const routeTree = rootRoute
"filePath": "_admin/modules.tsx",
"parent": "/_admin"
},
+ "/_admin/settings": {
+ "filePath": "_admin/settings.tsx",
+ "parent": "/_admin"
+ },
"/_auth/profile": {
"filePath": "_auth/profile.tsx",
"parent": "/_auth"
diff --git a/frontend/src/routes/_admin/settings.tsx b/frontend/src/routes/_admin/settings.tsx
new file mode 100644
index 0000000..a3faaff
--- /dev/null
+++ b/frontend/src/routes/_admin/settings.tsx
@@ -0,0 +1,14 @@
+import SettingsPage from "@/components/admin/settings/SettingsPage";
+import {createFileRoute} from "@tanstack/react-router";
+
+export const Route = createFileRoute("/_admin/settings")({
+ component: RouteComponent,
+});
+
+function RouteComponent() {
+ return (
+
+
+
+ );
+}