20 lines
659 B
JavaScript
20 lines
659 B
JavaScript
// Author: fruit.com.cn
|
|
|
|
import { computed } from 'vue'
|
|
import { useUserStoreWithOut } from '@/store/modules/user'
|
|
|
|
/**
|
|
* 权限判断:权限码由登录接口下发并存在 user store 中。
|
|
* 用法:const { can, hasAny } = useRbac(); can('drama:create')
|
|
*/
|
|
export function useRbac() {
|
|
const userStore = useUserStoreWithOut()
|
|
const permissions = computed(() => {
|
|
const list = userStore.getUserInfo?.permissions
|
|
return Array.isArray(list) ? list : []
|
|
})
|
|
const can = (code) => permissions.value.includes(code)
|
|
const hasAny = (...codes) => codes.some((code) => permissions.value.includes(code))
|
|
return { permissions, can, hasAny }
|
|
}
|