/*
|
* @Author: shuishen 1109946754@qq.com
|
* @Date: 2023-12-14 17:10:00
|
* @LastEditors: shuishen 1109946754@qq.com
|
* @LastEditTime: 2024-01-22 13:30:53
|
* @FilePath: \jczz_web\src\permission.js
|
* @Description:
|
*
|
* Copyright (c) 2024 by shuishen, All Rights Reserved.
|
*/
|
/**
|
* 全站权限配置
|
*
|
*/
|
import router from "./router/router";
|
import store from "./store";
|
import { validatenull } from "@/util/validate";
|
import { getToken } from "@/util/auth";
|
import NProgress from "nprogress"; // progress bar
|
import "nprogress/nprogress.css"; // progress bar style
|
import { getStore } from "@/util/store";
|
|
NProgress.configure({ showSpinner: false });
|
const lockPage = store.getters.website.lockPage; //锁屏页
|
router.beforeEach((to, from, next) => {
|
const meta = to.meta || {};
|
const isMenu = meta.menu === undefined ? to.query.menu : meta.menu;
|
store.commit("SET_IS_MENU", isMenu === undefined);
|
|
if (getToken()) {
|
if (store.getters.isLock && to.path !== lockPage) {
|
//如果系统激活锁屏,全部跳转到锁屏页
|
next({ path: lockPage });
|
} else if (to.path === "/login") {
|
//如果登录成功访问登录页跳转到主页
|
next({ path: "/" });
|
} else {
|
//如果用户信息为空则获取用户信息,获取用户信息失败,跳转到登录页
|
if (store.getters.token.length === 0) {
|
store.dispatch("FedLogOut").then(() => {
|
next({ path: "/login" });
|
});
|
} else {
|
const value = to.query.src || to.fullPath;
|
const label = to.query.name || to.name;
|
const meta = to.meta || router.$avueRouter.meta || {};
|
const i18n = to.query.i18n;
|
if (to.query.target) {
|
window.open(value);
|
} else if (
|
meta.isTab !== false &&
|
!validatenull(value) &&
|
!validatenull(label)
|
) {
|
store.commit("ADD_TAG", {
|
label: label,
|
value: value,
|
params: to.params,
|
query: to.query,
|
meta: (() => {
|
if (!i18n) {
|
return meta;
|
}
|
return {
|
i18n: i18n,
|
};
|
})(),
|
group: router.$avueRouter.group || [],
|
});
|
}
|
if (to.path === "/welindex") {
|
next(store.getters.homeFirstPage);
|
return;
|
}
|
next();
|
}
|
}
|
} else {
|
//判断是否需要认证,没有登录访问去登录页
|
if (meta.isAuth === false) {
|
next();
|
} else {
|
next("/login");
|
}
|
}
|
});
|
|
router.afterEach(() => {
|
NProgress.done();
|
let title = store.getters.tag.label;
|
let i18n = store.getters.tag.meta.i18n;
|
title = router.$avueRouter.generateTitle(title, i18n);
|
//判断登录页的情况
|
if (router.history.current.fullPath === "/login") {
|
title = "登录";
|
}
|
//根据当前的标签也获取label的值动态设置浏览器标题
|
router.$avueRouter.setTitle(title);
|
});
|