@steedos/standard-permission 2.5.0-beta.22 → 2.5.0-beta.24
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.
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @Author: sunhaolin@hotoa.com
|
|
3
3
|
* @Date: 2022-05-26 16:56:54
|
|
4
4
|
* @LastEditors: sunhaolin@hotoa.com
|
|
5
|
-
* @LastEditTime: 2023-
|
|
5
|
+
* @LastEditTime: 2023-05-13 17:00:38
|
|
6
6
|
* @Description: 复制已有简档来创建新简档
|
|
7
7
|
* 使用mongodb的事务处理,保证数据的一致性
|
|
8
8
|
* 复制对象包括:简档、对象权限、字段权限、选项卡权限
|
|
@@ -52,6 +52,9 @@ router.post('/api/permission/permission_set/copy', core.requireAuthentication, a
|
|
|
52
52
|
if (originalPermissionSet.type !== 'profile') {
|
|
53
53
|
throw new Error("permission_set is not profile type");
|
|
54
54
|
}
|
|
55
|
+
|
|
56
|
+
const { name:originalPermissionSetName } = originalPermissionSet;
|
|
57
|
+
|
|
55
58
|
// API名称不能重复
|
|
56
59
|
const existPermissionSetCount = await psObj.count({
|
|
57
60
|
filters: [
|
|
@@ -112,7 +115,7 @@ router.post('/api/permission/permission_set/copy', core.requireAuthentication, a
|
|
|
112
115
|
delete newPermissionSetData.record_permissions;
|
|
113
116
|
const insertPermissionSetResult = await permissionSetColl.insertOne(newPermissionSetData);
|
|
114
117
|
newPermissionSet = insertPermissionSetResult.ops[0];
|
|
115
|
-
console.log('newPermissionSet', newPermissionSet)
|
|
118
|
+
// console.log('newPermissionSet', newPermissionSet)
|
|
116
119
|
|
|
117
120
|
// 创建对象权限和选项卡权限
|
|
118
121
|
if (newPermissionSet) {
|
|
@@ -152,6 +155,7 @@ router.post('/api/permission/permission_set/copy', core.requireAuthentication, a
|
|
|
152
155
|
editable: fieldPermission ? fieldPermission.editable : getFieldDefaultEditable(field),
|
|
153
156
|
readable: fieldPermission ? fieldPermission.readable : getFieldDefaultReadable(field),
|
|
154
157
|
_id: driver._makeNewID(),
|
|
158
|
+
copy_from: fieldPermission ? fieldPermission._id : `${originalPermissionSetName}.${newPermissionObject.object_name}.${field.name}`
|
|
155
159
|
})
|
|
156
160
|
}
|
|
157
161
|
}
|
|
@@ -181,6 +185,12 @@ router.post('/api/permission/permission_set/copy', core.requireAuthentication, a
|
|
|
181
185
|
|
|
182
186
|
// 批量创建选项卡权限
|
|
183
187
|
await permissionTabsColl.insertMany(newPermissionTabs, { session });
|
|
188
|
+
|
|
189
|
+
// 批量注册字段权限
|
|
190
|
+
const schema = objectql.getSteedosSchema();
|
|
191
|
+
const objectName = "permission_fields";
|
|
192
|
+
const SERVICE_NAME = `~database-${objectName}`;
|
|
193
|
+
await objectql.registerPermissionFields.mregister(schema.broker, SERVICE_NAME, newPermissionFields)
|
|
184
194
|
}
|
|
185
195
|
|
|
186
196
|
} catch (error) {
|
|
@@ -93,20 +93,22 @@ module.exports = {
|
|
|
93
93
|
})
|
|
94
94
|
|
|
95
95
|
// 为了解决默认简档自定义后生成新的_id,导致无法查询到数据的问题
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
[
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
96
|
+
if (_.isString(this.query.filters)) {
|
|
97
|
+
const filtersStr = this.query.filters;
|
|
98
|
+
const regex = /(?<=permission_set_id eq ')\w+(?=')/g;
|
|
99
|
+
const matches = filtersStr.match(regex);
|
|
100
|
+
if (matches) {
|
|
101
|
+
const permissionSetId = matches[0];
|
|
102
|
+
// 查找permissionSetId对应的permissionSet
|
|
103
|
+
const permissionSetDoc = (await objectql.getObject('permission_set').directFind({
|
|
104
|
+
filters: [
|
|
105
|
+
['_id', '=', permissionSetId],
|
|
106
|
+
]
|
|
107
|
+
})[0]);
|
|
108
|
+
if (permissionSetDoc) {
|
|
109
|
+
// 替换this.query.filters中全部的的permission_set_id为permissionSetDoc.name
|
|
110
|
+
this.query.filters = this.query.filters.replace(regex, permissionSetDoc.name).replace(`permission_set_id eq '${permissionSetDoc.name}'`, `(permission_set_id eq '${permissionSetDoc.name}') or (permission_set_id eq '${permissionSetId}')`);
|
|
111
|
+
}
|
|
110
112
|
}
|
|
111
113
|
}
|
|
112
114
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steedos/standard-permission",
|
|
3
|
-
"version": "2.5.0-beta.
|
|
3
|
+
"version": "2.5.0-beta.24",
|
|
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": "a12153914810e9e5967827ab0ec01b58a2b3b0cb"
|
|
16
16
|
}
|