cabloy / cabloy

🚀 A Node.js full-stack framework with workflow engine.

Home Page:https://cabloy.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

工作流字段权限配置

zhennann opened this issue · comments

#49

目标

  1. 在工作流节点,配置字段权限
  2. 同时支持主表和明细表

旧方案

  1. read/write分开配置
  2. 支持配置类型
  • 允许所有字段
  • 禁止所有字段
  • 允许指定字段
  • 自定义
  1. 旧方案截图
Pasted Graphic

新方案

  1. read/write合并配置,通过ebReadOnly进行标识
  2. 支持配置类型
类型 类型名称 说明
default 允许所有字段 直接使用默认schema
whitelist 允许指定字段(白名单) 以默认schema为基础,挑出指定的字段
blacklist 禁止指定字段(黑名单) 以默认schema为基础,对指定字段做调整
custom 自定义 支持更灵活的配置
  1. 说明
  • 每一个字段都允许配置:允许读/允许写
  • 如果基础schema中明确指定ebReadOnly: true,那么“允许写”就禁用
  • 换句话说,只允许降级,不允许升级(除非在“自定义”中设置)
  1. custom
  • 支持数组/对象
  • 数组:字段清单,每个字段可以是完整的property
  • 对象:可直接指定validator/schema
  1. 在此基础上,实现明细表的字段权限配置
  • 只需在一个页面依次展开:如果有明细表,就采用风箱组件,并且第一个显示“主表”
  • schema.details即可

配置范例

            schema: {
              type: 'default', // default/blacklist/whitelist/custom
              // value: ['atomName'],
              // value: [{ name: 'atomName' }],
              // value: [{ name: 'atomName', read: true, write: false }],
              // value: [
              //   'atomName',
              //   {
              //     name: 'description',
              //     property: {
              //       type: 'string',
              //       ebType: 'text',
              //       ebTitle: 'Description',
              //     },
              //   },
              // ],
              // value: {
              //   module: '',
              //   validator: '',
              //   schema: '',
              // },
            },

更正

在大多数场景,读与写往往采用不同的配置策略,比如读采用黑名单,写采用白名单

因此,采用基础控制+指定控制相结合的配置策略

类型 类型名称 说明
allowAllFieldsRead 允许所有字段(只读) 以默认schema为基础,只读模式
allowAllFieldsReadWrite 允许所有字段(读写) 以默认schema为基础,读写模式
allowSpecificFields 允许指定字段 以默认schema为基础,采用基础控制+指定控制策略,对指定字段做调整
custom 自定义 支持更灵活的配置

最新效果图

image