1.0.0 • Published 3 years ago
@sfit/vue-permission-plugin1 v1.0.0
vue-permission-plugin
基于vue2.x框架的权限指令插件。
可用指令
v-confirm
v-create
v-delete
v-modify
v-read
v-reject
v-verify
v-publish
v-apply
v-permission
可用属性
canConfirm
canCreate
canDelete
canModify
canRead
canReject
canVerify
canPublish
canApply
使用方式
import Vue from 'vue';
import VuePermissionPlugin from '@sfit/vue-permission-plugin';
Vue.use(VuePermissionPlugin, {
permissions: {
'index': ['R','U'],
},
ACL: { },
routeMapFunction:(route) => route.path,
})
<template>
<el-button v-read>我是需要读权限才会显示的Button</el-button>
<el-button v-permission="'read'">我是需要读权限才会显示的Button</el-button>
</template>
<script type="ts">
created() {
if(this.canRead) {
// 我是一个需要读权限才会执行的方法
getDataFromServer().then(() => { })
}
}
</script>
初始化参数说明
permissions
权限信息(必传参数)
权限验证的核心参数,必须传入。
该对象为Json类型,key是路由的path,value是该path的权限集合。权限集合应符合uapp框架的ACL
定义,如需拓展,请配合ACL
一起使用。
如果你是使用Ipc方式从Angular层获取的permissions,因为Angular层返回的perimissions的key并不一定能够和当前Vue实例的route.path对应起来,所以你可能需要预先将permissions的key映射为正确的path,或通过传入mapRouteFunction
参数来帮助插件正确的将route.path转换为你在Angular中定义的key。
ACL
权限定义列表
插件默认与Angular框架层保持一致,可以不传,如果传入,将会以合并的方式并入默认ACL。
const ACL = {
CONFIRM: 'F',
CREATE: 'C',
DELETE: 'D',
MODIFY: 'U',
READ: 'R',
REJECT: 'J',
VERIFY: 'V',
PUBLISH: 'P',
APPLY: 'A'
}
不建议覆盖框架原生提供的ACL值,这可能导致插件无法正确转义permissions
中的权限数组,导致权限校验不通过
routeMapFunction
权限检查是基于route
的,该函数负责将route
转换为能在perimissions
中查找权限集合的key,默认使用route.path
,你可以传入自己的转换函数将route
映射为permissions
可接受的key
该函数的入参为route
,输出为string
1.0.0
3 years ago