完善资源隔离和授权管理
This commit is contained in:
@ -25,8 +25,8 @@ import {
|
||||
MenuFoldOutlined,
|
||||
MenuUnfoldOutlined,
|
||||
SettingOutlined,
|
||||
SolutionOutlined,
|
||||
UserOutlined
|
||||
SolutionOutlined, TeamOutlined,
|
||||
UserOutlined, UserSwitchOutlined
|
||||
} from '@ant-design/icons';
|
||||
import Info from "./components/user/Info";
|
||||
import request from "./common/request";
|
||||
@ -188,11 +188,26 @@ class App extends Component {
|
||||
</Menu.Item>
|
||||
</SubMenu>
|
||||
|
||||
{/*<SubMenu key='user-team' title='用户管理' icon={<UserSwitchOutlined />}>*/}
|
||||
{/* <Menu.Item key="team" icon={<TeamOutlined />}>*/}
|
||||
{/* <Link to={'/team'}>*/}
|
||||
{/* 用户组管理*/}
|
||||
{/* </Link>*/}
|
||||
{/* </Menu.Item>*/}
|
||||
|
||||
{/* <Menu.Item key="user" icon={<UserOutlined/>}>*/}
|
||||
{/* <Link to={'/user'}>*/}
|
||||
{/* 用户管理*/}
|
||||
{/* </Link>*/}
|
||||
{/* </Menu.Item>*/}
|
||||
{/*</SubMenu>*/}
|
||||
|
||||
<Menu.Item key="user" icon={<UserOutlined/>}>
|
||||
<Link to={'/user'}>
|
||||
用户管理
|
||||
</Link>
|
||||
</Menu.Item>
|
||||
|
||||
</> : undefined
|
||||
}
|
||||
|
||||
|
@ -11,22 +11,25 @@ axios.defaults.baseURL = server;
|
||||
const handleError = (error) => {
|
||||
if ("Network Error" === error.toString()) {
|
||||
message.error('网络异常');
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
if (error.response !== undefined && error.response.status === 403) {
|
||||
if (error.response !== undefined && error.response.status === 401) {
|
||||
window.location.href = '#/login';
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
if (error.response !== undefined) {
|
||||
// message.error(error.response.data.message);
|
||||
message.error(error.response.data.message);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
const handleResult = (result) => {
|
||||
if (result['code'] === 403) {
|
||||
if (result['code'] === 401) {
|
||||
window.location.href = '#/login';
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
const request = {
|
||||
@ -37,11 +40,15 @@ const request = {
|
||||
return new Promise((resolve, reject) => {
|
||||
axios.get(url, {headers: headers})
|
||||
.then((response) => {
|
||||
handleResult(response.data);
|
||||
if (!handleResult(response.data)) {
|
||||
return;
|
||||
}
|
||||
resolve(response.data);
|
||||
})
|
||||
.catch((error) => {
|
||||
handleError(error);
|
||||
if (!handleError(error)) {
|
||||
return;
|
||||
}
|
||||
reject(error);
|
||||
});
|
||||
})
|
||||
@ -54,11 +61,15 @@ const request = {
|
||||
return new Promise((resolve, reject) => {
|
||||
axios.post(url, params, {headers: headers})
|
||||
.then((response) => {
|
||||
handleResult(response.data);
|
||||
if (!handleResult(response.data)) {
|
||||
return;
|
||||
}
|
||||
resolve(response.data);
|
||||
})
|
||||
.catch((error) => {
|
||||
handleError(error);
|
||||
if (!handleError(error)) {
|
||||
return;
|
||||
}
|
||||
reject(error);
|
||||
});
|
||||
})
|
||||
@ -71,11 +82,15 @@ const request = {
|
||||
return new Promise((resolve, reject) => {
|
||||
axios.put(url, params, {headers: headers})
|
||||
.then((response) => {
|
||||
handleResult(response.data);
|
||||
if (!handleResult(response.data)) {
|
||||
return;
|
||||
}
|
||||
resolve(response.data);
|
||||
})
|
||||
.catch((error) => {
|
||||
handleError(error);
|
||||
if (!handleError(error)) {
|
||||
return;
|
||||
}
|
||||
reject(error);
|
||||
});
|
||||
})
|
||||
@ -87,11 +102,15 @@ const request = {
|
||||
return new Promise((resolve, reject) => {
|
||||
axios.delete(url, {headers: headers})
|
||||
.then((response) => {
|
||||
handleResult(response.data);
|
||||
if (!handleResult(response.data)) {
|
||||
return;
|
||||
}
|
||||
resolve(response.data);
|
||||
})
|
||||
.catch((error) => {
|
||||
handleError(error);
|
||||
if (!handleError(error)) {
|
||||
return;
|
||||
}
|
||||
reject(error);
|
||||
});
|
||||
})
|
||||
@ -103,11 +122,15 @@ const request = {
|
||||
return new Promise((resolve, reject) => {
|
||||
axios.patch(url, params, {headers: headers})
|
||||
.then((response) => {
|
||||
handleResult(response.data);
|
||||
if (!handleResult(response.data)) {
|
||||
return;
|
||||
}
|
||||
resolve(response.data);
|
||||
})
|
||||
.catch((error) => {
|
||||
handleError(error);
|
||||
if (!handleError(error)) {
|
||||
return;
|
||||
}
|
||||
reject(error);
|
||||
});
|
||||
})
|
||||
|
@ -298,9 +298,8 @@ class OfflineSession extends Component {
|
||||
<div>
|
||||
<Button type="link" size='small'
|
||||
disabled={disabled}
|
||||
icon={<PlaySquareTwoTone twoToneColor={color}/>}
|
||||
onClick={() => this.showPlayback(record.id)}>回放</Button>
|
||||
<Button type="link" size='small' icon={<DeleteTwoTone/>} onClick={() => {
|
||||
<Button type="link" size='small' onClick={() => {
|
||||
confirm({
|
||||
title: '您确定要删除此会话吗?',
|
||||
content: '',
|
||||
|
@ -264,21 +264,21 @@ class User extends Component {
|
||||
dataIndex: 'nickname',
|
||||
key: 'nickname',
|
||||
}, {
|
||||
title: '用户角色',
|
||||
dataIndex: 'role',
|
||||
key: 'role',
|
||||
render: (role, record) => {
|
||||
title: '用户类型',
|
||||
dataIndex: 'type',
|
||||
key: 'type',
|
||||
render: (text, record) => {
|
||||
|
||||
if (role === 'user') {
|
||||
if (text === 'user') {
|
||||
return (
|
||||
<Tag>普通用户</Tag>
|
||||
);
|
||||
} else if (role === 'admin') {
|
||||
} else if (text === 'admin') {
|
||||
return (
|
||||
<Tag color="blue">管理用户</Tag>
|
||||
);
|
||||
} else {
|
||||
return role;
|
||||
return text;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -19,7 +19,7 @@ const UserModal = ({title, visible, handleOk, handleCancel, confirmLoading, mode
|
||||
form
|
||||
.validateFields()
|
||||
.then(values => {
|
||||
form.resetFields();
|
||||
// form.resetFields();
|
||||
handleOk(values);
|
||||
})
|
||||
.catch(info => {
|
||||
@ -44,7 +44,7 @@ const UserModal = ({title, visible, handleOk, handleCancel, confirmLoading, mode
|
||||
<Input placeholder="请输入用户昵称"/>
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item label="用户角色" name='role' rules={[{required: true, message: '请选择用户角色'}]}>
|
||||
<Form.Item label="用户类型" name='type' rules={[{required: true, message: '请选择用户角色'}]}>
|
||||
<Radio.Group >
|
||||
<Radio value={'user'}>普通用户</Radio>
|
||||
<Radio value={'admin'}>管理用户</Radio>
|
||||
|
@ -1,7 +0,0 @@
|
||||
import request from "../common/request";
|
||||
|
||||
const treeNodeService = {
|
||||
|
||||
|
||||
};
|
||||
export default treeNodeService;
|
@ -1,7 +1,9 @@
|
||||
import {isEmpty} from "../utils/utils";
|
||||
|
||||
export function hasPermission(owner) {
|
||||
let userJsonStr = sessionStorage.getItem('user');
|
||||
let user = JSON.parse(userJsonStr);
|
||||
if (user['role'] === 'admin') {
|
||||
if (user['type'] === 'admin') {
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -10,7 +12,9 @@ export function hasPermission(owner) {
|
||||
|
||||
export function isAdmin(){
|
||||
let userJsonStr = sessionStorage.getItem('user');
|
||||
if(isEmpty(userJsonStr)){
|
||||
return false;
|
||||
}
|
||||
let user = JSON.parse(userJsonStr);
|
||||
return user['role'] === 'admin';
|
||||
|
||||
return user['type'] === 'admin';
|
||||
}
|
Reference in New Issue
Block a user