Merge pull request #99 from madhura68/feat/story-111ci8t4

ST-1205: Admin: gebruikersbeheer (/admin/users)
This commit is contained in:
Janpeter Visser 2026-05-05 14:44:55 +02:00 committed by GitHub
commit 384a7ecd4a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 331 additions and 0 deletions

View file

@ -0,0 +1,16 @@
import { requireAdmin } from '@/lib/auth-guard'
import Link from 'next/link'
export default async function AdminLayout({ children }: { children: React.ReactNode }) {
await requireAdmin()
return (
<div className="flex min-h-screen">
<nav className="w-48 border-r p-4 flex flex-col gap-2">
<Link href="/admin/users" className="text-sm font-medium text-foreground hover:text-primary">Gebruikers</Link>
<Link href="/admin/jobs" className="text-sm font-medium text-foreground hover:text-primary">Claude Jobs</Link>
<Link href="/admin/products" className="text-sm font-medium text-foreground hover:text-primary">Producten</Link>
</nav>
<main className="flex-1 p-6">{children}</main>
</div>
)
}

5
app/(app)/admin/page.tsx Normal file
View file

@ -0,0 +1,5 @@
import { redirect } from 'next/navigation'
export default function AdminPage() {
redirect('/admin/users')
}

View file

@ -0,0 +1,19 @@
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>
)
}