@steedos/standard-permission 2.5.0-beta.23 → 2.5.0-beta.25

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.
@@ -107,6 +107,6 @@ label: 复制
107
107
  type: amis_button
108
108
  visible: !!js/function |
109
109
  function (object_name, record_id, record_permissions, record) {
110
- return false;
110
+
111
111
  return record.record.type == 'profile';
112
112
  }
@@ -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-04-28 14:59:28
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
- const filtersStr = this.query.filters;
97
- const regex = /(?<=permission_set_id eq ')\w+(?=')/g;
98
- const matches = filtersStr.match(regex);
99
- if (matches) {
100
- const permissionSetId = matches[0];
101
- // 查找permissionSetId对应的permissionSet
102
- const permissionSetDoc = (await objectql.getObject('permission_set').directFind({
103
- filters: [
104
- ['_id', '=', permissionSetId],
105
- ]
106
- })[0]);
107
- if (permissionSetDoc) {
108
- // 替换this.query.filters中全部的的permission_set_id为permissionSetDoc.name
109
- 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}')`);
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_idpermissionSetDoc.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.23",
3
+ "version": "2.5.0-beta.25",
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": "49ef7bdf5fca9be70922ebb2275ed0c20bca4ec6"
15
+ "gitHead": "07943cbedb6caa88cc6a6d365c9fa3603660413d"
16
16
  }