@steedos/standard-permission 3.0.0-beta.13 → 3.0.0-beta.131

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/main/default/objectTranslations/permission_objects.en/permission_objects.en.objectTranslation.yml +3 -0
  2. package/main/default/objectTranslations/permission_objects.zh-CN/permission_objects.zh-CN.objectTranslation.yml +3 -0
  3. package/main/default/objectTranslations/permission_set.en/permission_set.en.objectTranslation.yml +1 -1
  4. package/main/default/objects/permission_objects/buttons/resetFieldPermissions.button.yml +57 -0
  5. package/main/default/objects/permission_objects.action.js +16 -49
  6. package/main/default/objects/permission_objects.object.yml +1 -3
  7. package/main/default/objects/restriction_rules.object.yml +8 -5
  8. package/main/default/objects/share_rules.object.yml +8 -5
  9. package/main/default/pages/restriction_rules_form.page.amis.json +79 -0
  10. package/main/default/pages/restriction_rules_form.page.yml +13 -0
  11. package/main/default/pages/share_rules_form.page.amis.json +79 -0
  12. package/main/default/pages/share_rules_form.page.yml +13 -0
  13. package/main/default/routes/resetFieldPermissions.router.js +35 -0
  14. package/main/default/triggers/permission_objects.trigger.js +6 -4
  15. package/package.json +2 -3
  16. package/main/default/objects/permission_objects.function.js +0 -23
  17. package/main/default/objects/permission_set/buttons/copy.button.yml +0 -114
  18. package/main/default/objects/permission_set/buttons/permission_set.action.js +0 -20
  19. package/main/default/objects/permission_set/buttons/set_permission_tabs.button.yml +0 -166
  20. package/main/default/objects/permission_set/permission_set.object.yml +0 -244
  21. package/main/default/objects/permission_shares.object.js +0 -57
  22. package/main/default/objects/permission_tabs/buttons/customize.button.js +0 -31
  23. package/main/default/objects/permission_tabs/buttons/customize.button.yml +0 -4
  24. package/main/default/objects/restriction_rules.action.js +0 -26
  25. package/main/default/objects/share_rules.action.js +0 -26
  26. package/main/default/server/permission_set.object.js +0 -130
@@ -118,3 +118,6 @@ actions:
118
118
  label: Customize
119
119
  resetFieldPermissions:
120
120
  label: ResetFieldPermissions
121
+ CustomLabels:
122
+ permission_objects_actions_resetFieldPermissions_success: The field permission initialization was successful
123
+ permission_objects_actions_resetFieldPermissions_failed: The field permission initialization was failed
@@ -110,3 +110,6 @@ listviews:
110
110
  actions:
111
111
  customize:
112
112
  label: 自定义
113
+ CustomLabels:
114
+ permission_objects_actions_resetFieldPermissions_success: 字段权限初始化成功
115
+ permission_objects_actions_resetFieldPermissions_failed: 字段权限初始化失败
@@ -1,5 +1,5 @@
1
1
  name: permission_set
2
- label: Profile & Permission Set
2
+ label: Permission Sets
3
3
  description:
4
4
  fields:
5
5
  name:
