diff --git a/src/pages/model-access/config/index.ts b/src/pages/model-access/config/index.ts
index a26b6a89..1a7924a2 100644
--- a/src/pages/model-access/config/index.ts
+++ b/src/pages/model-access/config/index.ts
@@ -65,6 +65,11 @@ export const rowActionList = [
label: 'common.button.edit',
icon: icons.EditOutlined
},
+ {
+ label: 'models.button.accessSettings',
+ key: 'accessControl',
+ icon: icons.Permission
+ },
{
key: 'delete',
label: 'common.button.delete',
diff --git a/src/pages/model-access/hooks/use-access-control.ts b/src/pages/model-access/hooks/use-access-control.ts
new file mode 100644
index 00000000..73c89d65
--- /dev/null
+++ b/src/pages/model-access/hooks/use-access-control.ts
@@ -0,0 +1,49 @@
+import { PageAction } from '@/config';
+import { PageActionType } from '@/config/types';
+import { useState } from 'react';
+import { AccessItem as ListItem } from '../config/types';
+
+const useAccessControl = () => {
+ const [openModalStatus, setOpenModalStatus] = useState<{
+ open: boolean;
+ action: PageActionType;
+ currentData?: ListItem;
+ title: string;
+ }>({
+ open: false,
+ action: PageAction.CREATE,
+ currentData: undefined,
+ title: ''
+ });
+
+ const openModal = (
+ action: PageActionType,
+ title: string,
+ currentData?: ListItem
+ ) => {
+ setOpenModalStatus({
+ open: true,
+ action,
+ currentData,
+ title: title
+ });
+ };
+
+ const closeModal = () => {
+ setOpenModalStatus({
+ open: false,
+ action: PageAction.CREATE,
+ currentData: undefined,
+ title: ''
+ });
+ };
+
+ return {
+ openAccessControlModalStatus: openModalStatus,
+ setOpenAccessControlModalStatus: setOpenModalStatus,
+ openAccessControlModal: openModal,
+ closeAccessControlModal: closeModal
+ };
+};
+
+export default useAccessControl;
diff --git a/src/pages/model-access/index.tsx b/src/pages/model-access/index.tsx
index 1d4556ec..2d38fc6e 100644
--- a/src/pages/model-access/index.tsx
+++ b/src/pages/model-access/index.tsx
@@ -17,6 +17,7 @@ import { useAtom } from 'jotai';
import _ from 'lodash';
import NoResult from '../_components/no-result';
import PageBox from '../_components/page-box';
+import AccessControlModal from '../llmodels/components/access-control-modal';
import {
ACCESS_API,
ACCESS_POINTS_API,
@@ -30,6 +31,7 @@ import { maasProviderOptions } from './config';
import { mockDataList } from './config/mock';
import { FormData, AccessItem as ListItem } from './config/types';
import useAccessColumns from './hooks/use-access-columns';
+import useAccessControl from './hooks/use-access-control';
import useCreateAccess from './hooks/use-create-access';
const Accesses: React.FC = () => {
@@ -59,6 +61,11 @@ const Accesses: React.FC = () => {
const intl = useIntl();
const { openAccessModalStatus, openAccessModal, closeAccessModal } =
useCreateAccess();
+ const {
+ openAccessControlModal,
+ closeAccessControlModal,
+ openAccessControlModalStatus
+ } = useAccessControl();
const handleClickDropdown = () => {
openAccessModal(
@@ -105,6 +112,12 @@ const Accesses: React.FC = () => {
handleEditProvider(row);
} else if (val === 'delete') {
handleDelete({ ...row, name: row.name });
+ } else if (val === 'accessControl') {
+ openAccessControlModal(
+ PageAction.EDIT,
+ intl.formatMessage({ id: 'models.button.accessSettings' }),
+ row
+ );
}
});
@@ -239,6 +252,13 @@ const Accesses: React.FC = () => {
onCancel={handleModalCancel}
onOk={handleModalOk}
>
+
>
);