logs route behind protected route and menu

This commit is contained in:
2026-03-16 20:59:05 -05:00
parent 5db2a7fe75
commit 2846b9cb0d
27 changed files with 1898 additions and 226 deletions

View File

@@ -0,0 +1,69 @@
import { Link } from "@tanstack/react-router";
import { Logs } from "lucide-react";
import {
SidebarGroup,
SidebarGroupContent,
SidebarGroupLabel,
SidebarMenu,
SidebarMenuButton,
SidebarMenuItem,
useSidebar,
} from "../ui/sidebar";
export default function AdminSidebar() {
const { setOpen } = useSidebar();
const items = [
// {
// title: "Users",
// url: "/admin/users",
// icon: User,
// role: ["systemAdmin", "admin"],
// module: "admin",
// active: true,
// },
{
title: "Logs",
url: "/admin/logs",
icon: Logs,
role: ["systemAdmin", "admin"],
module: "admin",
active: true,
},
// {
// title: "Modules",
// url: "/admin/modules",
// icon: Settings,
// role: ["systemAdmin", "admin"],
// module: "admin",
// active: true,
// },
// {
// title: "Servers",
// url: "/admin/servers",
// icon: Server,
// role: ["systemAdmin", "admin"],
// module: "admin",
// active: true,
// },
];
return (
<SidebarGroup>
<SidebarGroupLabel>Admin</SidebarGroupLabel>
<SidebarGroupContent>
<SidebarMenu>
{items.map((item) => (
<SidebarMenuItem key={item.title}>
<SidebarMenuButton asChild>
<Link to={item.url} onClick={() => setOpen(false)}>
<item.icon />
<span>{item.title}</span>
</Link>
</SidebarMenuButton>
</SidebarMenuItem>
))}
</SidebarMenu>
</SidebarGroupContent>
</SidebarGroup>
);
}

View File

@@ -0,0 +1,30 @@
import {
Sidebar,
SidebarContent,
SidebarHeader,
SidebarMenu,
SidebarMenuItem,
} from "@/components/ui/sidebar";
import { useSession } from "@/lib/auth-client";
import AdminSidebar from "./AdminBar";
export function AppSidebar() {
const { data: session } = useSession();
return (
<Sidebar
variant="sidebar"
collapsible="offcanvas"
className="top-(--header-height) h-[calc(100svh-var(--header-height))]!"
>
<SidebarHeader>
<SidebarMenu>
<SidebarMenuItem>
<SidebarContent>
{session && session.user.role === "admin" && <AdminSidebar />}
</SidebarContent>
</SidebarMenuItem>
</SidebarMenu>
</SidebarHeader>
</Sidebar>
);
}