- app/(app)/admin/layout.tsx: admin-sidebar met links (Gebruikers/Claude Jobs/Producten) - app/(app)/admin/page.tsx: redirect naar /admin/users - app/(app)/admin/users/page.tsx: server component, query users+roles, geeft userId door - components/admin/users-table.tsx: client component met UsersTable, RoleBadge, RolesDialog (checkboxes, eigen ADMIN-rol geblokkeerd), DeleteDialog (confirm), ResetToggle — alles via useTransition + server actions
19 lines
578 B
TypeScript
19 lines
578 B
TypeScript
import { requireAdmin } from '@/lib/auth-guard'
|
|
import { prisma } from '@/lib/prisma'
|
|
import { UsersTable } from '@/components/admin/users-table'
|
|
|
|
export default async function AdminUsersPage() {
|
|
const session = await requireAdmin()
|
|
|
|
const users = await prisma.user.findMany({
|
|
include: { roles: { select: { role: true } } },
|
|
orderBy: { created_at: 'desc' },
|
|
})
|
|
|
|
return (
|
|
<div className="space-y-4">
|
|
<h1 className="text-xl font-semibold text-foreground">Gebruikers</h1>
|
|
<UsersTable users={users} currentUserId={session.userId} />
|
|
</div>
|
|
)
|
|
}
|