@@ -0,0 +1,57 @@
1
+ name: resetFieldPermissions
2
+ label: ResetFieldPermissions
3
+ 'on': record_only
4
+ type: amis_button
5
+ amis_schema: |-
6
+ {
7
+ "type": "service",
8
+ "body": [
9
+ {
10
+ "type": "button",
11
+ "label": "${'CustomAction.permission_objects.resetFieldPermissions' | t}",
12
+ "id": "u:resetFieldPermissions",
13
+ "onEvent": {
14
+ "click": {
15
+ "weight": 0,
16
+ "actions": [
17
+ {
18
+ "actionType": "ajax",
19
+ "api": {
20
+ "url": "/api/permission/permission_objects/resetFieldPermissions",
21
+ "method": "post",
22
+ "requestAdaptor": "api.data={permissionObjectId: context.recordId}\n\n\nreturn api;",
23
+ "adaptor": "return payload.success ? {data: {...payload}, status: 0, msg: t('CustomLabels.permission_objects_actions_resetFieldPermissions_success')} : {...payload, status: 1, msg: t('CustomLabels.permission_objects_actions_resetFieldPermissions_failed')};"
24
+ }
25
+ },
26
+ {
27
+ "actionType": "broadcast",
28
+ "args": {
29
+ "eventName": "@data.changed.permission_objects"
30
+ },
31
+ "data": {
32
+ "objectName": "permission_objects",
33
+ "displayAs": "${displayAs}"
34
+ }
35
+ },
36
+ {
37
+ "actionType": "broadcast",
38
+ "args": {
39
+ "eventName": "@data.changed.permission_fields"
40
+ },
41
+ "data": {
42
+ "objectName": "permission_fields",
43
+ "displayAs": "${displayAs}"
44
+ }
45
+ }
46
+ ]
47
+ }
48
+ }
49
+ }
50
+ ],
51
+ "regions": [
52
+ "body"
53
+ ],
54
+ "bodyClassName": "p-0",
55
+ "id": "u:6d7a34bd662e",
56
+ "dsType": "api"
57
+ }
@@ -1,54 +1,21 @@
1
+ /*
2
+ * @Author: 殷亮辉 yinlianghui@hotoa.com
3
+ * @Date: 2025-07-07 16:57:38
4
+ * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
5
+ * @LastEditTime: 2025-10-28 10:09:35
6
+ */
1
7
  const _ = require("underscore");
