云
昨天 a241b66efcc41e973290a6722fb7a4d79b833ea1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import type { RouteRecordRaw } from 'vue-router';
 
import { computed } from 'vue';
 
import { useAccess } from '@vben/access';
import { useAccessStore } from '@vben/stores';
 
/** 首页常驻,业务数据和入口仍需遵循当前用户的菜单权限。 */
export function useHomeAccess() {
  const accessStore = useAccessStore();
  const { hasAccessByCodes } = useAccess();
 
  function canQuery(permission: string) {
    return hasAccessByCodes([permission, '*:*:*']);
  }
 
  function canNavigate(name: string) {
    function contains(routes: RouteRecordRaw[]): boolean {
      return routes.some((route) => {
        if (route.meta?.menuVisibleWithForbidden) return false;
        return route.name === name || contains(route.children ?? []);
      });
    }
    return contains(accessStore.accessRoutes);
  }
 
  const canViewHome = computed(() => canQuery('mes:home:query'));
 
  return { canNavigate, canQuery, canViewHome };
}