@steedos/standard-permission 2.3.0-beta.9 → 2.3.0
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.
- package/main/default/objectTranslations/permission_tabs.en/permission_tabs.en.objectTranslation.yml +30 -0
- package/main/default/objectTranslations/permission_tabs.zh-CN/permission_tabs.zh-CN.objectTranslation.yml +30 -0
- package/main/default/objects/permission_set/buttons/set_permission_tabs.button.yml +170 -0
- package/main/default/objects/permission_tabs/buttons/customize.button.js +30 -0
- package/main/default/objects/permission_tabs/buttons/customize.button.yml +4 -0
- package/main/default/objects/permission_tabs/fields/is_system.field.yml +7 -0
- package/main/default/objects/permission_tabs/fields/permission.field.yml +13 -0
- package/main/default/objects/permission_tabs/fields/permission_set.field.yml +7 -0
- package/main/default/objects/permission_tabs/fields/tab.field.yml +7 -0
- package/main/default/objects/permission_tabs/listviews/all.listview.yml +14 -0
- package/main/default/objects/permission_tabs/permission_tabs.object.yml +5 -0
- package/main/default/objects/permission_tabs/permissions/admin.permission.yml +14 -0
- package/main/default/objects/permission_tabs/permissions/user.permission.yml +14 -0
- package/main/default/routes/batchSavePermissionTabs.router.js +82 -0
- package/main/default/triggers/permission_objects.trigger.js +6 -2
- package/main/default/triggers/permission_tabs_metadata.trigger.js +147 -0
- package/package.json +2 -2
package/main/default/objectTranslations/permission_tabs.en/permission_tabs.en.objectTranslation.yml
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: permission_tabs
|
|
2
|
+
label: Permission Tabs
|
|
3
|
+
description:
|
|
4
|
+
fields:
|
|
5
|
+
permission_set_id:
|
|
6
|
+
label: Permission Set
|
|
7
|
+
help:
|
|
8
|
+
description:
|
|
9
|
+
tab:
|
|
10
|
+
label: Tab
|
|
11
|
+
help:
|
|
12
|
+
description:
|
|
13
|
+
permission:
|
|
14
|
+
label: Permission
|
|
15
|
+
help:
|
|
16
|
+
description:
|
|
17
|
+
options:
|
|
18
|
+
- label: 'On'
|
|
19
|
+
value: 'on'
|
|
20
|
+
- label: 'Off'
|
|
21
|
+
value: 'off'
|
|
22
|
+
- label: 'Hidden'
|
|
23
|
+
value: 'hidden'
|
|
24
|
+
is_system:
|
|
25
|
+
label: System
|
|
26
|
+
help:
|
|
27
|
+
description:
|
|
28
|
+
listviews:
|
|
29
|
+
all:
|
|
30
|
+
label: All
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: permission_tabs
|
|
2
|
+
label: 选项卡权限
|
|
3
|
+
description:
|
|
4
|
+
fields:
|
|
5
|
+
permission_set_id:
|
|
6
|
+
label: 权限集
|
|
7
|
+
help:
|
|
8
|
+
description:
|
|
9
|
+
tab:
|
|
10
|
+
label: 选项卡
|
|
11
|
+
help:
|
|
12
|
+
description:
|
|
13
|
+
permission:
|
|
14
|
+
label: 权限
|
|
15
|
+
help:
|
|
16
|
+
description:
|
|
17
|
+
options:
|
|
18
|
+
- label: 默认打开
|
|
19
|
+
value: 'on'
|
|
20
|
+
- label: 默认关闭
|
|
21
|
+
value: 'off'
|
|
22
|
+
- label: 隐藏选项卡
|
|
23
|
+
value: 'hidden'
|
|
24
|
+
is_system:
|
|
25
|
+
label: 系统
|
|
26
|
+
help:
|
|
27
|
+
description:
|
|
28
|
+
listviews:
|
|
29
|
+
all:
|
|
30
|
+
label: 全部
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
name: set_permission_tabs
|
|
2
|
+
amis_schema: |-
|
|
3
|
+
{
|
|
4
|
+
"type": "service",
|
|
5
|
+
"body": [
|
|
6
|
+
{
|
|
7
|
+
"type": "button",
|
|
8
|
+
"label": "设置选项卡权限",
|
|
9
|
+
"id": "u:set_permission_tabs",
|
|
10
|
+
"onEvent": {
|
|
11
|
+
"click": {
|
|
12
|
+
"actions": [
|
|
13
|
+
{
|
|
14
|
+
"actionType": "dialog",
|
|
15
|
+
"dialog": {
|
|
16
|
+
"type": "dialog",
|
|
17
|
+
"title": "设置选项卡权限",
|
|
18
|
+
"body": [
|
|
19
|
+
{
|
|
20
|
+
"type": "form",
|
|
21
|
+
"id": "u:2281889ba1e7",
|
|
22
|
+
"body": [
|
|
23
|
+
{
|
|
24
|
+
"type": "input-table",
|
|
25
|
+
"id": "u:1516aff9070c",
|
|
26
|
+
"name": "permission_tabs_list",
|
|
27
|
+
"label": "",
|
|
28
|
+
"columns": [
|
|
29
|
+
{
|
|
30
|
+
"label": "选项卡",
|
|
31
|
+
"name": "tab.label",
|
|
32
|
+
"type": "text",
|
|
33
|
+
"id": "u:ebd95b18057a",
|
|
34
|
+
"placeholder": "-"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"label": "权限",
|
|
38
|
+
"name": "permission",
|
|
39
|
+
"type": "select",
|
|
40
|
+
"id": "u:ad5dcb76754f",
|
|
41
|
+
"options": [
|
|
42
|
+
{
|
|
43
|
+
"label": "默认打开",
|
|
44
|
+
"value": "on"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"label": "默认关闭",
|
|
48
|
+
"value": "off"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"label": "隐藏选项卡",
|
|
52
|
+
"value": "hidden"
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"value": "on"
|
|
56
|
+
}
|
|
57
|
+
],
|
|
58
|
+
"strictMode": true,
|
|
59
|
+
"disabled": false,
|
|
60
|
+
"mode": "normal"
|
|
61
|
+
}
|
|
62
|
+
],
|
|
63
|
+
"messages": {},
|
|
64
|
+
"initApi": {
|
|
65
|
+
"method": "post",
|
|
66
|
+
"url": "${context.rootUrl}/graphql",
|
|
67
|
+
"data": {
|
|
68
|
+
"&": "$$",
|
|
69
|
+
"record": "${record}"
|
|
70
|
+
},
|
|
71
|
+
"adaptor": "const data = payload.data\nconst { permission_tabs, tabs } = data\nconst tableOptions = []\nconst tabNames = [] // 用于存储已经遍历过的选项卡,防止重复\nfor (const pTab of permission_tabs) {\n tableOptions.push({\n tab: {\n _id: pTab.tab__expand._id,\n name: pTab.tab__expand.name,\n label: pTab.tab__expand.label\n },\n permission: pTab.permission\n })\n tabNames.push(pTab.tab__expand.name)\n}\n\nfor (const tab of tabs) {\n if (tabNames.includes(tab.name)) {\n continue\n }\n tableOptions.push({\n tab: {\n _id: tab._id,\n name: tab.name,\n label: tab.label\n },\n permission: 'on'\n })\n}\n\ndata.permission_tabs_list = tableOptions\n\nreturn payload\n",
|
|
72
|
+
"headers": {
|
|
73
|
+
"Authorization": "Bearer ${context.tenantId},${context.authToken}"
|
|
74
|
+
},
|
|
75
|
+
"requestAdaptor": "const record = api.body.record\napi.data.query = `\n{\n permission_tabs(filters: [[\"permission_set\", \"=\", \"${record.name}\"]]) {\n _id\n permission\n tab__expand {\n _id\n name\n label\n }\n }\n tabs {\n _id\n name\n label\n }\n}\n`\ndelete api.body.record;\nreturn api;",
|
|
76
|
+
"dataType": "json"
|
|
77
|
+
},
|
|
78
|
+
"api": {
|
|
79
|
+
"method": "post",
|
|
80
|
+
"url": "${context.rootUrl}/api/permission/permission_set/batchSavePermissionTabs",
|
|
81
|
+
"data": {
|
|
82
|
+
"&": "$$",
|
|
83
|
+
"record": "${record}",
|
|
84
|
+
"record_id": "${record_id}"
|
|
85
|
+
},
|
|
86
|
+
"requestAdaptor": "api.data.permission_set_name = api.data.record.name\ndelete api.data.permission_tabs\ndelete api.data.record\ndelete api.data.tabs\n\nreturn api",
|
|
87
|
+
"dataType": "json"
|
|
88
|
+
},
|
|
89
|
+
"onEvent": {
|
|
90
|
+
"submitSucc": {
|
|
91
|
+
"weight": 0,
|
|
92
|
+
"actions": [
|
|
93
|
+
{
|
|
94
|
+
"actionType": "custom",
|
|
95
|
+
"script": "/* 自定义JS使用说明: \n * 1.动作执行函数doAction,可以执行所有类型的动作\n * 2.通过上下文对象context可以获取当前组件实例,例如context.props可以获取该组件相关属性\n * 3.事件对象event,在doAction之后执行event.stopPropagation = true;可以阻止后续动作执行\n*/\n\nSteedosUI.router.go({ objectName: 'permission_set', recordId: context.props.data.record_id, type: 'edit' });\n"
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
],
|
|
102
|
+
"id": "u:5d6ebd078296",
|
|
103
|
+
"closeOnEsc": false,
|
|
104
|
+
"closeOnOutside": false,
|
|
105
|
+
"showCloseButton": true,
|
|
106
|
+
"data": null,
|
|
107
|
+
"size": "lg",
|
|
108
|
+
"actions": [
|
|
109
|
+
{
|
|
110
|
+
"type": "button",
|
|
111
|
+
"label": "取消",
|
|
112
|
+
"onEvent": {
|
|
113
|
+
"click": {
|
|
114
|
+
"actions": [
|
|
115
|
+
{
|
|
116
|
+
"componentId": "",
|
|
117
|
+
"args": {},
|
|
118
|
+
"actionType": "closeDialog"
|
|
119
|
+
}
|
|
120
|
+
]
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
"id": "u:f1b8dabafee5",
|
|
124
|
+
"level": "default"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"type": "submit",
|
|
128
|
+
"label": "保存",
|
|
129
|
+
"onEvent": {},
|
|
130
|
+
"id": "u:246398c1f14c",
|
|
131
|
+
"level": "primary",
|
|
132
|
+
"close": true,
|
|
133
|
+
"hidden": false
|
|
134
|
+
}
|
|
135
|
+
]
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
],
|
|
139
|
+
"weight": 0
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
"level": "enhance"
|
|
143
|
+
}
|
|
144
|
+
],
|
|
145
|
+
"regions": [
|
|
146
|
+
"body"
|
|
147
|
+
],
|
|
148
|
+
"data": {
|
|
149
|
+
"context": {
|
|
150
|
+
"rootUrl": "http://127.0.0.1:5100"
|
|
151
|
+
},
|
|
152
|
+
"app_id": "",
|
|
153
|
+
"tab_id": "",
|
|
154
|
+
"object_name": "",
|
|
155
|
+
"dataComponentId": "",
|
|
156
|
+
"record_id": "",
|
|
157
|
+
"record": {},
|
|
158
|
+
"permissions": {}
|
|
159
|
+
},
|
|
160
|
+
"id": "u:ae64657bc500",
|
|
161
|
+
"bodyClassName": "p-0"
|
|
162
|
+
}
|
|
163
|
+
is_enable: true
|
|
164
|
+
label: 设置选项卡权限
|
|
165
|
+
'on': record_only
|
|
166
|
+
type: amis_button
|
|
167
|
+
visible: !!js/function |
|
|
168
|
+
function (object_name, record_id, record_permissions, record) {
|
|
169
|
+
return true;
|
|
170
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @Author: sunhaolin@hotoa.com
|
|
3
|
+
* @Date: 2022-10-27 14:30:02
|
|
4
|
+
* @LastEditors: sunhaolin@hotoa.com
|
|
5
|
+
* @LastEditTime: 2022-10-27 14:46:17
|
|
6
|
+
* @Description:
|
|
7
|
+
*/
|
|
8
|
+
module.exports = {
|
|
9
|
+
customize: function (object_name, record_id, fields) {
|
|
10
|
+
var doc = Creator.odata.get(object_name, record_id);
|
|
11
|
+
var newDoc = {}
|
|
12
|
+
_.each(Creator.getObject(object_name).fields, function (v, k) {
|
|
13
|
+
if (_.has(doc, k)) {
|
|
14
|
+
newDoc[k] = doc[k]
|
|
15
|
+
}
|
|
16
|
+
})
|
|
17
|
+
delete newDoc.is_system;
|
|
18
|
+
|
|
19
|
+
Creator.odata.insert(object_name, Object.assign(newDoc), function (result, error) {
|
|
20
|
+
if (result) {
|
|
21
|
+
SteedosUI.reloadRecord(object_name, result._id);
|
|
22
|
+
FlowRouter.reload();
|
|
23
|
+
FlowRouter.go(`/app/-/${object_name}/view/${result._id}`)
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
},
|
|
27
|
+
customizeVisible: function (object_name, record_id, record_permissions, record) {
|
|
28
|
+
return record && Creator.baseObject.actions.standard_new.visible() && record.is_system;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
name: 选项卡权限.管理员
|
|
2
|
+
allowCreate: true
|
|
3
|
+
allowCreateFiles: true
|
|
4
|
+
allowDelete: true
|
|
5
|
+
allowDeleteFiles: true
|
|
6
|
+
allowEdit: true
|
|
7
|
+
allowEditFiles: true
|
|
8
|
+
allowRead: true
|
|
9
|
+
allowReadFiles: true
|
|
10
|
+
modifyAllFiles: true
|
|
11
|
+
modifyAllRecords: true
|
|
12
|
+
permission_set_id: admin
|
|
13
|
+
viewAllFiles: true
|
|
14
|
+
viewAllRecords: true
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
name: 选项卡权限.用户
|
|
2
|
+
allowCreate: false
|
|
3
|
+
allowCreateFiles: false
|
|
4
|
+
allowDelete: false
|
|
5
|
+
allowDeleteFiles: false
|
|
6
|
+
allowEdit: false
|
|
7
|
+
allowEditFiles: false
|
|
8
|
+
allowRead: true
|
|
9
|
+
allowReadFiles: true
|
|
10
|
+
modifyAllRecords: false
|
|
11
|
+
permission_set_id: user
|
|
12
|
+
viewAllFiles: true
|
|
13
|
+
viewAllRecords: true
|
|
14
|
+
viewCompanyRecords: true
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @Author: sunhaolin@hotoa.com
|
|
3
|
+
* @Date: 2022-10-29 16:49:49
|
|
4
|
+
* @LastEditors: sunhaolin@hotoa.com
|
|
5
|
+
* @LastEditTime: 2022-10-29 17:29:38
|
|
6
|
+
* @Description: 权限集详情页中的设置选项卡权限按钮保存接口,批量保存选项卡权限
|
|
7
|
+
*/
|
|
8
|
+
'use strict';
|
|
9
|
+
// @ts-check
|
|
10
|
+
|
|
11
|
+
const express = require("express");
|
|
12
|
+
const router = express.Router();
|
|
13
|
+
const core = require('@steedos/core');
|
|
14
|
+
const objectql = require('@steedos/objectql');
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* body {
|
|
18
|
+
* permission_set_name,
|
|
19
|
+
* permission_tabs_list: [
|
|
20
|
+
* {
|
|
21
|
+
* permission: on/off/hidden,
|
|
22
|
+
* tab: {
|
|
23
|
+
* _id,
|
|
24
|
+
* name,
|
|
25
|
+
* label
|
|
26
|
+
* }
|
|
27
|
+
* }
|
|
28
|
+
* ...
|
|
29
|
+
* ]
|
|
30
|
+
* }
|
|
31
|
+
*/
|
|
32
|
+
router.post('/api/permission/permission_set/batchSavePermissionTabs', core.requireAuthentication, async function (req, res) {
|
|
33
|
+
try {
|
|
34
|
+
const userSession = req.user;
|
|
35
|
+
const { spaceId } = userSession;
|
|
36
|
+
|
|
37
|
+
const { permission_set_name, permission_tabs_list } = req.body;
|
|
38
|
+
if (!permission_tabs_list || !_.isArray(permission_tabs_list)) {
|
|
39
|
+
throw new Error("permission_tabs_list is required");
|
|
40
|
+
}
|
|
41
|
+
const permissionTabsObj = objectql.getObject('permission_tabs')
|
|
42
|
+
for (const { permission, tab } of permission_tabs_list) {
|
|
43
|
+
const pTabDoc = (await permissionTabsObj.find({
|
|
44
|
+
filters: [
|
|
45
|
+
['permission_set', '=', permission_set_name],
|
|
46
|
+
['tab', '=', tab.name]
|
|
47
|
+
]
|
|
48
|
+
}))[0]
|
|
49
|
+
|
|
50
|
+
if (pTabDoc && !pTabDoc.system) {
|
|
51
|
+
// 如果存在
|
|
52
|
+
// 1、非系统 执行更新
|
|
53
|
+
await permissionTabsObj.update(pTabDoc._id, {
|
|
54
|
+
'permission': permission
|
|
55
|
+
}, userSession)
|
|
56
|
+
} else if (!pTabDoc || pTabDoc.system) {
|
|
57
|
+
// 2、系统的执行新增,相当于自定义
|
|
58
|
+
// 如果不存在,执行新增
|
|
59
|
+
await permissionTabsObj.insert({
|
|
60
|
+
'space': spaceId,
|
|
61
|
+
'permission_set': permission_set_name,
|
|
62
|
+
'tab': tab.name,
|
|
63
|
+
'permission': permission
|
|
64
|
+
}, userSession)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
res.status(200).send({
|
|
70
|
+
"status": 0,
|
|
71
|
+
"msg": "",
|
|
72
|
+
});
|
|
73
|
+
} catch (error) {
|
|
74
|
+
console.error(error);
|
|
75
|
+
res.status(500).send({
|
|
76
|
+
"status": 1,
|
|
77
|
+
"msg": error.message,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
});
|
|
82
|
+
exports.default = router;
|
|
@@ -41,12 +41,16 @@ const initPermissionSet = async function(doc, userId, spaceId){
|
|
|
41
41
|
throw new Error('权限集不能为空')
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
let permissionSet = null;
|
|
45
|
+
const permissionSets = await objectql.getObject('permission_set').find({filters: [['name', '=', doc.permission_set_id], 'or', ['_id', '=', doc.permission_set_id]]});
|
|
46
|
+
|
|
47
|
+
if(permissionSets && permissionSets.length > 0){
|
|
48
|
+
permissionSet = permissionSets[0];
|
|
49
|
+
}
|
|
45
50
|
|
|
46
51
|
if(!permissionSet){
|
|
47
52
|
throw new Error('无效的权限集')
|
|
48
53
|
}
|
|
49
|
-
|
|
50
54
|
if(permissionSet._id === permissionSet.name){
|
|
51
55
|
const now = new Date();
|
|
52
56
|
const dbPermissionSet = await objectql.getObject('permission_set').insert({
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @Author: sunhaolin@hotoa.com
|
|
3
|
+
* @Date: 2022-10-26 14:14:51
|
|
4
|
+
* @LastEditors: sunhaolin@hotoa.com
|
|
5
|
+
* @LastEditTime: 2022-10-27 17:42:29
|
|
6
|
+
* @Description:
|
|
7
|
+
*/
|
|
8
|
+
const objectql = require('@steedos/objectql');
|
|
9
|
+
const auth = require('@steedos/auth');
|
|
10
|
+
const _ = require('underscore');
|
|
11
|
+
async function getAll() {
|
|
12
|
+
const schema = objectql.getSteedosSchema();
|
|
13
|
+
const configs = await objectql.registerTab.getAll(schema.broker)
|
|
14
|
+
const dataList = _.pluck(configs, 'metadata');
|
|
15
|
+
let permissionTabs = [];
|
|
16
|
+
for (const item of dataList) {
|
|
17
|
+
if (!item._id) {
|
|
18
|
+
item._id = `${item.name}`
|
|
19
|
+
}
|
|
20
|
+
if (item.permissions) {
|
|
21
|
+
for (const permissionTab of item.permissions) {
|
|
22
|
+
permissionTabs.push({
|
|
23
|
+
_id: `${permissionTab.permission_set}_${item.name}`,
|
|
24
|
+
permission: permissionTab.permission,
|
|
25
|
+
permission_set: permissionTab.permission_set,
|
|
26
|
+
tab: item.name,
|
|
27
|
+
|
|
28
|
+
is_system: true,
|
|
29
|
+
record_permissions: { // 此属性控制记录在前台页面的权限
|
|
30
|
+
allowEdit: false,
|
|
31
|
+
allowDelete: false,
|
|
32
|
+
allowRead: true,
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return permissionTabs;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* 检查同一个权限集下针对同一个选项卡是否重复配置
|
|
43
|
+
* @param {*} permission_set
|
|
44
|
+
* @param {*} tab
|
|
45
|
+
* @param {*} action beforeInsert/beforeUpdate
|
|
46
|
+
* @param {*} id
|
|
47
|
+
*/
|
|
48
|
+
async function checkMultiple(permission_set, tab, action, id) {
|
|
49
|
+
if (!permission_set || !tab) return
|
|
50
|
+
|
|
51
|
+
const pTabObj = objectql.getObject('permission_tabs')
|
|
52
|
+
const pTabDocs = await pTabObj.find({
|
|
53
|
+
filters: [
|
|
54
|
+
['permission_set', '=', permission_set],
|
|
55
|
+
['tab', '=', tab]
|
|
56
|
+
]
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
if (pTabDocs.length > 1) {
|
|
60
|
+
throw new Error(`权限集/简档 ${permission_set} 下发现选项卡 ${tab} 权限配置了${pTabDocs.length}条,请及时处理。`)
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (pTabDocs.length === 1 && (action === 'beforeInsert' || (action === 'beforeUpdate' && pTabDocs[0]._id != id))) {
|
|
64
|
+
throw new Error(`已在权限集/简档 ${permission_set} 下配置过选项卡 ${tab} 的权限,无需重复配置。`)
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
module.exports = {
|
|
69
|
+
listenTo: 'permission_tabs',
|
|
70
|
+
|
|
71
|
+
beforeInsert: async function () {
|
|
72
|
+
const { doc, id } = this
|
|
73
|
+
await checkMultiple(doc.permission_set, doc.tab, 'beforeInsert', id)
|
|
74
|
+
},
|
|
75
|
+
|
|
76
|
+
beforeUpdate: async function () {
|
|
77
|
+
const { doc, getObject, object_name, id } = this
|
|
78
|
+
const pTabObj = getObject(object_name)
|
|
79
|
+
const nowDoc = await pTabObj.findOne(id)
|
|
80
|
+
const newDoc = {
|
|
81
|
+
...nowDoc,
|
|
82
|
+
...doc
|
|
83
|
+
}
|
|
84
|
+
await checkMultiple(newDoc.permission_set, newDoc.tab, 'beforeUpdate', id)
|
|
85
|
+
},
|
|
86
|
+
|
|
87
|
+
beforeFind: async function () {
|
|
88
|
+
delete this.query.fields;
|
|
89
|
+
},
|
|
90
|
+
|
|
91
|
+
beforeAggregate: async function () {
|
|
92
|
+
delete this.query.fields;
|
|
93
|
+
},
|
|
94
|
+
|
|
95
|
+
afterFind: async function () {
|
|
96
|
+
const { spaceId } = this;
|
|
97
|
+
let dataList = await getAll();
|
|
98
|
+
if (dataList) {
|
|
99
|
+
dataList.forEach((doc) => {
|
|
100
|
+
if (!_.find(this.data.values, (value) => {
|
|
101
|
+
return value.permission_set === doc.permission_set && value.tab === doc.tab
|
|
102
|
+
})) {
|
|
103
|
+
this.data.values.push(doc);
|
|
104
|
+
}
|
|
105
|
+
})
|
|
106
|
+
const records = objectql.getSteedosSchema().metadataDriver.find(this.data.values, this.query, spaceId);
|
|
107
|
+
if (records.length > 0) {
|
|
108
|
+
this.data.values = records;
|
|
109
|
+
} else {
|
|
110
|
+
this.data.values.length = 0;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
afterAggregate: async function () {
|
|
115
|
+
const { spaceId } = this;
|
|
116
|
+
let dataList = await getAll();
|
|
117
|
+
if (dataList) {
|
|
118
|
+
dataList.forEach((doc) => {
|
|
119
|
+
if (!_.find(this.data.values, (value) => {
|
|
120
|
+
return value.permission_set === doc.permission_set && value.tab === doc.tab
|
|
121
|
+
})) {
|
|
122
|
+
this.data.values.push(doc);
|
|
123
|
+
};
|
|
124
|
+
})
|
|
125
|
+
const records = objectql.getSteedosSchema().metadataDriver.find(this.data.values, this.query, spaceId);
|
|
126
|
+
if (records.length > 0) {
|
|
127
|
+
this.data.values = records;
|
|
128
|
+
} else {
|
|
129
|
+
this.data.values.length = 0;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
afterCount: async function () {
|
|
134
|
+
delete this.query.fields;
|
|
135
|
+
let result = await objectql.getObject(this.object_name).find(this.query, await auth.getSessionByUserId(this.userId, this.spaceId))
|
|
136
|
+
this.data.values = result.length;
|
|
137
|
+
},
|
|
138
|
+
afterFindOne: async function () {
|
|
139
|
+
if (_.isEmpty(this.data.values)) {
|
|
140
|
+
const all = await getAll();
|
|
141
|
+
const id = this.id;
|
|
142
|
+
this.data.values = _.find(all, function (item) {
|
|
143
|
+
return item._id === id
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steedos/standard-permission",
|
|
3
|
-
"version": "2.3.0
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"main": "package.service.js",
|
|
5
5
|
"private": false,
|
|
6
6
|
"publishConfig": {
|
|
@@ -12,5 +12,5 @@
|
|
|
12
12
|
"description": "steedos package",
|
|
13
13
|
"repository": {},
|
|
14
14
|
"license": "MIT",
|
|
15
|
-
"gitHead": "
|
|
15
|
+
"gitHead": "b00e79e6fb8549b2fabed7b6cd6d4847775ba5df"
|
|
16
16
|
}
|