Merge pull request '[AURORA-1698] - Справочник ГСК/ГСЗ: пункт «Удалить» виден пользователям без права удаления:' (#232) from fix/1698-delete-btn into main

This commit is contained in:
aep 2026-11-10 12:14:39 +03:00
commit 3a89812048
2 changed files with 13 additions and 6 deletions

View File

@ -2,5 +2,7 @@
// проверки на клиенте только прячут то, что пользователю всё равно не разрешат. // проверки на клиенте только прячут то, что пользователю всё равно не разрешат.
export const USERS_ADMIN = 'USERS_ADMIN'; export const USERS_ADMIN = 'USERS_ADMIN';
export const DIRECTORY_ADMIN = 'DIRECTORY_ADMIN'; export const DIRECTORY_ADMIN = 'DIRECTORY_ADMIN';
// Удаление ГСК/ГСЗ
export const DIRECTORY_DELETE = 'DIRECTORY_DELETE';
// Экран «Качество первички» (метрики качества распознавания). // Экран «Качество первички» (метрики качества распознавания).
export const QUALITY_METRICS_VIEW = 'QUALITY_METRICS_VIEW'; export const QUALITY_METRICS_VIEW = 'QUALITY_METRICS_VIEW';

View File

@ -1,8 +1,10 @@
import { DeleteOutlined, EditOutlined, EllipsisOutlined } from '@ant-design/icons'; 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 { ColumnsType } from 'antd/es/table';
import { type ReactNode, useMemo, useState } from 'react'; import { type ReactNode, useMemo, useState } from 'react';
import { ApiError } from '../../../api/client'; 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 { ColumnSettings, DataTable, useFilteredRows, useVisibleColumns } from '../../../components/GenericTable';
import { useTableFilters } from '../../../components/GenericTable/useTableFilters'; import { useTableFilters } from '../../../components/GenericTable/useTableFilters';
import { deleteRelatedGroup, editRelatedGroup } from '../../../services/api/directories/related-groups'; import { deleteRelatedGroup, editRelatedGroup } from '../../../services/api/directories/related-groups';
@ -23,6 +25,7 @@ interface RelatedGroupTableI {
export function RelatedGroupTable({ tabsComponent, data, loading, getData, activeTab }: RelatedGroupTableI) { export function RelatedGroupTable({ tabsComponent, data, loading, getData, activeTab }: RelatedGroupTableI) {
const notification = useNotificationApi(); const notification = useNotificationApi();
const canDelete = useCurrentUser().permissions.includes(DIRECTORY_DELETE);
const [editFormOpen, setEditFormOpen] = useState(false); const [editFormOpen, setEditFormOpen] = useState(false);
const [deleteModalOpen, setDeleteModalOpen] = useState(false); const [deleteModalOpen, setDeleteModalOpen] = useState(false);
@ -74,7 +77,7 @@ export function RelatedGroupTable({ tabsComponent, data, loading, getData, activ
title: '', title: '',
width: 30, width: 30,
render: (_: unknown, row: RelatedGroupOut) => { render: (_: unknown, row: RelatedGroupOut) => {
const items = [ const items: MenuProps['items'] = [
{ {
key: 'edit', key: 'edit',
icon: <EditOutlined />, icon: <EditOutlined />,
@ -84,7 +87,9 @@ export function RelatedGroupTable({ tabsComponent, data, loading, getData, activ
setEditFormOpen(true); setEditFormOpen(true);
}, },
}, },
{ ];
if (canDelete) {
items.push({
key: 'delete', key: 'delete',
icon: <DeleteOutlined />, icon: <DeleteOutlined />,
label: 'Удалить', label: 'Удалить',
@ -93,8 +98,8 @@ export function RelatedGroupTable({ tabsComponent, data, loading, getData, activ
setGroupId(row.id); setGroupId(row.id);
setDeleteModalOpen(true); setDeleteModalOpen(true);
}, },
}, });
]; }
return ( return (
<Dropdown menu={{ items }} trigger={['click']}> <Dropdown menu={{ items }} trigger={['click']}>
<Button type='default' style={{ width: '32px' }}> <Button type='default' style={{ width: '32px' }}>
@ -105,7 +110,7 @@ export function RelatedGroupTable({ tabsComponent, data, loading, getData, activ
}, },
}, },
], ],
[], [canDelete],
); );
return ( return (