Files
thrilltrack-explorer/src/pages/AdminUsers.tsx
2025-10-15 12:06:51 +00:00

68 lines
1.9 KiB
TypeScript

import { useAdminGuard } from '@/hooks/useAdminGuard';
import { MFARequiredAlert } from '@/components/auth/MFARequiredAlert';
import { AdminLayout } from '@/components/layout/AdminLayout';
import { UserManagement } from '@/components/admin/UserManagement';
import { Skeleton } from '@/components/ui/skeleton';
import { Card, CardContent } from '@/components/ui/card';
export default function AdminUsers() {
const { isLoading, isAuthorized, needsMFA } = useAdminGuard();
if (isLoading) {
return (
<AdminLayout>
<div className="space-y-6">
<div>
<h1 className="text-2xl font-bold tracking-tight">User Management</h1>
<p className="text-muted-foreground mt-1">
Manage user profiles, roles, and permissions
</p>
</div>
<Card>
<CardContent className="p-6 space-y-4">
{[1, 2, 3, 4].map((i) => (
<div key={i} className="flex items-center gap-4 p-4 border rounded-lg">
<Skeleton className="h-10 w-10 rounded-full" />
<div className="flex-1 space-y-2">
<Skeleton className="h-4 w-48" />
<Skeleton className="h-3 w-32" />
</div>
<Skeleton className="h-8 w-24" />
</div>
))}
</CardContent>
</Card>
</div>
</AdminLayout>
);
}
if (!isAuthorized) {
return null;
}
if (needsMFA) {
return (
<AdminLayout>
<MFARequiredAlert />
</AdminLayout>
);
}
return (
<AdminLayout>
<div className="space-y-6">
<div>
<h1 className="text-2xl font-bold tracking-tight">User Management</h1>
<p className="text-muted-foreground mt-1">
Manage user profiles, roles, and permissions
</p>
</div>
<UserManagement />
</div>
</AdminLayout>
);
}