Merge remote-tracking branch 'origin/main'

feature/pivot
Lei OT 2 years ago
commit 1a864c00a8

12
package-lock.json generated

@ -7283,9 +7283,9 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001458",
"resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001458.tgz",
"integrity": "sha512-lQ1VlUUq5q9ro9X+5gOEyH7i3vm+AYVT1WDCVB69XOZ17KZRhnZ9J0Sqz7wTHQaLBJccNCHq8/Ww5LlOIZbB0w=="
"version": "1.0.30001553",
"resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001553.tgz",
"integrity": "sha512-N0ttd6TrFfuqKNi+pMgWJTb9qrdJu4JSpgPFLe/lrD19ugC6fZgF0pUewRowDwzdDnb9V41mFcdlYgl/PyKf4A=="
},
"node_modules/case-sensitive-paths-webpack-plugin": {
"version": "2.4.0",
@ -26806,9 +26806,9 @@
}
},
"caniuse-lite": {
"version": "1.0.30001458",
"resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001458.tgz",
"integrity": "sha512-lQ1VlUUq5q9ro9X+5gOEyH7i3vm+AYVT1WDCVB69XOZ17KZRhnZ9J0Sqz7wTHQaLBJccNCHq8/Ww5LlOIZbB0w=="
"version": "1.0.30001553",
"resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001553.tgz",
"integrity": "sha512-N0ttd6TrFfuqKNi+pMgWJTb9qrdJu4JSpgPFLe/lrD19ugC6fZgF0pUewRowDwzdDnb9V41mFcdlYgl/PyKf4A=="
},
"case-sensitive-paths-webpack-plugin": {
"version": "2.4.0",

@ -1,59 +1,59 @@
import { makeAutoObservable, runInAction } from "mobx";
import * as dd from "dingtalk-jsapi";
import * as config from "../config";
import { makeAutoObservable, runInAction } from 'mobx';
import * as dd from 'dingtalk-jsapi';
import * as config from '../config';
// 权限管理
class AuthStore {
constructor(rootStore) {
this.rootStore = rootStore;
makeAutoObservable(this);
if (process.env.NODE_ENV == "production") {
this.get_auth(); // 放到钉钉环境才能开启
}
}
constructor(rootStore) {
this.rootStore = rootStore;
makeAutoObservable(this);
if (process.env.NODE_ENV === 'production') {
this.get_auth(); // 放到钉钉环境才能开启
}
}
auth = ["admin"]; // 开发时候用,正式环境留空
user = { name: "loading", userid: "..." }; // 开发时候用,正式环境留空
auth = process.env.NODE_ENV === 'production' ? [] : ['admin']; // 开发时候用,正式环境留空
user = { name: 'loading', userid: '...' }; // 开发时候用,正式环境留空
has_permission(requireds) {
if (Object.keys(requireds).length == 0) {
return true;
}
const has_permission = requireds.filter(item => this.auth.includes(item));
if (Object.keys(has_permission).length !== 0) {
return true;
}
return false;
}
has_permission(requireds) {
if (Object.keys(requireds).length === 0) {
return true;
}
const has_permission = requireds.filter((item) => this.auth.includes(item));
if (Object.keys(has_permission).length !== 0) {
return true;
}
return false;
}
// 请求权限
get_auth() {
const _this = this;
const CORPID = "ding48bce8fd3957c96b"; // 企业的id
dd.runtime.permission.requestAuthCode({
corpId: CORPID,
onSuccess: function (res) {
console.log(res);
const code = res.code;
const url = "/dingtalk/dingtalkwork/Getusers_auth?code=" + code;
// 请求获取HT接口获取用户权限和用户信息
fetch(config.HT_HOST + url)
.then(response => response.json())
.then(json => {
runInAction(() => {
_this.user = json.result;
_this.auth = json.result.authlist;
});
})
.catch(error => {
console.log("fetch data failed", error);
});
},
onFail: function (err) {
console.log(err);
},
});
}
// 请求权限
get_auth() {
const _this = this;
const CORPID = 'ding48bce8fd3957c96b'; // 企业的id
dd.runtime.permission.requestAuthCode({
corpId: CORPID,
onSuccess: function (res) {
console.log(res);
const code = res.code;
const url = '/dingtalk/dingtalkwork/Getusers_auth?code=' + code;
// 请求获取HT接口获取用户权限和用户信息
fetch(config.HT_HOST + url)
.then((response) => response.json())
.then((json) => {
runInAction(() => {
_this.user = json.result;
_this.auth = json.result.authlist;
});
})
.catch((error) => {
console.log('fetch data failed', error);
});
},
onFail: function (err) {
console.log(err);
},
});
}
}
export default AuthStore;

@ -1,36 +1,25 @@
import React, {useContext, useEffect} from 'react';
import {Row, Col, Button, Tabs, Spin, Result, Space} from 'antd';
import {
ContainerOutlined,
SearchOutlined,
} from '@ant-design/icons';
import {stores_Context} from '../config';
import {Line} from "@ant-design/charts";
import {observer} from 'mobx-react';
import React, { useContext, useEffect } from 'react';
import { Row, Col, Button, Tabs, Spin, Result, Space } from 'antd';
import { ContainerOutlined, SearchOutlined } from '@ant-design/icons';
import { stores_Context } from '../config';
import { Line } from '@ant-design/charts';
import { observer } from 'mobx-react';
import DatePickerCharts from '../components/search/DatePickerCharts';
import {NavLink, useParams,Outlet, useOutlet, useLocation, useNavigate} from "react-router-dom";
import * as comm from "../utils/commons";
import * as config from "../config";
import { NavLink, useParams, Outlet, useOutlet, useLocation, useNavigate } from 'react-router-dom';
import * as comm from '../utils/commons';
import * as config from '../config';
const ProtectedRoute = ({auth}) => {
const {auth_store} = useContext(stores_Context);
if (auth_store.has_permission(auth)) {
return <Outlet/>;
}
return (
<div>
<Result
status="403"
title="403 权限不足"
subTitle={"试着联系一下技术,所需权限: "+auth.toString()}
extra=''
/>
</div>
);
const ProtectedRoute = ({ auth }) => {
const { auth_store } = useContext(stores_Context);
if (auth_store.has_permission(auth)) {
return <Outlet />;
}
return (
<div>
<Result status="403" title="403 权限不足" subTitle={'试着联系一下技术,所需权限: ' + auth.toString()} extra={auth_store.user.name + '(' + auth_store.user.userid + ')'} />
</div>
);
};
export default observer(ProtectedRoute);

Loading…
Cancel
Save