fix issues

pull/330/head
vapao 2021-04-01 11:51:51 +08:00
parent de2bfe4e2c
commit 26a38665b8
2 changed files with 9 additions and 8 deletions

View File

@ -10,21 +10,19 @@ import Sider from './Sider';
import Header from './Header'; import Header from './Header';
import Footer from './Footer' import Footer from './Footer'
import routes from '../routes'; import routes from '../routes';
import { updatePermissions, hasPermission } from 'libs'; import { hasPermission } from 'libs';
import styles from './layout.module.less'; import styles from './layout.module.less';
function initRoutes(routes) { function initRoutes(Routes, routes) {
const Routes = [];
for (let route of routes) { for (let route of routes) {
if (route.component) { if (route.component) {
if (!route.auth || hasPermission(route.auth)) { if (!route.auth || hasPermission(route.auth)) {
Routes.push(<Route exact key={route.path} path={route.path} component={route.component}/>) Routes.push(<Route exact key={route.path} path={route.path} component={route.component}/>)
} }
} else if (route.child) { } else if (route.child) {
initRoutes(route.child) initRoutes(Routes, route.child)
} }
} }
return Routes
} }
// 404 // 404
@ -47,8 +45,9 @@ export default function () {
const [Routes, setRoutes] = useState([]); const [Routes, setRoutes] = useState([]);
useEffect(() => { useEffect(() => {
updatePermissions(); const Routes = [];
setRoutes(initRoutes(routes)); initRoutes(Routes, routes);
setRoutes(Routes)
}, []) }, [])
return ( return (

View File

@ -4,6 +4,7 @@
* Released under the AGPL-3.0 License. * Released under the AGPL-3.0 License.
*/ */
let Permission = { let Permission = {
isReady: false,
isSuper: false, isSuper: false,
hostPerms: [], hostPerms: [],
permissions: [] permissions: []
@ -13,6 +14,7 @@ export let X_TOKEN;
export function updatePermissions() { export function updatePermissions() {
X_TOKEN = localStorage.getItem('token'); X_TOKEN = localStorage.getItem('token');
Permission.isReady = true;
Permission.isSuper = localStorage.getItem('is_supper') === 'true'; Permission.isSuper = localStorage.getItem('is_supper') === 'true';
Permission.hostPerms = JSON.parse(localStorage.getItem('host_perms') || '[]'); Permission.hostPerms = JSON.parse(localStorage.getItem('host_perms') || '[]');
Permission.permissions = JSON.parse(localStorage.getItem('permissions') || '[]'); Permission.permissions = JSON.parse(localStorage.getItem('permissions') || '[]');
@ -20,8 +22,8 @@ export function updatePermissions() {
// 前端页面的权限判断(仅作为前端功能展示的控制,具体权限控制应在后端实现) // 前端页面的权限判断(仅作为前端功能展示的控制,具体权限控制应在后端实现)
export function hasPermission(strCode) { export function hasPermission(strCode) {
if (!Permission.isReady) updatePermissions();
const {isSuper, permissions} = Permission; const {isSuper, permissions} = Permission;
// console.log(isSuper, strCode, permissions);
if (!strCode || isSuper) return true; if (!strCode || isSuper) return true;
for (let or_item of strCode.split('|')) { for (let or_item of strCode.split('|')) {
if (isSubArray(permissions, or_item.split('&'))) { if (isSubArray(permissions, or_item.split('&'))) {