EKB Admin
import { redirect } from 'next/navigation'; import { db } from '@/db'; import { groups, permissions, rolePermissions, roles, users } from '@/db/schema/auth'; import { aclRules, resources } from '@/db/schema/resource'; import { requireAdmin } from '@/lib/auth/admin'; import { Badge } from '@/components/ui/badge'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Dialog } from '@/components/ui/dialog'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Select } from '@/components/ui/select'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table'; import { Tabs } from '@/components/ui/tabs'; import { assignPermissionToRoleAction, createAclRuleAction, createPermissionAction, createResourceAction, deleteAclRuleAction, removePermissionFromRoleAction, } from './actions'; export default async function PermissionsAdminPage() { try { await requireAdmin(); } catch { redirect('/login'); } const [roleRows, permissionRows, rolePermissionRows, resourceRows, aclRows, userRows, groupRows] = await Promise.all([ db.select().from(roles).orderBy(roles.name), db.select().from(permissions).orderBy(permissions.resourceType, permissions.action), db.select().from(rolePermissions), db.select().from(resources).orderBy(resources.path), db.select().from(aclRules).orderBy(aclRules.createdAt), db.select().from(users).orderBy(users.email), db.select().from(groups).orderBy(groups.name), ]); const permissionById = new Map(permissionRows.map((permission) => [permission.id, permission])); const resourceById = new Map(resourceRows.map((resource) => [resource.id, resource])); const userById = new Map(userRows.map((user) => [user.id, user.email])); const groupById = new Map(groupRows.map((group) => [group.id, group.name])); const actions = (
EKB Admin