diff --git a/web/src/auth/permissions.ts b/web/src/auth/permissions.ts
index bc9d72a..e55e99e 100644
--- a/web/src/auth/permissions.ts
+++ b/web/src/auth/permissions.ts
@@ -2,5 +2,7 @@
// проверки на клиенте только прячут то, что пользователю всё равно не разрешат.
export const USERS_ADMIN = 'USERS_ADMIN';
export const DIRECTORY_ADMIN = 'DIRECTORY_ADMIN';
+// Удаление ГСК/ГСЗ
+export const DIRECTORY_DELETE = 'DIRECTORY_DELETE';
// Экран «Качество первички» (метрики качества распознавания).
export const QUALITY_METRICS_VIEW = 'QUALITY_METRICS_VIEW';
diff --git a/web/src/widgets/RelatedGroup/RelatedGroupTable/RelatedGroupTable.tsx b/web/src/widgets/RelatedGroup/RelatedGroupTable/RelatedGroupTable.tsx
index 1c45a40..fd00658 100644
--- a/web/src/widgets/RelatedGroup/RelatedGroupTable/RelatedGroupTable.tsx
+++ b/web/src/widgets/RelatedGroup/RelatedGroupTable/RelatedGroupTable.tsx
@@ -1,8 +1,10 @@
import { DeleteOutlined, EditOutlined, EllipsisOutlined } from '@ant-design/icons';
-import { Button, Dropdown, Space } from 'antd';
+import { Button, Dropdown, type MenuProps, Space } from 'antd';
import type { ColumnsType } from 'antd/es/table';
import { type ReactNode, useMemo, useState } from 'react';
import { ApiError } from '../../../api/client';
+import { useCurrentUser } from '../../../auth/MeContext';
+import { DIRECTORY_DELETE } from '../../../auth/permissions';
import { ColumnSettings, DataTable, useFilteredRows, useVisibleColumns } from '../../../components/GenericTable';
import { useTableFilters } from '../../../components/GenericTable/useTableFilters';
import { deleteRelatedGroup, editRelatedGroup } from '../../../services/api/directories/related-groups';
@@ -23,6 +25,7 @@ interface RelatedGroupTableI {
export function RelatedGroupTable({ tabsComponent, data, loading, getData, activeTab }: RelatedGroupTableI) {
const notification = useNotificationApi();
+ const canDelete = useCurrentUser().permissions.includes(DIRECTORY_DELETE);
const [editFormOpen, setEditFormOpen] = useState(false);
const [deleteModalOpen, setDeleteModalOpen] = useState(false);
@@ -74,7 +77,7 @@ export function RelatedGroupTable({ tabsComponent, data, loading, getData, activ
title: '',
width: 30,
render: (_: unknown, row: RelatedGroupOut) => {
- const items = [
+ const items: MenuProps['items'] = [
{
key: 'edit',
icon: ,
@@ -84,7 +87,9 @@ export function RelatedGroupTable({ tabsComponent, data, loading, getData, activ
setEditFormOpen(true);
},
},
- {
+ ];
+ if (canDelete) {
+ items.push({
key: 'delete',
icon: ,
label: 'Удалить',
@@ -93,8 +98,8 @@ export function RelatedGroupTable({ tabsComponent, data, loading, getData, activ
setGroupId(row.id);
setDeleteModalOpen(true);
},
- },
- ];
+ });
+ }
return (