import store from '@/store' import router from '@/router' /** * 字符权限校验 * @param {Array} value 校验值 * @returns {Boolean} */ export function checkPermission(path) { // 确保路径以斜杠开头 if (!path.startsWith('/')) path = '/' + path // 检查路由是否存在 const route = router.resolve(path) if (!route || !route.route) { console.error(`路由不存在: ${path}`) return false } // 添加权限验证逻辑 // ... return true } export function checkPermi(value) { if (value && value instanceof Array && value.length > 0) { const permissions = store.getters && store.getters.permissions const permissionDatas = value const all_permission = "*:*:*" const hasPermission = permissions.some(permission => { return all_permission === permission || permissionDatas.includes(permission) }) if (!hasPermission) { return false } return true } else { console.error(`need roles! Like checkPermi="['system:user:add','system:user:edit']"`) return false } } /** * 角色权限校验 * @param {Array} value 校验值 * @returns {Boolean} */ export function checkRole(value) { if (value && value instanceof Array && value.length > 0) { const roles = store.getters && store.getters.roles const permissionRoles = value const super_admin = "admin" const hasRole = roles.some(role => { return super_admin === role || permissionRoles.includes(role) }) if (!hasRole) { return false } return true } else { console.error(`need roles! Like checkRole="['admin','editor']"`) return false } } // src/permission.js router.beforeEach(async(to, from, next) => { // 确保登录页面可访问 if (to.path === '/login') { next() return } // 检查 token const token = store.getters.token if (!token) { next(`/login?redirect=${to.path}`) return } // 获取用户信息 if (!store.getters.name) { try { await store.dispatch('user/getInfo') next() } catch (error) { await store.dispatch('user/resetToken') next(`/login?redirect=${to.path}`) } } else { next() } })