import { Result, Tabs } from 'antd'; import { useCurrentUser } from '../auth/MeContext'; import { USERS_ADMIN } from '../auth/permissions'; import { PermissionMatrix } from '../widgets/Admin/PermissionMatrix'; import { UsersTable } from '../widgets/Admin/UsersTable'; /** * Экран администратора `/admin`: пользователи и роли, матрица прав. * * Профиль берём из `AuthGate` (`useCurrentUser`), а не новым запросом `/me`. Без права `USERS_ADMIN` таблицы даже не * создаются — значит, их эффекты не запускаются и запросов к `/admin/*` нет. Проверка здесь — только удобство * интерфейса: доступ на самом деле решает сервер (403 на `/admin/*` без права). */ export function Admin() { const me = useCurrentUser(); if (!me.permissions.includes(USERS_ADMIN)) { return ; } return (
{/* вкладка «Матрица прав» создаётся (и грузит данные) только при первом открытии */} }, { key: 'matrix', label: 'Матрица прав', children: }, ]} />
); }