diff --git a/frontend/src/components/navBar/Admin.tsx b/frontend/src/components/navBar/Admin.tsx
index 8d4633c..17485b5 100644
--- a/frontend/src/components/navBar/Admin.tsx
+++ b/frontend/src/components/navBar/Admin.tsx
@@ -1,5 +1,4 @@
import { Server, Settings, User, type LucideIcon } from "lucide-react";
-import { TanStackRouterDevtools } from "@tanstack/react-router-devtools";
import { userAccess, type UserRoles } from "../../lib/authClient";
import {
SidebarGroup,
@@ -66,10 +65,6 @@ export default function Admin() {
>
))}
-
- {userAccess(null, ["systemAdmin"]) && (
-
- )}
diff --git a/frontend/src/routeTree.gen.ts b/frontend/src/routeTree.gen.ts
index 211b88b..71ff9a6 100644
--- a/frontend/src/routeTree.gen.ts
+++ b/frontend/src/routeTree.gen.ts
@@ -8,15 +8,21 @@
// You should NOT make any changes in this file as it will be overwritten.
// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.
+import { createFileRoute } from '@tanstack/react-router'
+
import { Route as rootRouteImport } from './routes/__root'
import { Route as AdminLayoutRouteRouteImport } from './routes/_adminLayout/route'
import { Route as IndexRouteImport } from './routes/index'
import { Route as authLoginRouteImport } from './routes/(auth)/login'
-import { Route as AdminLayoutAdminUsersRouteImport } from './routes/_adminLayout/admin/users'
import { Route as AdminLayoutAdminSettingsRouteImport } from './routes/_adminLayout/admin/settings'
import { Route as AdminLayoutAdminServersRouteImport } from './routes/_adminLayout/admin/servers'
import { Route as authUserSignupRouteImport } from './routes/(auth)/user/signup'
import { Route as authUserResetpasswordRouteImport } from './routes/(auth)/user/resetpassword'
+import { Route as AdminLayoutAdminUsersRouteRouteImport } from './routes/_adminLayout/admin/_users/route'
+import { Route as AdminLayoutAdminUsersUsersRouteImport } from './routes/_adminLayout/admin/_users/users'
+import { Route as AdminLayoutAdminUsersProdUsersRouteImport } from './routes/_adminLayout/admin/_users/prodUsers'
+
+const AdminLayoutAdminRouteImport = createFileRoute('/_adminLayout/admin')()
const AdminLayoutRouteRoute = AdminLayoutRouteRouteImport.update({
id: '/_adminLayout',
@@ -27,26 +33,26 @@ const IndexRoute = IndexRouteImport.update({
path: '/',
getParentRoute: () => rootRouteImport,
} as any)
+const AdminLayoutAdminRoute = AdminLayoutAdminRouteImport.update({
+ id: '/admin',
+ path: '/admin',
+ getParentRoute: () => AdminLayoutRouteRoute,
+} as any)
const authLoginRoute = authLoginRouteImport.update({
id: '/(auth)/login',
path: '/login',
getParentRoute: () => rootRouteImport,
} as any)
-const AdminLayoutAdminUsersRoute = AdminLayoutAdminUsersRouteImport.update({
- id: '/admin/users',
- path: '/admin/users',
- getParentRoute: () => AdminLayoutRouteRoute,
-} as any)
const AdminLayoutAdminSettingsRoute =
AdminLayoutAdminSettingsRouteImport.update({
- id: '/admin/settings',
- path: '/admin/settings',
- getParentRoute: () => AdminLayoutRouteRoute,
+ id: '/settings',
+ path: '/settings',
+ getParentRoute: () => AdminLayoutAdminRoute,
} as any)
const AdminLayoutAdminServersRoute = AdminLayoutAdminServersRouteImport.update({
- id: '/admin/servers',
- path: '/admin/servers',
- getParentRoute: () => AdminLayoutRouteRoute,
+ id: '/servers',
+ path: '/servers',
+ getParentRoute: () => AdminLayoutAdminRoute,
} as any)
const authUserSignupRoute = authUserSignupRouteImport.update({
id: '/(auth)/user/signup',
@@ -58,65 +64,96 @@ const authUserResetpasswordRoute = authUserResetpasswordRouteImport.update({
path: '/user/resetpassword',
getParentRoute: () => rootRouteImport,
} as any)
+const AdminLayoutAdminUsersRouteRoute =
+ AdminLayoutAdminUsersRouteRouteImport.update({
+ id: '/_users',
+ getParentRoute: () => AdminLayoutAdminRoute,
+ } as any)
+const AdminLayoutAdminUsersUsersRoute =
+ AdminLayoutAdminUsersUsersRouteImport.update({
+ id: '/users',
+ path: '/users',
+ getParentRoute: () => AdminLayoutAdminUsersRouteRoute,
+ } as any)
+const AdminLayoutAdminUsersProdUsersRoute =
+ AdminLayoutAdminUsersProdUsersRouteImport.update({
+ id: '/prodUsers',
+ path: '/prodUsers',
+ getParentRoute: () => AdminLayoutAdminUsersRouteRoute,
+ } as any)
export interface FileRoutesByFullPath {
'/': typeof IndexRoute
'/login': typeof authLoginRoute
+ '/admin': typeof AdminLayoutAdminUsersRouteRouteWithChildren
'/user/resetpassword': typeof authUserResetpasswordRoute
'/user/signup': typeof authUserSignupRoute
'/admin/servers': typeof AdminLayoutAdminServersRoute
'/admin/settings': typeof AdminLayoutAdminSettingsRoute
- '/admin/users': typeof AdminLayoutAdminUsersRoute
+ '/admin/prodUsers': typeof AdminLayoutAdminUsersProdUsersRoute
+ '/admin/users': typeof AdminLayoutAdminUsersUsersRoute
}
export interface FileRoutesByTo {
'/': typeof IndexRoute
'/login': typeof authLoginRoute
+ '/admin': typeof AdminLayoutAdminUsersRouteRouteWithChildren
'/user/resetpassword': typeof authUserResetpasswordRoute
'/user/signup': typeof authUserSignupRoute
'/admin/servers': typeof AdminLayoutAdminServersRoute
'/admin/settings': typeof AdminLayoutAdminSettingsRoute
- '/admin/users': typeof AdminLayoutAdminUsersRoute
+ '/admin/prodUsers': typeof AdminLayoutAdminUsersProdUsersRoute
+ '/admin/users': typeof AdminLayoutAdminUsersUsersRoute
}
export interface FileRoutesById {
__root__: typeof rootRouteImport
'/': typeof IndexRoute
'/_adminLayout': typeof AdminLayoutRouteRouteWithChildren
'/(auth)/login': typeof authLoginRoute
+ '/_adminLayout/admin': typeof AdminLayoutAdminRouteWithChildren
+ '/_adminLayout/admin/_users': typeof AdminLayoutAdminUsersRouteRouteWithChildren
'/(auth)/user/resetpassword': typeof authUserResetpasswordRoute
'/(auth)/user/signup': typeof authUserSignupRoute
'/_adminLayout/admin/servers': typeof AdminLayoutAdminServersRoute
'/_adminLayout/admin/settings': typeof AdminLayoutAdminSettingsRoute
- '/_adminLayout/admin/users': typeof AdminLayoutAdminUsersRoute
+ '/_adminLayout/admin/_users/prodUsers': typeof AdminLayoutAdminUsersProdUsersRoute
+ '/_adminLayout/admin/_users/users': typeof AdminLayoutAdminUsersUsersRoute
}
export interface FileRouteTypes {
fileRoutesByFullPath: FileRoutesByFullPath
fullPaths:
| '/'
| '/login'
+ | '/admin'
| '/user/resetpassword'
| '/user/signup'
| '/admin/servers'
| '/admin/settings'
+ | '/admin/prodUsers'
| '/admin/users'
fileRoutesByTo: FileRoutesByTo
to:
| '/'
| '/login'
+ | '/admin'
| '/user/resetpassword'
| '/user/signup'
| '/admin/servers'
| '/admin/settings'
+ | '/admin/prodUsers'
| '/admin/users'
id:
| '__root__'
| '/'
| '/_adminLayout'
| '/(auth)/login'
+ | '/_adminLayout/admin'
+ | '/_adminLayout/admin/_users'
| '/(auth)/user/resetpassword'
| '/(auth)/user/signup'
| '/_adminLayout/admin/servers'
| '/_adminLayout/admin/settings'
- | '/_adminLayout/admin/users'
+ | '/_adminLayout/admin/_users/prodUsers'
+ | '/_adminLayout/admin/_users/users'
fileRoutesById: FileRoutesById
}
export interface RootRouteChildren {
@@ -143,6 +180,13 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof IndexRouteImport
parentRoute: typeof rootRouteImport
}
+ '/_adminLayout/admin': {
+ id: '/_adminLayout/admin'
+ path: '/admin'
+ fullPath: '/admin'
+ preLoaderRoute: typeof AdminLayoutAdminRouteImport
+ parentRoute: typeof AdminLayoutRouteRoute
+ }
'/(auth)/login': {
id: '/(auth)/login'
path: '/login'
@@ -150,26 +194,19 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof authLoginRouteImport
parentRoute: typeof rootRouteImport
}
- '/_adminLayout/admin/users': {
- id: '/_adminLayout/admin/users'
- path: '/admin/users'
- fullPath: '/admin/users'
- preLoaderRoute: typeof AdminLayoutAdminUsersRouteImport
- parentRoute: typeof AdminLayoutRouteRoute
- }
'/_adminLayout/admin/settings': {
id: '/_adminLayout/admin/settings'
- path: '/admin/settings'
+ path: '/settings'
fullPath: '/admin/settings'
preLoaderRoute: typeof AdminLayoutAdminSettingsRouteImport
- parentRoute: typeof AdminLayoutRouteRoute
+ parentRoute: typeof AdminLayoutAdminRoute
}
'/_adminLayout/admin/servers': {
id: '/_adminLayout/admin/servers'
- path: '/admin/servers'
+ path: '/servers'
fullPath: '/admin/servers'
preLoaderRoute: typeof AdminLayoutAdminServersRouteImport
- parentRoute: typeof AdminLayoutRouteRoute
+ parentRoute: typeof AdminLayoutAdminRoute
}
'/(auth)/user/signup': {
id: '/(auth)/user/signup'
@@ -185,19 +222,67 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof authUserResetpasswordRouteImport
parentRoute: typeof rootRouteImport
}
+ '/_adminLayout/admin/_users': {
+ id: '/_adminLayout/admin/_users'
+ path: '/admin'
+ fullPath: '/admin'
+ preLoaderRoute: typeof AdminLayoutAdminUsersRouteRouteImport
+ parentRoute: typeof AdminLayoutAdminRoute
+ }
+ '/_adminLayout/admin/_users/users': {
+ id: '/_adminLayout/admin/_users/users'
+ path: '/users'
+ fullPath: '/admin/users'
+ preLoaderRoute: typeof AdminLayoutAdminUsersUsersRouteImport
+ parentRoute: typeof AdminLayoutAdminUsersRouteRoute
+ }
+ '/_adminLayout/admin/_users/prodUsers': {
+ id: '/_adminLayout/admin/_users/prodUsers'
+ path: '/prodUsers'
+ fullPath: '/admin/prodUsers'
+ preLoaderRoute: typeof AdminLayoutAdminUsersProdUsersRouteImport
+ parentRoute: typeof AdminLayoutAdminUsersRouteRoute
+ }
}
}
-interface AdminLayoutRouteRouteChildren {
+interface AdminLayoutAdminUsersRouteRouteChildren {
+ AdminLayoutAdminUsersProdUsersRoute: typeof AdminLayoutAdminUsersProdUsersRoute
+ AdminLayoutAdminUsersUsersRoute: typeof AdminLayoutAdminUsersUsersRoute
+}
+
+const AdminLayoutAdminUsersRouteRouteChildren: AdminLayoutAdminUsersRouteRouteChildren =
+ {
+ AdminLayoutAdminUsersProdUsersRoute: AdminLayoutAdminUsersProdUsersRoute,
+ AdminLayoutAdminUsersUsersRoute: AdminLayoutAdminUsersUsersRoute,
+ }
+
+const AdminLayoutAdminUsersRouteRouteWithChildren =
+ AdminLayoutAdminUsersRouteRoute._addFileChildren(
+ AdminLayoutAdminUsersRouteRouteChildren,
+ )
+
+interface AdminLayoutAdminRouteChildren {
+ AdminLayoutAdminUsersRouteRoute: typeof AdminLayoutAdminUsersRouteRouteWithChildren
AdminLayoutAdminServersRoute: typeof AdminLayoutAdminServersRoute
AdminLayoutAdminSettingsRoute: typeof AdminLayoutAdminSettingsRoute
- AdminLayoutAdminUsersRoute: typeof AdminLayoutAdminUsersRoute
+}
+
+const AdminLayoutAdminRouteChildren: AdminLayoutAdminRouteChildren = {
+ AdminLayoutAdminUsersRouteRoute: AdminLayoutAdminUsersRouteRouteWithChildren,
+ AdminLayoutAdminServersRoute: AdminLayoutAdminServersRoute,
+ AdminLayoutAdminSettingsRoute: AdminLayoutAdminSettingsRoute,
+}
+
+const AdminLayoutAdminRouteWithChildren =
+ AdminLayoutAdminRoute._addFileChildren(AdminLayoutAdminRouteChildren)
+
+interface AdminLayoutRouteRouteChildren {
+ AdminLayoutAdminRoute: typeof AdminLayoutAdminRouteWithChildren
}
const AdminLayoutRouteRouteChildren: AdminLayoutRouteRouteChildren = {
- AdminLayoutAdminServersRoute: AdminLayoutAdminServersRoute,
- AdminLayoutAdminSettingsRoute: AdminLayoutAdminSettingsRoute,
- AdminLayoutAdminUsersRoute: AdminLayoutAdminUsersRoute,
+ AdminLayoutAdminRoute: AdminLayoutAdminRouteWithChildren,
}
const AdminLayoutRouteRouteWithChildren =
diff --git a/frontend/src/routes/__root.tsx b/frontend/src/routes/__root.tsx
index 6f1c82e..2d2b15a 100644
--- a/frontend/src/routes/__root.tsx
+++ b/frontend/src/routes/__root.tsx
@@ -8,6 +8,8 @@ import Nav from "../components/navBar/Nav";
import { ThemeProvider } from "../lib/providers/theme-provider";
import { SidebarProvider } from "../components/ui/sidebar";
import SideBarNav from "../components/navBar/SideBarNav";
+import { TanStackRouterDevtools } from "@tanstack/react-router-devtools";
+import { userAccess } from "../lib/authClient";
interface RootRouteContext {
queryClient: QueryClient;
@@ -34,6 +36,9 @@ const RootLayout = () => {
+ {userAccess(null, ["systemAdmin"]) && (
+
+ )}
diff --git a/frontend/src/routes/_adminLayout/admin/_users/prodUsers.tsx b/frontend/src/routes/_adminLayout/admin/_users/prodUsers.tsx
new file mode 100644
index 0000000..a70275f
--- /dev/null
+++ b/frontend/src/routes/_adminLayout/admin/_users/prodUsers.tsx
@@ -0,0 +1,9 @@
+import { createFileRoute } from '@tanstack/react-router'
+
+export const Route = createFileRoute('/_adminLayout/admin/_users/prodUsers')({
+ component: RouteComponent,
+})
+
+function RouteComponent() {
+ return
Hello "/_adminLayout/admin/_users/prodUsers"!
+}
diff --git a/frontend/src/routes/_adminLayout/admin/_users/route.tsx b/frontend/src/routes/_adminLayout/admin/_users/route.tsx
new file mode 100644
index 0000000..0b1617b
--- /dev/null
+++ b/frontend/src/routes/_adminLayout/admin/_users/route.tsx
@@ -0,0 +1,30 @@
+import { createFileRoute, Link, Outlet } from "@tanstack/react-router";
+
+export const Route = createFileRoute("/_adminLayout/admin/_users")({
+ component: RouteComponent,
+});
+
+function RouteComponent() {
+ return (
+
+
+
+
+ );
+}
diff --git a/frontend/src/routes/_adminLayout/admin/_users/users.tsx b/frontend/src/routes/_adminLayout/admin/_users/users.tsx
new file mode 100644
index 0000000..fca95b4
--- /dev/null
+++ b/frontend/src/routes/_adminLayout/admin/_users/users.tsx
@@ -0,0 +1,9 @@
+import { createFileRoute } from "@tanstack/react-router";
+
+export const Route = createFileRoute("/_adminLayout/admin/_users/users")({
+ component: RouteComponent,
+});
+
+function RouteComponent() {
+ return Hello "/_admin/admin/users "!
;
+}
diff --git a/frontend/src/routes/_adminLayout/admin/users.tsx b/frontend/src/routes/_adminLayout/admin/users.tsx
deleted file mode 100644
index 7d3d23e..0000000
--- a/frontend/src/routes/_adminLayout/admin/users.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import { createFileRoute } from '@tanstack/react-router'
-
-export const Route = createFileRoute('/_adminLayout/admin/users')({
- component: RouteComponent,
-})
-
-function RouteComponent() {
- return Hello "/_admin/admin/users"!
-}