@steedos/standard-permission 2.5.3-beta.18 → 2.5.3-beta.19
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-06-
|
|
5
|
+
* @LastEditTime: 2023-06-14 10:49:23
|
|
6
6
|
* @Description: 复制已有简档来创建新简档
|
|
7
7
|
* 使用mongodb的事务处理,保证数据的一致性
|
|
8
8
|
* 复制对象包括:简档、对象权限、字段权限、选项卡权限
|
|
@@ -121,7 +121,9 @@ router.post('/api/permission/permission_set/copy', core.requireAuthentication, a
|
|
|
121
121
|
if (newPermissionSet) {
|
|
122
122
|
const { _id: newPermissionSetId, name: newPermissionSetName } = newPermissionSet;
|
|
123
123
|
// 对象权限数据来源于两个部分,1、内存 2、数据库
|
|
124
|
-
const
|
|
124
|
+
const internalPermissionObjects = await getInternalPermissionObjects(originalPermissionSetId);
|
|
125
|
+
const dbPermissionObjects = await poObj.directFind({ filters: [['space', '=', spaceId], ['permission_set_id', '=', originalPermissionSetId]] });
|
|
126
|
+
const originalPermissionObjects = getCombinedPermissionObjects(internalPermissionObjects, dbPermissionObjects);
|
|
125
127
|
const newPermissionObjects = []
|
|
126
128
|
const newPermissionFields = []
|
|
127
129
|
// 遍历原有的对象权限
|
|
@@ -226,7 +228,7 @@ async function getInternalPermissionObjects(permissionSetId) {
|
|
|
226
228
|
filters: [
|
|
227
229
|
['_id', '=', permissionSetId],
|
|
228
230
|
]
|
|
229
|
-
})[0]
|
|
231
|
+
}))[0];
|
|
230
232
|
// 如果库中有记录则使用库中的name作为判断条件,否则使用permissionSetId
|
|
231
233
|
const permissionSetName = permissionSetDoc ? permissionSetDoc.name : permissionSetId;
|
|
232
234
|
|
|
@@ -250,6 +252,24 @@ async function getInternalPermissionObjects(permissionSetId) {
|
|
|
250
252
|
}
|
|
251
253
|
return objectsPermissions;
|
|
252
254
|
}
|
|
255
|
+
// 合并内存中的对象权限和数据库中的对象权限
|
|
256
|
+
// 如果dbPermissionObjects和internalPermissionObjects中permission_set_id存在相同的值,则以dbPermissionObjects中数据为准
|
|
257
|
+
function getCombinedPermissionObjects(internalPermissionObjects, dbPermissionObjects) {
|
|
258
|
+
const dbPermissionObjectsIds = _.pluck(dbPermissionObjects, 'permission_set_id');
|
|
259
|
+
const internalPermissionObjectsIds = _.pluck(internalPermissionObjects, 'permission_set_id');
|
|
260
|
+
const sameIds = _.intersection(dbPermissionObjectsIds, internalPermissionObjectsIds);
|
|
261
|
+
if (sameIds.length > 0) {
|
|
262
|
+
for (const sameId of sameIds) {
|
|
263
|
+
const dbPermissionObject = _.findWhere(dbPermissionObjects, { permission_set_id: sameId });
|
|
264
|
+
const internalPermissionObject = _.findWhere(internalPermissionObjects, { permission_set_id: sameId });
|
|
265
|
+
if (dbPermissionObject && internalPermissionObject) {
|
|
266
|
+
const index = internalPermissionObjects.indexOf(internalPermissionObject);
|
|
267
|
+
internalPermissionObjects.splice(index, 1, dbPermissionObject);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
return [...internalPermissionObjects, ...dbPermissionObjects];
|
|
272
|
+
}
|
|
253
273
|
|
|
254
274
|
async function getFieldPermission(apiName) {
|
|
255
275
|
const schema = objectql.getSteedosSchema();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steedos/standard-permission",
|
|
3
|
-
"version": "2.5.3-beta.
|
|
3
|
+
"version": "2.5.3-beta.19",
|
|
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": "43f6afa6a823ae9f34be22b981a6fa38fd5590e2"
|
|
16
16
|
}
|