提交 | 用户 | 时间
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
9259c2 10     const super_admin = 'super_admin'
H 11     const userInfo = wsCache.get(CACHE_KEY.USER)
12     const roles = userInfo?.roles || []
820397 13
H 14     if (value && value instanceof Array && value.length > 0) {
15       const roleFlag = value
16
17       const hasRole = roles.some((role: string) => {
18         return super_admin === role || roleFlag.includes(role)
19       })
20
21       if (!hasRole) {
22         el.parentNode && el.parentNode.removeChild(el)
23       }
24     } else {
25       throw new Error(t('permission.hasRole'))
26     }
27   })
28 }