Skip to content

Commit

Permalink
Registry Authority Control (DataLinkDC#2294)
Browse files Browse the repository at this point in the history
* feat: use-service hooks

* feat: 注册中心权限控制

* feat: 维护数据库脚本
  • Loading branch information
yqwoe authored Sep 6, 2023
1 parent 24d5e41 commit e7fc3b3
Show file tree
Hide file tree
Showing 16 changed files with 1,135 additions and 856 deletions.
978 changes: 515 additions & 463 deletions dinky-admin/src/main/resources/db/db-h2.sql

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dinky-web/src/pages/Other/Login/function.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export const gotoRedirectUrl = () => {
if (!history) return;
setTimeout(() => {
const urlParams = new URL(window.location.href).searchParams;
window.location.href = urlParams.get('redirect') || '/';
history.replace(urlParams.get('redirect') || '/');
}, 10);
};

Expand Down
47 changes: 27 additions & 20 deletions dinky-web/src/pages/RegCenter/Alert/AlertGroup/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

import Pop from '@/components/Animation/Pop';
import { DangerDeleteIcon } from '@/components/Icons/CustomIcons';
import { Authorized } from '@/hooks/useAccess';
import AlertGroupForm from '@/pages/RegCenter/Alert/AlertGroup/components/AlertGroupForm';
import { getAlertIcon } from '@/pages/RegCenter/Alert/AlertInstance/function';
import { ALERT_MODEL_ASYNC } from '@/pages/RegCenter/Alert/AlertInstance/model';
Expand Down Expand Up @@ -138,13 +139,15 @@ const AlertGroupTableList: React.FC = (props: any) => {
*/
const renderToolBar = () => {
return () => [
<Button
key={'CreateAlertGroup'}
type='primary'
onClick={() => setAlertGroupState((prevState) => ({ ...prevState, addedOpen: true }))}
>
<PlusOutlined /> {l('button.create')}
</Button>
<Authorized key='create' path='/registration/alert/group/new'>
<Button
key={'CreateAlertGroup'}
type='primary'
onClick={() => setAlertGroupState((prevState) => ({ ...prevState, addedOpen: true }))}
>
<PlusOutlined /> {l('button.create')}
</Button>
</Authorized>
];
};

Expand All @@ -166,19 +169,23 @@ const AlertGroupTableList: React.FC = (props: any) => {
*/
const renderAlertGroupActionButton = (item: Alert.AlertGroup) => {
return [
<Button
className={'options-button'}
key={'AlertGroupEdit'}
icon={<EditTwoTone />}
title={l('button.edit')}
onClick={() => editClick(item)}
/>,
<Button
className={'options-button'}
key={'DeleteAlertGroupIcon'}
icon={<DangerDeleteIcon />}
onClick={() => handleDeleteSubmit(item.id)}
/>
<Authorized key={item.id} path='/registration/alert/group/edit'>
<Button
className={'options-button'}
key={'AlertGroupEdit'}
icon={<EditTwoTone />}
title={l('button.edit')}
onClick={() => editClick(item)}
/>
</Authorized>,
<Authorized key={item.id} path='/registration/alert/group/delete'>
<Button
className={'options-button'}
key={'DeleteAlertGroupIcon'}
icon={<DangerDeleteIcon />}
onClick={() => handleDeleteSubmit(item.id)}
/>
</Authorized>
];
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

import { CreateBtn } from '@/components/CallBackButton/CreateBtn';
import { DangerDeleteIcon } from '@/components/Icons/CustomIcons';
import { Authorized } from '@/hooks/useAccess';
import {
getAlertIcon,
getJSONData,
Expand Down Expand Up @@ -142,19 +143,23 @@ const AlertInstanceList: React.FC = () => {
*/
const renderAlertInstanceActionButton = (item: Alert.AlertInstance) => {
return [
<Button
className={'options-button'}
key={'AlertInstanceEdit'}
icon={<EditTwoTone />}
title={l('button.edit')}
onClick={() => editClick(item)}
/>,
<Button
className={'options-button'}
key={'DeleteAlertInstanceIcon'}
icon={<DangerDeleteIcon />}
onClick={() => handleDeleteSubmit(item.id)}
/>
<Authorized key={item.id} path='/registration/alert/instance/edit'>
<Button
className={'options-button'}
key={'AlertInstanceEdit'}
icon={<EditTwoTone />}
title={l('button.edit')}
onClick={() => editClick(item)}
/>
</Authorized>,
<Authorized key={item.id} path='/registration/alert/instance/delete'>
<Button
className={'options-button'}
key={'DeleteAlertInstanceIcon'}
icon={<DangerDeleteIcon />}
onClick={() => handleDeleteSubmit(item.id)}
/>
</Authorized>
];
};

Expand Down Expand Up @@ -199,10 +204,12 @@ const AlertInstanceList: React.FC = () => {
*/
const renderToolBar = () => {
return () => [
<CreateBtn
key={'CreateAlertInstanceBtn'}
onClick={() => setAlertInstanceState((prevState) => ({ ...prevState, addedOpen: true }))}
/>
<Authorized key='create' path='/registration/alert/instance/new'>
<CreateBtn
key={'CreateAlertInstanceBtn'}
onClick={() => setAlertInstanceState((prevState) => ({ ...prevState, addedOpen: true }))}
/>
</Authorized>
];
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import { NormalDeleteBtn } from '@/components/CallBackButton/NormalDeleteBtn';
import { RunningBtn } from '@/components/CallBackButton/RunningBtn';
import { ClusterConfigIcon } from '@/components/Icons/HomeIcon';
import { DataAction } from '@/components/StyledComponents';
import { Authorized } from '@/hooks/useAccess';
import { imgStyle } from '@/pages/Home/constants';
import ConfigurationModal from '@/pages/RegCenter/Cluster/Configuration/components/ConfigurationModal';
import { CLUSTER_CONFIG_TYPE } from '@/pages/RegCenter/Cluster/Configuration/components/contants';
Expand Down Expand Up @@ -194,8 +195,8 @@ export default () => {
*/
const renderDataActionButton = (item: Cluster.Config) => {
return [
<EditBtn key={`${item.id}_edit`} onClick={() => editClick(item)} />,
<NormalDeleteBtn key={`${item.id}_delete`} onClick={() => handleDeleteSubmit(item.id)} />,
<Authorized key={`${item.id}_edit`} path="/registration/cluster/config/edit"><EditBtn key={`${item.id}_edit`} onClick={() => editClick(item)} /></Authorized>,
<Authorized key={`${item.id}_delete`} path="/registration/cluster/config/delete"><NormalDeleteBtn key={`${item.id}_delete`} onClick={() => handleDeleteSubmit(item.id)} /></Authorized>,
<RunningBtn
key={`${item.id}_running`}
title={l('rc.cc.start')}
Expand Down Expand Up @@ -249,10 +250,12 @@ export default () => {
* tool bar render
*/
const toolBarRender = () => [
<CreateBtn
key={'configcreate'}
onClick={() => setClusterConfigState((prevState) => ({ ...prevState, addedOpen: true }))}
/>
<Authorized key='new' path='/registration/cluster/config/new'>
<CreateBtn
key={'configcreate'}
onClick={() => setClusterConfigState((prevState) => ({ ...prevState, addedOpen: true }))}
/>
</Authorized>
];

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import { CreateBtn } from '@/components/CallBackButton/CreateBtn';
import { EditBtn } from '@/components/CallBackButton/EditBtn';
import { EnableSwitchBtn } from '@/components/CallBackButton/EnableSwitchBtn';
import { PopconfirmDeleteBtn } from '@/components/CallBackButton/PopconfirmDeleteBtn';
import { Authorized } from '@/hooks/useAccess';
import { CLUSTER_INSTANCE_STATUS_ENUM } from '@/pages/RegCenter/Cluster/Instance/components/contants';
import { renderWebUiRedirect } from '@/pages/RegCenter/Cluster/Instance/components/function';
import InstanceModal from '@/pages/RegCenter/Cluster/Instance/components/InstanceModal';
Expand Down Expand Up @@ -225,12 +226,16 @@ export default () => {
valueType: 'option',
width: '8vw',
render: (_: any, record: Cluster.Instance) => [
<EditBtn key={`${record.id}_edit`} onClick={() => handleEdit(record)} />,
<PopconfirmDeleteBtn
key={`${record.id}_delete`}
onClick={() => handleDelete(record.id)}
description={l('rc.ci.deleteConfirm')}
/>,
<Authorized key={`${record.id}_edit`} path='/registration/cluster/instance/edit'>
<EditBtn key={`${record.id}_edit`} onClick={() => handleEdit(record)} />
</Authorized>,
<Authorized key={`${record.id}_delete`} path='/registration/cluster/instance/delete'>
<PopconfirmDeleteBtn
key={`${record.id}_delete`}
onClick={() => handleDelete(record.id)}
description={l('rc.ci.deleteConfirm')}
/>
</Authorized>,
renderWebUiRedirect(record)
]
}
Expand All @@ -240,10 +245,12 @@ export default () => {
* tool bar render
*/
const toolBarRender = () => [
<CreateBtn
key={'instancecreate'}
onClick={() => setClusterInstanceStatus((prevState) => ({ ...prevState, addedOpen: true }))}
/>,
<Authorized key='/registration/cluster/instance/new' path='/registration/cluster/instance/new'>
<CreateBtn
key={'instancecreate'}
onClick={() => setClusterInstanceStatus((prevState) => ({ ...prevState, addedOpen: true }))}
/>
</Authorized>,
<Button
key={'heartbeat_all'}
type={'primary'}
Expand All @@ -252,16 +259,21 @@ export default () => {
>
{l('button.heartbeat')}
</Button>,
<Popconfirm
key={'recycle'}
title={l('rc.ci.recycle')}
description={l('rc.ci.recycleConfirm')}
onConfirm={handleRecycle}
<Authorized
key='/registration/cluster/instance/recovery'
path='/registration/cluster/instance/recovery'
>
<Button key={'recycle_btn'} type={'primary'} icon={<ClearOutlined />}>
{l('button.recycle')}
</Button>
</Popconfirm>
<Popconfirm
key={'recycle'}
title={l('rc.ci.recycle')}
description={l('rc.ci.recycleConfirm')}
onConfirm={handleRecycle}
>
<Button key={'recycle_btn'} type={'primary'} icon={<ClearOutlined />}>
{l('button.recycle')}
</Button>
</Popconfirm>
</Authorized>
];

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import { EditBtn } from '@/components/CallBackButton/EditBtn';
import { EnableSwitchBtn } from '@/components/CallBackButton/EnableSwitchBtn';
import { NormalDeleteBtn } from '@/components/CallBackButton/NormalDeleteBtn';
import { DataAction } from '@/components/StyledComponents';
import { Authorized } from '@/hooks/useAccess';
import { StateType, STUDIO_MODEL } from '@/pages/DataStudio/model';
import DataSourceDetail from '@/pages/RegCenter/DataSource/components/DataSourceDetail';
import { renderDBIcon } from '@/pages/RegCenter/DataSource/components/function';
Expand Down Expand Up @@ -204,8 +205,8 @@ const DataSourceTable: React.FC<connect & StateType> = (props) => {
*/
const renderDataSourceActionButton = (item: DataSources.DataSource) => {
return [
<EditBtn key={`${item.id}_edit`} onClick={() => editClick(item)} />,
<NormalDeleteBtn key={`${item.id}_delete`} onClick={() => handleDeleteSubmit(item.id)} />,
<Authorized key={`${item.id}_edit`} path="/registration/database/new"><EditBtn key={`${item.id}_edit`} onClick={() => editClick(item)} /></Authorized>,
<Authorized key={`${item.id}_delete`} path="/registration/database/delete"><NormalDeleteBtn key={`${item.id}_delete`} onClick={() => handleDeleteSubmit(item.id)} /></Authorized>,
<Button
className={'options-button'}
key={`${item.id}_heart`}
Expand Down Expand Up @@ -278,7 +279,9 @@ const DataSourceTable: React.FC<connect & StateType> = (props) => {
actionRef={actionRef}
headerTitle={l('rc.ds.management')}
toolBarRender={() => [
<CreateBtn key={'CreateBtn'} onClick={() => setModalVisible(true)} />
<Authorized key='create' path='/registration/database/new'>
<CreateBtn key={'CreateBtn'} onClick={() => setModalVisible(true)} />
</Authorized>
]}
dataSource={renderDataSource}
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import { EditBtn } from '@/components/CallBackButton/EditBtn';
import { EnableSwitchBtn } from '@/components/CallBackButton/EnableSwitchBtn';
import { PopconfirmDeleteBtn } from '@/components/CallBackButton/PopconfirmDeleteBtn';
import CodeShow from '@/components/CustomEditor/CodeShow';
import { Authorized } from '@/hooks/useAccess';
import DocumentDrawer from '@/pages/RegCenter/Document/components/DocumentDrawer';
import DocumentModalForm from '@/pages/RegCenter/Document/components/DocumentModal';
import {
Expand Down Expand Up @@ -169,12 +170,14 @@ const DocumentTableList: React.FC = () => {
valueEnum: STATUS_ENUM(),
render: (_, record) => {
return (
<EnableSwitchBtn
key={`${record.id}_enable`}
disabled={documentState.drawerOpen}
record={record}
onChange={() => handleChangeEnable(record)}
/>
<Authorized key={record.id} path='/registration/document/enable'>
<EnableSwitchBtn
key={`${record.id}_enable`}
disabled={documentState.drawerOpen}
record={record}
onChange={() => handleChangeEnable(record)}
/>
</Authorized>
);
}
},
Expand All @@ -199,12 +202,16 @@ const DocumentTableList: React.FC = () => {
valueType: 'option',
width: '10vh',
render: (_, record) => [
<EditBtn key={`${record.id}_edit`} onClick={() => handleClickEdit(record)} />,
<PopconfirmDeleteBtn
key={`${record.id}_delete`}
onClick={() => handleDeleteSubmit(record.id)}
description={l('rc.doc.deleteConfirm')}
/>
<Authorized key={`${record.id}_edit`} path='/registration/document/edit'>
<EditBtn key={`${record.id}_edit`} onClick={() => handleClickEdit(record)} />
</Authorized>,
<Authorized key={`${record.id}_delete`} path='/registration/document/delete'>
<PopconfirmDeleteBtn
key={`${record.id}_delete`}
onClick={() => handleDeleteSubmit(record.id)}
description={l('rc.doc.deleteConfirm')}
/>
</Authorized>
]
}
];
Expand All @@ -218,15 +225,17 @@ const DocumentTableList: React.FC = () => {
headerTitle={l('rc.doc.management')}
actionRef={actionRef}
toolBarRender={() => [
<CreateBtn
key={'doctable'}
onClick={() =>
setDocumentState((prevState) => ({
...prevState,
addedOpen: true
}))
}
/>
<Authorized key='create' path='/registration/document/new'>
<CreateBtn
key={'doctable'}
onClick={() =>
setDocumentState((prevState) => ({
...prevState,
addedOpen: true
}))
}
/>
</Authorized>
]}
request={(params, sorter, filter: any) =>
queryList(API_CONSTANTS.DOCUMENT, { ...params, sorter, filter })
Expand Down
Loading

0 comments on commit e7fc3b3

Please sign in to comment.