mirror of
https://github.com/WeBankFinTech/fes.js.git
synced 2025-04-06 03:59:53 +08:00
70 lines
2.0 KiB
JavaScript
70 lines
2.0 KiB
JavaScript
import { plugin, ApplyPluginsType } from '@@/core/coreExports';
|
||
import { access as accessApi } from '../plugin-access/core';
|
||
import Exception404 from './views/404';
|
||
import Exception403 from './views/403';
|
||
|
||
if (!accessApi) {
|
||
throw new Error(
|
||
'[plugin-layout]: pLugin-layout depends on plugin-access,please install plugin-access first!'
|
||
);
|
||
}
|
||
|
||
const handle = (type, router) => {
|
||
const accesssIds = accessApi.getAccess();
|
||
const path = `/${type}`;
|
||
const name = `Exception${type}`;
|
||
const components = {
|
||
404: Exception404,
|
||
403: Exception403
|
||
};
|
||
if (!accesssIds.includes(path)) {
|
||
accessApi.setAccess(accesssIds.concat([path]));
|
||
}
|
||
if (!router.hasRoute(name)) {
|
||
router.addRoute({ path, name, component: components[type] });
|
||
}
|
||
};
|
||
|
||
export const access = {
|
||
unAccessHandler({
|
||
router, to, from, next
|
||
}) {
|
||
const runtimeConfig = plugin.applyPlugins({
|
||
key: 'layout',
|
||
type: ApplyPluginsType.modify,
|
||
initialValue: {}
|
||
});
|
||
if (runtimeConfig.unAccessHandler && typeof runtimeConfig.unAccessHandler === 'function') {
|
||
return runtimeConfig.unAccessHandler({
|
||
router, to, from, next
|
||
});
|
||
}
|
||
if (to.path === '/404') {
|
||
handle(404, router);
|
||
return next('/404');
|
||
}
|
||
handle(403, router);
|
||
next('/403');
|
||
},
|
||
noFoundHandler({
|
||
router, to, from, next
|
||
}) {
|
||
const runtimeConfig = plugin.applyPlugins({
|
||
key: 'layout',
|
||
type: ApplyPluginsType.modify,
|
||
initialValue: {}
|
||
});
|
||
if (runtimeConfig.noFoundHandler && typeof runtimeConfig.noFoundHandler === 'function') {
|
||
return runtimeConfig.noFoundHandler({
|
||
router, to, from, next
|
||
});
|
||
}
|
||
if (to.path === '/403') {
|
||
handle(403, router);
|
||
return next('/403');
|
||
}
|
||
handle(404, router);
|
||
next('/404');
|
||
}
|
||
};
|