import React, {Component} from 'react'
import {HashRouter, Switch, Route, Redirect} from 'react-router-dom'
import md5 from 'md5'
import moment from 'moment'
import asyncComponent from '@/utils/asyncComponent'
import asyncLoadComponent from '@/utils/asyncLoadComponent'
const main = asyncLoadComponent(() => import('@/views/main'))
const login = asyncLoadComponent(() => import('@/views/login'))
const NotFound = asyncComponent(() => import('@/views/404'))
const routers = [
{path: '/login', name: 'login', component: login, auth: false},
{path: '/ssologin/:param', name: 'ssologin', auth: true},
{path: '/main', name: 'main', component: main, auth: true},
{path: '/main/:param', name: 'pmain', component: main, auth: true}
]
export default class RouteConfig extends Component {
controlRoute (item, props) {
if (!item.auth) { // 不需要授权,直接跳转(登录页)
return ()
}
if (item.name === 'pmain') { // 新窗口打开,取url参数放入sessionStorage
let _param = window.atob(props.match.params.param)
let p = {}
_param.split('&').forEach(cell => {
let _cell = cell.split('=')
p[_cell[0]] = _cell[1]
})
sessionStorage.setItem('UserID', p.ud)
sessionStorage.setItem('SessionUid', p.sd)
sessionStorage.setItem('LoginUID', p.ld)
sessionStorage.setItem('User_Name', p.un)
sessionStorage.setItem('MainMenu', p.mm)
sessionStorage.setItem('SubMenu', p.sm)
sessionStorage.setItem('ThirdMenu', p.tm)
return ()
} else if (item.name === 'ssologin') {
let _param = window.atob(props.match.params.param)
let p = {}
_param.split('&').forEach(cell => {
let _cell = cell.split('=')
p[_cell[0]] = _cell[1]
})
sessionStorage.setItem('UserID', p.ud)
sessionStorage.setItem('SessionUid', p.sd)
sessionStorage.setItem('LoginUID', p.ld)
sessionStorage.setItem('User_Name', p.un)
return ()
}
let userId = sessionStorage.getItem('UserID') // 判断是否存在userid
let authCode = localStorage.getItem('AuthCode') // 判断系统是否在授权期限内
let _s = md5('mksoft' + moment().format('YYYYMMDD'))
let isauth = authCode && authCode.includes(_s)
if (userId && isauth) {
return ()
} else {
return ()
}
}
render () {
return (
{
routers.map((item, index) => {
return (
{
return this.controlRoute(item, props)
}}/>
)
})
}
)
}
}