Files
webshop/shop/app/admin/users/page.tsx

52 lines
1.9 KiB
TypeScript

import { getUsers } from '@/lib/actions/users'
import { getCompanies } from '@/lib/actions/companies'
import { UserList } from '@/components/admin/user-list'
import { UserDialog } from '@/components/admin/user-dialog'
import { Users } from 'lucide-react'
import { Suspense } from 'react'
export const dynamic = 'force-dynamic'
export default async function AdminUsersPage() {
const companies = await getCompanies()
return (
<div className="flex-1 space-y-8 p-8 pt-6">
<div className="flex items-center justify-between space-y-2">
<div>
<h2 className="text-3xl font-bold tracking-tight text-gradient flex items-center gap-3">
<Users className="w-8 h-8 text-primary" />
Benutzerverwaltung
</h2>
<p className="text-slate-400">
Verwalten Sie Benutzerkonten, Berechtigungen und Sicherheit.
</p>
</div>
<div className="flex items-center space-x-2">
<UserDialog companies={companies} />
</div>
</div>
<Suspense fallback={<div className="h-40 w-full animate-pulse bg-white/5 rounded-xl" />}>
<UserDataWrapper />
</Suspense>
</div>
)
}
async function UserDataWrapper() {
try {
const [users, companies] = await Promise.all([getUsers(), getCompanies()])
return <UserList initialUsers={users} companies={companies} />
} catch (error: any) {
console.error('[UserDataWrapper] Error loading users:', error)
return (
<div className="p-8 border border-destructive/50 bg-destructive/10 rounded-xl text-destructive text-center space-y-2">
<p>Fehler beim Laden der Benutzer. Stellen Sie sicher, dass der SERVICE_ROLE_KEY korrekt konfiguriert ist.</p>
<p className="text-xs font-mono text-destructive/80">
Details: {error instanceof Error ? error.message : JSON.stringify(error)}
</p>
</div>
)
}
}