[AURORA-1698] - Справочник ГСК/ГСЗ: пункт «Удалить» виден пользователям без права удаления:
- добавлена проверка наличия права DIRECTORY_DELETE
This commit is contained in:
parent
371c38c17c
commit
2e6e661575
@ -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';
|
||||||
|
|||||||
@ -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 (
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user