import store from '@/store' import {uppercaseFirst} from "@/filter" import {isEmpty} from "@/util" /** * 判断是否需要鉴权,需要则返回true * 以下情况不需要鉴权:①无meta、②设置了noAuth=true、③没有名称 * * @param route vue-router的routeConfig或项目中说明的路由配置项 * @return {boolean} */ export function needAuth(route) { if (route.path.startsWith('/redirect')) return false const {meta} = route return !meta || !meta.noAuth || isEmpty(meta.title) && isEmpty(meta.dynamicTitle) } /** * 接口权限判断,有权限则返回true * 调用时需要保证用户已经登录成功 * * @param path {string} 接口路径 * @return {boolean} */ export function auth(path) { if (store.state.user.admin === true) return true const resourceMap = store.state.resource.resourceMap if (!(path in resourceMap)) return true const resources = store.state.user.resources return resources && path in resources } /** * what i can * 批量生成canXxx的计算属性 * * @param apiMap * @return {object} */ export function wic(apiMap) { const attrs = {} Object.entries(apiMap).forEach(([key, value]) => { const attrKey = `can${uppercaseFirst(key)}` attrs[attrKey] = () => auth(value.url) }) return attrs }