2
8
  module.exports = {
3
- customize: function (object_name, record_id, fields) {
4
- var doc = Creator.odata.get(object_name, record_id);
5
- var newDoc = {}
6
- _.each(Creator.getObject(object_name).fields, function(v, k){
7
- if(_.has(doc, k)){
8
- newDoc[k] = doc[k]
9
- }
10
- })
11
- delete newDoc.is_system;
12
-
13
- let permissionSetId = doc.permission_set_id
14
- // if(_.includes(['admin','user','supplier','customer'], doc.permission_set_id)){
15
- // let dbPst = Creator.odata.query('permission_set', {$select: "_id", $filter: "(name eq '"+doc.permission_set_id+"') and (space eq '"+Steedos.getSpaceId()+"')"}, true)
16
- // if(dbPst && dbPst.length > 0){
17
- // permissionSetId = dbPst[0]._id;
18
- // }
19
-
20
- // if(_.includes(['admin','user','supplier','customer'], permissionSetId)){
21
- // return toastr.error("请先自定义权限集")
22
- // }
23
- // }
24
- Creator.odata.insert(object_name, Object.assign(newDoc, {permission_set_id: permissionSetId}), function(result, error){
25
- if (result) {
26
- if(Session.get("object_name") === 'permission_objects'){
27
- FlowRouter.go(`/app/-/${object_name}/view/${result._id}`)
28
- }else{
29
- href = Creator.getObjectUrl(object_name, result._id);
30
- window.open(href,'_blank','width=800, height=600, left=50, top= 50, toolbar=no, status=no, menubar=no, resizable=yes, scrollbars=yes')
31
- }
32
- }
33
- });
34
- },
35
- customizeVisible: function(object_name, record_id, record_permissions, data){
36
- var record = data && data.record;
37
- if(!record){
38
- record = {}
39
- }
40
- return Steedos.Object.base.actions.standard_new.visible() && record.is_system;
41
- },
42
- resetFieldPermissions: function (object_name, record_id) {
43
- var doc = Creator.odata.get(object_name, record_id);
44
- var result = Steedos.authRequest(`/api/v4/${object_name}/${record_id}/resetFieldPermissions`, { type: 'get', async: false });
45
- if (result.error) {
46
- toastr.error(t(result.error));
47
- } else {
48
- toastr.success('初始化成功', '字段权限');
49
- FlowRouter.reload();
50
- }
51
- },
9
+ // resetFieldPermissions: function (object_name, record_id) {
10
+ // var doc = Creator.odata.get(object_name, record_id);
11
+ // var result = Steedos.authRequest(`/api/v4/${object_name}/${record_id}/resetFieldPermissions`, { type: 'get', async: false });
12
+ // if (result.error) {
13
+ // toastr.error(t(result.error));
14
+ // } else {
15
+ // toastr.success('初始化成功', '字段权限');
16
+ // FlowRouter.reload();
17
+ // }
18
+ // },
52
19
  resetFieldPermissionsVisible: function (object_name, record_id, record_permissions, data) {
53
20
  var record = data && data.record;
54
21
  if (!record) {
@@ -17,6 +17,7 @@ fields:
17
17
  required: true
18
18
  reference_to: permission_set
19
19
  index: true
20
+ is_name: true
20
21
  name: permission_set_id
21
22
  filterable: true
22
23
  reference_limit: 5000
@@ -313,9 +314,6 @@ list_views:
313
314
  - is_system
314
315
  filter_scope: space
315
316
  actions:
316
- customize:
317
- label: Customize
318
- on: record_only
319
317
  resetFieldPermissions:
320
318
  label: 重置字段权限
321
319
  on: record_only
@@ -34,7 +34,7 @@ fields:
34
34
  required: true
35
35
  record_filter:
36
36
  label: 记录过滤器
37
- inlineHelpText: "满足指定条目条件时,使用该记录过滤器限制指定的数据。语法为 Amis <a href = 'https://aisuda.bce.baidu.com/amis/zh-CN/docs/concepts/data-mapping' target='_blank'>数据映射</a> 或 <a href = 'https://aisuda.bce.baidu.com/amis/zh-CN/docs/concepts/expression' target='_blank'>表达式</a>, 例如: \\${[[\"owner\", \"=\", global.userId]]},更多详情请参考 <a href='https://docs.steedos.com/zh-CN/admin/permissions/restriction-rules' target='_blank'>此文档</a>。"
37
+ inlineHelpText: "满足指定条目条件时,使用该记录过滤器限制指定的数据。语法为 Amis <a href = 'https://aisuda.bce.baidu.com/amis/zh-CN/docs/concepts/data-mapping' target='_blank'>数据映射</a> 或 <a href = 'https://aisuda.bce.baidu.com/amis/zh-CN/docs/concepts/expression' target='_blank'>表达式</a>"
38
38
  type: textarea
39
39
  is_wide: true
40
40
  sort_no: 150
@@ -51,10 +51,13 @@ fields:
51
51
  readonly: true
52
52
  disabled: true
53
53
  visible_on: "{{global.mode ==='read' ? true : false}}"
54
- actions:
55
- customize:
56
- label: 自定义
57
- on: record
54
+ version:
55
+ label: 版本
56
+ type: number
57
+ defaultValue: 2
58
+ # readonly: true 不可以设置为只读,新建编辑表单需要加载这个字段值
59
+ visible_on: "${false}"
60
+ inlineHelpText: "版本号,用于记录规则更新,比如版本>=2时,record_filter 显示为amis过滤器"
58
61
  list_views:
59
62
  all:
60
63
  label: 所有
@@ -36,7 +36,7 @@ fields:
36
36
  required: true
37
37
  record_filter:
38
38
  label: 记录过滤器
39
- inlineHelpText: "满足指定条目条件时,使用该记录过滤器共享指定的数据。语法为 Amis <a href = 'https://aisuda.bce.baidu.com/amis/zh-CN/docs/concepts/data-mapping' target='_blank'>数据映射</a> 或 <a href = 'https://aisuda.bce.baidu.com/amis/zh-CN/docs/concepts/expression' target='_blank'>表达式</a>, 例如: \\${[[\"owner\", \"=\", global.userId]]},更多详情请参考 <a href='https://docs.steedos.com/zh-CN/admin/permissions/sharing-rules' target='_blank'>此文档</a>。"
39
+ inlineHelpText: "满足指定条目条件时,使用该记录过滤器共享指定的数据。语法为 Amis <a href = 'https://aisuda.bce.baidu.com/amis/zh-CN/docs/concepts/data-mapping' target='_blank'>数据映射</a> 或 <a href = 'https://aisuda.bce.baidu.com/amis/zh-CN/docs/concepts/expression' target='_blank'>表达式</a>。"
40
40
  type: textarea
41
41
  is_wide: true
42
42
  sort_no: 150
@@ -54,10 +54,13 @@ fields:
54
54
  disabled: true
55
55
  visible_on: "{{global.mode ==='read' ? true : false}}"
56
56
  sort_no: 99999
57
- actions:
58
- customize:
59
- label: 自定义
60
- on: record
57
+ version:
58
+ label: 版本
59
+ type: number
60
+ defaultValue: 2
61
+ # readonly: true 不可以设置为只读,新建编辑表单需要加载这个字段值
62
+ visible_on: "${false}"
63
+ inlineHelpText: "版本号,用于记录规则更新,比如版本>=2时,record_filter 显示为amis过滤器"
61
64
  list_views:
62
65
  all:
63
66
  label: 所有
@@ -0,0 +1,79 @@
1
+ {
2
+ "type": "service",
3
+ "body": [
4
+ {
5
+ "type": "steedos-object-form",
6
+ "label": "对象表单",
7
+ "objectApiName": "restriction_rules",
8
+ "recordId": "${recordId}",
9
+ "className": "",
10
+ "enableTabs": false,
11
+ "mode": "edit",
12
+ "layout": "normal",
13
+ "tabsMode": "",
14
+ "onEvent": {
15
+ "inited": {
16
+ "actions": [
17
+ {
18
+ "actionType": "custom",
19
+ "script": "event.data.formulaVariables = SteedosUI.getFormulaVariables();"
20
+ },
21
+ {
22
+ "actionType": "setValue",
23
+ "args": {
24
+ "value": {
25
+ "formulaVariables": "${event.data.formulaVariables}"
26
+ }
27
+ },
28
+ "componentId": "page_restriction_rules_form"
29
+ }
30
+ ]
31
+ }
32
+ },
33
+ "initApiAdaptor": "if (recordId && payload.data.version > 1) {\n var data = payload.data;\n if (data) {\n if (typeof data.record_filter === 'string') {\n try{\n data.record_filter = JSON.parse(data.record_filter);\n }\n catch(e){\n data.record_filter = [];\n }\n };\n data.record_filter = window.amisConvert.filtersToConditions(data.record_filter || []);\n }\n payload.data = data;\n}\nreturn payload;",
34
+ "apiRequestAdaptor": "if (formData.record_filter && formData.version > 1) {\n formData.record_filter = JSON.stringify(window.amisConvert.conditionsToFilters(formData.record_filter));\n}\n__saveData = JSON.stringify(JSON.stringify(formData));\napi.data = { query: query.replace('{__saveData}', __saveData) };\n",
35
+ "fieldsExtend": {
36
+ "entry_criteria": {
37
+ "amis": {
38
+ "type": "input-formula",
39
+ "evalMode": false,
40
+ "variableMode": "tabs",
41
+ "variables": "${formulaVariables}",
42
+ "visibleOn": "${formulaVariables}"
43
+ }
44
+ },
45
+ "record_filter": {
46
+ "amis": {
47
+ "type": "control",
48
+ "body": [
49
+ {
50
+ "type": "condition-builder",
51
+ "name": "record_filter",
52
+ "description": "",
53
+ "source": {
54
+ "method": "get",
55
+ "url": "${context.rootUrl}/service/api/amis-metadata-listviews/getFilterFields?objectName=${object_name}",
56
+ "dataType": "json",
57
+ "headers": {
58
+ "Authorization": "Bearer ${context.tenantId},${context.authToken}"
59
+ }
60
+ },
61
+ "className": "col-span-2 m-0",
62
+ "visibleOn": "${object_name && version > 1}"
63
+ },
64
+ {
65
+ "type": "textarea",
66
+ "name": "record_filter",
67
+ "visibleOn": "${!version || version <= 1}"
68
+ }
69
+ ]
70
+ }
71
+ }
72
+ }
73
+ }
74
+ ],
75
+ "data": {},
76
+ "id": "page_restriction_rules_form",
77
+ "name": "page_restriction_rules_form",
78
+ "dsType": "api"
79
+ }
@@ -0,0 +1,13 @@
1
+ name: restriction_rules_form
2
+ is_active: true
3
+ label: 限制规则表单
4
+ locked: false
5
+ object_name: restriction_rules
6
+ pageAssignments:
7
+ - type: orgDefault
8
+ page: restriction_rules_form
9
+ desktop: true
10
+ mobile: true
11
+ render_engine: amis
12
+ type: form
13
+ widgets: []
@@ -0,0 +1,79 @@
1
+ {
2
+ "type": "service",
3
+ "body": [
4
+ {
5
+ "type": "steedos-object-form",
6
+ "label": "对象表单",
7
+ "objectApiName": "share_rules",
8
+ "recordId": "${recordId}",
9
+ "className": "",
10
+ "enableTabs": false,
11
+ "mode": "edit",
12
+ "layout": "normal",
13
+ "tabsMode": "",
14
+ "onEvent": {
15
+ "inited": {
16
+ "actions": [
17
+ {
18
+ "actionType": "custom",
19
+ "script": "event.data.formulaVariables = SteedosUI.getFormulaVariables();"
20
+ },
21
+ {
22
+ "actionType": "setValue",
23
+ "args": {
24
+ "value": {
25
+ "formulaVariables": "${event.data.formulaVariables}"
26
+ }
27
+ },
28
+ "componentId": "page_share_rules_form"
29
+ }
30
+ ]
31
+ }
32
+ },
33
+ "initApiAdaptor": "if (recordId && payload.data.version > 1) {\n var data = payload.data;\n if (data) {\n if (typeof data.record_filter === 'string') {\n try{\n data.record_filter = JSON.parse(data.record_filter);\n }\n catch(e){\n data.record_filter = [];\n }\n };\n data.record_filter = window.amisConvert.filtersToConditions(data.record_filter || []);\n }\n payload.data = data;\n}\nreturn payload;",
34
+ "apiRequestAdaptor": "if (formData.record_filter && formData.version > 1) {\n formData.record_filter = JSON.stringify(window.amisConvert.conditionsToFilters(formData.record_filter));\n}\n__saveData = JSON.stringify(JSON.stringify(formData));\napi.data = { query: query.replace('{__saveData}', __saveData) };\n",
35
+ "fieldsExtend": {
36
+ "entry_criteria": {
37
+ "amis": {
38
+ "type": "input-formula",
39
+ "evalMode": false,
40
+ "variableMode": "tabs",
41
+ "variables": "${formulaVariables}",
42
+ "visibleOn": "${formulaVariables}"
43
+ }
44
+ },
45
+ "record_filter": {
46
+ "amis": {
47
+ "type": "control",
48
+ "body": [
49
+ {
50
+ "type": "condition-builder",
51
+ "name": "record_filter",
52
+ "description": "",
53
+ "source": {
54
+ "method": "get",
55
+ "url": "${context.rootUrl}/service/api/amis-metadata-listviews/getFilterFields?objectName=${object_name}",
56
+ "dataType": "json",
57
+ "headers": {
58
+ "Authorization": "Bearer ${context.tenantId},${context.authToken}"
59
+ }
60
+ },
61
+ "className": "col-span-2 m-0",
62
+ "visibleOn": "${object_name && version > 1}"
63
+ },
64
+ {
65
+ "type": "textarea",
66
+ "name": "record_filter",
67
+ "visibleOn": "${!version || version <= 1}"
68
+ }
69
+ ]
70
+ }
71
+ }
72
+ }
73
+ }
74
+ ],
75
+ "data": {},
76
+ "id": "page_share_rules_form",
77
+ "name": "page_share_rules_form",
78
+ "dsType": "api"
79
+ }
@@ -0,0 +1,13 @@
1
+ name: share_rules_form
2
+ is_active: true
3
+ label: 共享规则表单
4
+ locked: false
5
+ object_name: share_rules
6
+ pageAssignments:
7
+ - type: orgDefault
8
+ page: share_rules_form
9
+ desktop: true
10
+ mobile: true
11
+ render_engine: amis
12
+ type: form
13
+ widgets: []
@@ -0,0 +1,35 @@
1
+ /*
2
+ * @Author: 殷亮辉 yinlianghui@hotoa.com
3
+ * @Date: 2025-10-27 22:42:00
4
+ * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
5
+ * @LastEditTime: 2025-10-28 10:14:50
6
+ */
7
+ 'use strict';
8
+
9
+ const express = require("express");
10
+ const router = express.Router();
11
+ const auth = require('@steedos/auth');
12
+ const objectql = require('@steedos/objectql');
13
+ const _ = require('underscore');
14
+
15
+ router.post('/api/permission/permission_objects/resetFieldPermissions', auth.requireAuthentication, async function (req, res) {
16
+ try {
17
+ const { params, user: userSession } = req;
18
+ // const recordId = params.permissionObjectId;
19
+ const { permissionObjectId: recordId } = req.body;
20
+ await objectql.getSteedosSchema().broker.call(`permission_fields.resetFieldPermissions`, {
21
+ permissionObjectId: recordId
22
+ }, {
23
+ meta: {
24
+ user: userSession
25
+ }
26
+ });
27
+ res.status(200).send({success: true});
28
+ } catch (error) {
29
+ console.error(error);
30
+ res.status(400).send({
31
+ error: error.message
32
+ });
33
+ }
34
+ });
35
+ exports.default = router;
@@ -186,13 +186,15 @@ module.exports = {
186
186
  return processPermissions(doc)
187
187
  },
188
188
  beforeUpdate: async function () {
189
- let oldDoc = objectql.getObject("permission_set").directFindOne({_id: this.id})
189
+ let oldDoc = await objectql.getObject("permission_set").findOne(this.id)
190
190
  let doc = this.doc;
191
191
  let permission_set_id = doc.permission_set_id || oldDoc.permission_set_id
192
192
  let object_name = doc.object_name || oldDoc.object_name
193
- let space = oldDoc.space
194
- let existedCount = objectql.getObject("permission_set").directFind({permission_set_id: permission_set_id, object_name: object_name, space: space, _id: {$ne: this.id}}).length;
195
- if(existedCount > 0){
193
+ let space = this.space
194
+ let dbRecords = await objectql.getObject("permission_set").directFind({
195
+ filters: [['permission_set_id', '=', permission_set_id], ['object_name', '=', object_name], ['space', '=', space], ['_id', '!=', this.id]]
196
+ });
197
+ if(dbRecords.length > 0){
196
198
  throw new Error("此对象已有权限对象记录")
197
199
  }
198
200
 
package/package.json CHANGED
@@ -1,8 +1,7 @@
1
1
  {
2
2
  "name": "@steedos/standard-permission",
3
- "version": "3.0.0-beta.13",
3
+ "version": "3.0.0-beta.131",
4
4
  "main": "package.service.js",
5
- "private": false,
6
5
  "publishConfig": {
7
6
  "access": "public"
8
7
  },
@@ -12,7 +11,7 @@
12
11
  "description": "steedos package",
13
12
  "repository": {},
14
13
  "license": "MIT",
15
- "gitHead": "156746559d0ad3804b2344a06b1bcda26a703213",
14
+ "gitHead": "54cdda4ec73cbac9e4da931aa413373bf88518ac",
16
15
  "dependencies": {
17
16
  "clone": "^2.1.2"
18
17
  }
@@ -1,23 +0,0 @@
1
- const objectql = require("@steedos/objectql");
2
-
3
- module.exports = {
4
- resetFieldPermissions: async function (req, res) {
5
- try {
6
- const { params, user: userSession } = req;
7
- const recordId = params._id;
8
- await objectql.getSteedosSchema().broker.call(`permission_fields.resetFieldPermissions`, {
9
- permissionObjectId: recordId
10
- }, {
11
- meta: {
12
- user: userSession
13
- }
14
- });
15
- res.status(200).send({});
16
- } catch (error) {
17
- console.error(error);
18
- res.status(400).send({
19
- error: error.message
20
- });
21
- }
22
- }
23
- }
@@ -1,114 +0,0 @@
1
- name: copy
2
- amis_schema: |-
3
- {
4
- "type": "service",
5
- "body": [
6
- {
7
- "type": "button",
8
- "label": "${'permission_set.copy.copy' | t}",
9
- "id": "u:copy",
10
- "onEvent": {
11
- "click": {
12
- "weight": 0,
13
- "actions": [
14
- {
15
- "dialog": {
16
- "type": "dialog",
17
- "title": "${'permission_set.copy.copy_record' | t}",
18
- "body": [
19
- {
20
- "type": "form",
21
- "title": "表单",
22
- "body": [
23
- {
24
- "label": "${'permission_set.copy.display_name' | t}",
25
- "type": "input-text",
26
- "value": "${'permission_set.copy.copy_of_record' | t:${record.label}}",
27
- "name": "label_input",
28
- "id": "u:24e89a11d437",
29
- "required": true
30
- },
31
- {
32
- "type": "input-text",
33
- "name": "name_input",
34
- "value": "${record.name}_copy",
35
- "label": "${'permission_set.copy.api_name' | t}",
36
- "id": "u:27bd7cfe3e12",
37
- "required": true
38
- }
39
- ],
40
- "api": {
41
- "url": "${context.rootUrl}/api/permission/permission_set/copy",
42
- "method": "post",
43
- "messages": {
44
- "success": "复制成功"
45
- },
46
- "requestAdaptor": "delete api.body.label_input;\ndelete api.body.name_input;",
47
- "data": {
48
- "&": "$$",
49
- "label": "${label_input}",
50
- "name": "${name_input}",
51
- "originalPermissionSetId": "${record._id}"
52
- },
53
- "headers": {
54
- "Authorization": "Bearer ${context.tenantId},${context.authToken}"
55
- }
56
- },
57
- "onEvent": {
58
- "submitSucc": {
59
- "weight": 0,
60
- "actions": [
61
- {
62
- "args": {
63
- "url": "${context.rootUrl}/app/${appId}/${objectName}/view/${result.data.recordId}",
64
- "blank": false
65
- },
66
- "actionType": "url"
67
- }
68
- ]
69
- }
70
- },
71
- "id": "u:818f7b68417b",
72
- "mode": "normal"
73
- }
74
- ],
75
- "showCloseButton": true,
76
- "showErrorMsg": true,
77
- "showLoading": true,
78
- "id": "u:9f9b042404a1",
79
- "closeOnEsc": false,
80
- "dataMapSwitch": false,
81
- "size": "md"
82
- },
83
- "actionType": "dialog"
84
- }
85
- ]
86
- }
87
- }
88
- }
89
- ],
90
- "regions": [
91
- "body"
92
- ],
93
- "data": {
94
- "context": {},
95
- "app_id": "",
96
- "tab_id": "",
97
- "object_name": "",
98
- "dataComponentId": "",
99
- "record_id": "",
100
- "record": {},
101
- "permissions": {}
102
- },
103
- "bodyClassName": "p-0",
104
- "id": "u:4b81eda72f12"
105
- }
106
- is_enable: true
107
- label: 复制
108
- 'on': record_only
109
- type: amis_button
110
- visible: !!js/function |
111
- function (object_name, record_id, record_permissions, record) {
112
-
113
- return record.record.type == 'profile';
114
- }
@@ -1,20 +0,0 @@
1
- module.exports = {
2
- customize: function (object_name, record_id, fields) {
3
- var doc = Creator.odata.get(object_name, record_id)
4
- Creator.odata.insert(object_name, {name: doc.name, label: doc.label, type: doc.type, license: doc.license, lockout_interval: doc.lockout_interval, max_login_attempts: doc.max_login_attempts, password_history: doc.password_history,
5
- default_standard_buttons: doc.default_standard_buttons
6
- }, function(result, error){
7
- if(result){
8
- FlowRouter.go(`/app/-/${object_name}/view/${result._id}`)
9
- }
10
- });
11
-
12
- },
13
- customizeVisible: function(object_name, record_id, record_permissions, data){
14
- var record = data && data.record;
15
- if(!record){
16
- record = {}
17
- }
18
- return Steedos.Object.base.actions.standard_new.visible() && record.is_system;
19
- }
20
- }