diff --git a/console-ui/src/locales/en-US.js b/console-ui/src/locales/en-US.js index 941cf8ef25a..3bef793c3b7 100644 --- a/console-ui/src/locales/en-US.js +++ b/console-ui/src/locales/en-US.js @@ -673,6 +673,7 @@ const I18N_CONF = { defaultFuzzyd: 'Default fuzzy query mode opened', fuzzyd: "Add wildcard '*' for fuzzy query", query: 'Search', + checkPermission: 'This role permission already exists!', }, NewPermissions: { addPermission: 'Add Permission', diff --git a/console-ui/src/locales/zh-CN.js b/console-ui/src/locales/zh-CN.js index 9c75b6595f3..675d4dbbc82 100644 --- a/console-ui/src/locales/zh-CN.js +++ b/console-ui/src/locales/zh-CN.js @@ -668,6 +668,7 @@ const I18N_CONF = { defaultFuzzyd: '已开启默认模糊查询', fuzzyd: "添加通配符'*'进行模糊查询", query: '查询', + checkPermission: '此角色权限已存在!', }, NewPermissions: { addPermission: '添加权限', diff --git a/console-ui/src/pages/AuthorityControl/PermissionsManagement/PermissionsManagement.js b/console-ui/src/pages/AuthorityControl/PermissionsManagement/PermissionsManagement.js index 74c1a71a56d..ebe5c3091a7 100644 --- a/console-ui/src/pages/AuthorityControl/PermissionsManagement/PermissionsManagement.js +++ b/console-ui/src/pages/AuthorityControl/PermissionsManagement/PermissionsManagement.js @@ -25,9 +25,15 @@ import { Form, Input, Switch, + Message, } from '@alifd/next'; import { connect } from 'react-redux'; -import { getPermissions, createPermission, deletePermission } from '../../../reducers/authority'; +import { + getPermissions, + checkPermission, + createPermission, + deletePermission, +} from '../../../reducers/authority'; import { getNamespaces } from '../../../reducers/namespace'; import RegionGroup from '../../../components/RegionGroup'; import NewPermissions from './NewPermissions'; @@ -217,9 +223,17 @@ class PermissionsManagement extends React.Component { - createPermission(permission).then(res => { - this.setState({ pageNo: 1 }, () => this.getPermissions()); - return res; + checkPermission(permission).then(res => { + if (res) { + Message.error({ + content: locale.checkPermission, + }); + } else { + createPermission(permission).then(res => { + this.setState({ pageNo: 1 }, () => this.getPermissions()); + return res; + }); + } }) } onCancel={() => this.colseCreatePermission()} diff --git a/console-ui/src/reducers/authority.js b/console-ui/src/reducers/authority.js index e52d30ba916..8606029fae4 100644 --- a/console-ui/src/reducers/authority.js +++ b/console-ui/src/reducers/authority.js @@ -119,6 +119,15 @@ const getPermissions = params => dispatch => .get('v1/auth/permissions', { params }) .then(data => dispatch({ type: PERMISSIONS_LIST, data })); +/** + * 添加权限前置校验 + * @param {*} param0 + */ +const checkPermission = ([role, resource, action]) => { + const params = { role, resource, action }; + return request.get('v1/auth/permissions', { params }).then(res => res.data); +}; + /** * 给角色添加权限 * @param {*} param0 @@ -157,6 +166,7 @@ export { createRole, deleteRole, getPermissions, + checkPermission, createPermission, deletePermission, };