Skip to content

Commit 0a94076

Browse files
committed
修复权限未开启时菜单未过滤的问题,并简化菜单过滤逻辑
1 parent 2c9118e commit 0a94076

File tree

1 file changed

+5
-30
lines changed

1 file changed

+5
-30
lines changed

src/store/modules/menu.ts

Lines changed: 5 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,12 @@ import menu from '@/menu'
66
import { resolveRoutePath } from '@/utils'
77
import useRouteStore from './route'
88
import useSettingsStore from './settings'
9-
import useUserStore from './user'
109

1110
const useMenuStore = defineStore(
1211
// 唯一ID
1312
'menu',
1413
() => {
1514
const settingsStore = useSettingsStore()
16-
const userStore = useUserStore()
1715
const routeStore = useRouteStore()
1816

1917
const filesystemMenusRaw = ref<Menu.recordMainRaw[]>([])
@@ -78,10 +76,7 @@ const useMenuStore = defineStore(
7876
else {
7977
returnMenus = filesystemMenusRaw.value
8078
}
81-
// 如果权限功能开启,则需要对导航数据进行筛选过滤
82-
if (settingsStore.settings.app.enablePermission) {
83-
returnMenus = filterAsyncMenus(returnMenus, userStore.permissions)
84-
}
79+
returnMenus = filterAsyncMenus(returnMenus)
8580
return returnMenus
8681
})
8782
// 次导航数据
@@ -155,35 +150,15 @@ const useMenuStore = defineStore(
155150
return defaultOpenedPaths
156151
}
157152

158-
// 判断是否有权限
159-
function hasPermission(permissions: string[], menu: Menu.recordMainRaw | Menu.recordRaw) {
160-
let isAuth = false
161-
if (menu.meta?.auth) {
162-
isAuth = permissions.some((auth) => {
163-
if (typeof menu.meta?.auth === 'string') {
164-
return menu.meta.auth !== '' ? menu.meta.auth === auth : true
165-
}
166-
else if (typeof menu.meta?.auth === 'object') {
167-
return menu.meta.auth.length > 0 ? menu.meta.auth.includes(auth) : true
168-
}
169-
else {
170-
return false
171-
}
172-
})
173-
}
174-
else {
175-
isAuth = true
176-
}
177-
return isAuth
178-
}
153+
const auth = useAuth()
179154
// 根据权限过滤导航
180-
function filterAsyncMenus<T extends Menu.recordMainRaw[] | Menu.recordRaw[]>(menus: T, permissions: string[]): T {
155+
function filterAsyncMenus<T extends Menu.recordMainRaw[] | Menu.recordRaw[]>(menus: T): T {
181156
const res: any = []
182157
menus.forEach((menu) => {
183-
if (hasPermission(permissions, menu)) {
158+
if (auth.auth(menu.meta?.auth ?? '')) {
184159
const tmpMenu = cloneDeep(menu)
185160
if (tmpMenu.children && tmpMenu.children.length > 0) {
186-
tmpMenu.children = filterAsyncMenus(tmpMenu.children, permissions) as Menu.recordRaw[]
161+
tmpMenu.children = filterAsyncMenus(tmpMenu.children) as Menu.recordRaw[]
187162
tmpMenu.children.length > 0 && res.push(tmpMenu)
188163
}
189164
else {

0 commit comments

Comments
 (0)