houzhongjian
2024-08-08 820397e43a0b64d35c6d31d2a55475061438593b
提交 | 用户 | 时间
820397 1 import type { App } from 'vue'
H 2 import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
3
4 const { t } = useI18n() // 国际化
5
6 export function hasRole(app: App<Element>) {
7   app.directive('hasRole', (el, binding) => {
8     const { wsCache } = useCache()
9     const { value } = binding
10     const super_admin = 'admin'
11     const roles = wsCache.get(CACHE_KEY.USER).roles
12
13     if (value && value instanceof Array && value.length > 0) {
14       const roleFlag = value
15
16       const hasRole = roles.some((role: string) => {
17         return super_admin === role || roleFlag.includes(role)
18       })
19
20       if (!hasRole) {
21         el.parentNode && el.parentNode.removeChild(el)
22       }
23     } else {
24       throw new Error(t('permission.hasRole'))
25     }
26   })
27 }