From 8a8f44f852d82ca30061fb27d717a53b14fef71f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=9D=E5=85=88=E7=91=9E?= <1490493387@qq.com> Date: Thu, 27 Jan 2022 22:13:57 +0800 Subject: [PATCH] =?UTF-8?q?fix(permission.ts):=20=E8=B6=85=E7=BA=A7?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E7=99=BB=E5=BD=95=E5=B7=A6=E4=BE=A7?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E6=B2=A1=E6=9C=89=E5=8A=A8=E6=80=81=E7=94=9F?= =?UTF-8?q?=E6=88=90=E8=B7=AF=E7=94=B1=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/store/modules/permission.ts | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/src/store/modules/permission.ts b/src/store/modules/permission.ts index d68b14e0..a9c4e4cf 100644 --- a/src/store/modules/permission.ts +++ b/src/store/modules/permission.ts @@ -2,21 +2,24 @@ import {PermissionState} from "@/store/interface"; import {RouteRecordRaw} from 'vue-router' import {constantRoutes} from '@/router' import {listRoutes} from "@/api/system/menu"; -import { defineStore } from "pinia"; -import { store } from "@/store"; +import {defineStore} from "pinia"; +import {store} from "@/store"; + const modules = import.meta.glob("../../views/**/**.vue"); export const Layout = () => import( '@/layout/index.vue') const hasPermission = (roles: string[], route: RouteRecordRaw) => { if (route.meta && route.meta.roles) { + if (roles.includes('ROOT')) { + return true + } return roles.some(role => { if (route.meta?.roles !== undefined) { return (route.meta.roles as string[]).includes(role); } }) - } else { - return true } + return false } export const filterAsyncRoutes = (routes: RouteRecordRaw[], roles: string[]) => { @@ -46,26 +49,21 @@ export const filterAsyncRoutes = (routes: RouteRecordRaw[], roles: string[]) => export const usePermissionStore = defineStore({ - id:"permission", - state:():PermissionState=>( { + id: "permission", + state: (): PermissionState => ({ routes: [], addRoutes: [] }), actions: { - setRoutes( routes: RouteRecordRaw[]){ - this.addRoutes = routes - this.routes = constantRoutes.concat(routes) + setRoutes(routes: RouteRecordRaw[]) { + this.addRoutes = routes + this.routes = constantRoutes.concat(routes) }, - generateRoutes( roles: string[]) { + generateRoutes(roles: string[]) { return new Promise((resolve, reject) => { listRoutes().then(response => { const asyncRoutes = response.data - let accessedRoutes - if (roles.includes('ROOT')) { // 超级管理员拥有全部权限 - accessedRoutes = asyncRoutes || [] - } else { - accessedRoutes = filterAsyncRoutes(asyncRoutes, roles) - } + let accessedRoutes = filterAsyncRoutes(asyncRoutes, roles) this.setRoutes(accessedRoutes) resolve(accessedRoutes) }).catch(error => { @@ -75,6 +73,7 @@ export const usePermissionStore = defineStore({ } } }) + export function usePermissionStoreHook() { return usePermissionStore(store); }