1.0.0 • Published 3 years ago

@sfit/vue-permission-plugin1 v1.0.0

Weekly downloads
-
License
ISC
Repository
-
Last release
3 years ago

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