import { A, useParams } from '@solidjs/router'; import { createMemo, createResource, Show } from 'solid-js'; import AdminShell from '~/components/AdminShell'; const API = '/api/gateway'; type Permission = { id: string; module: string; action: string }; type Role = { id: string; name: string; description?: string; permissions: Permission[] }; async function loadRoleDetail(id: string) { try { const [roleRes, permsRes] = await Promise.all([ fetch(`${API}/api/admin/roles/${id}`), fetch(`${API}/api/admin/permissions`), ]); if (!roleRes.ok) return null; const role: Role = await roleRes.json(); const permsData = permsRes.ok ? await permsRes.json() : { permissions: [] }; const allPerms: Permission[] = Array.isArray(permsData) ? permsData : (permsData.permissions || []); return { role, allPerms }; } catch { return null; } } export default function RoleDetailPage() { const params = useParams(); const [data] = createResource(() => params.id, loadRoleDetail); const grouped = createMemo(() => { if (!data()?.allPerms) return {}; const map: Record = {}; (data()!.allPerms).forEach((p) => { if (!map[p.module]) map[p.module] = []; map[p.module].push(p); }); return map; }); const rolePermIds = createMemo(() => new Set((data()?.role?.permissions || []).map((p) => p.id))); const modules = createMemo(() => Object.keys(grouped()).sort()); return (

Role Details

View role information and assigned permissions.

Loading role details...

Failed to load role. Check that the backend is running.
{/* Role Info */}
{/* Permission Matrix */}
{modules().map((mod) => { const perms = grouped()[mod] || []; const actionMap: Record = {}; perms.forEach((p) => { actionMap[p.action] = p.id; }); const hasRead = !!actionMap['Read'] && rolePermIds().has(actionMap['Read']); const hasCreate = !!actionMap['Create'] && rolePermIds().has(actionMap['Create']); const hasUpdate = !!actionMap['Update'] && rolePermIds().has(actionMap['Update']); const hasDelete = !!actionMap['Delete'] && rolePermIds().has(actionMap['Delete']); const noAccess = !hasRead && !hasCreate && !hasUpdate && !hasDelete; return ( ); })}
Name of the module No Access Read Create Update Delete
No permissions defined.
{mod} {actionMap['Read'] ? : } {actionMap['Create'] ? : } {actionMap['Update'] ? : } {actionMap['Delete'] ? : }
); }