import { prisma } from "@/lib/prisma"; import { getServerSession } from "next-auth/next"; import { authOptions } from "@/lib/auth-config"; import { redirect } from "next/navigation"; import { Table, TableHeader, TableBody, TableRow, TableHead, TableCell } from "@/components/ui/table"; import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; export const dynamic = "force-dynamic"; export default async function NodesPage() { const session = await getServerSession(authOptions); if (!session?.user) redirect("/login"); if (!session.user.establishmentId && session.user.role !== "superadmin") redirect("/dashboard"); const establishmentId = session.user.establishmentId; const nodes = await prisma.node.findMany({ where: establishmentId ? { student: { class: { establishmentId } } } : {}, include: { student: { include: { class: true } }, instances: true }, orderBy: { lastSeen: "desc" }, }); return (

Nœuds

ID Étudiant IP Tailscale Statut Instances Dernière vue {nodes.map((n) => ( {n.id} {n.student ? `${n.student.firstName} ${n.student.lastName}` : "-"} {n.tailscaleIp || "-"} {n.status} {n.instances.length} {n.lastSeen ? new Date(n.lastSeen).toLocaleString("fr-FR") : "-"} ))} {nodes.length === 0 && ( Aucun nœud )}
); }