@steedos/objectql 2.1.57 → 2.1.61

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 (59) hide show
  1. package/lib/dynamic-load/preload_data.d.ts +3 -0
  2. package/lib/dynamic-load/preload_data.js +158 -1
  3. package/lib/dynamic-load/preload_data.js.map +1 -1
  4. package/lib/dynamic-load/restrictionRules.d.ts +1 -0
  5. package/lib/dynamic-load/restrictionRules.js +42 -0
  6. package/lib/dynamic-load/restrictionRules.js.map +1 -0
  7. package/lib/dynamic-load/shareRules.d.ts +1 -0
  8. package/lib/dynamic-load/shareRules.js +42 -0
  9. package/lib/dynamic-load/shareRules.js.map +1 -0
  10. package/lib/index.d.ts +3 -0
  11. package/lib/index.js +3 -0
  12. package/lib/index.js.map +1 -1
  13. package/lib/metadata-register/_base.d.ts +3 -1
  14. package/lib/metadata-register/_base.js +16 -5
  15. package/lib/metadata-register/_base.js.map +1 -1
  16. package/lib/metadata-register/permissionFields.d.ts +7 -0
  17. package/lib/metadata-register/permissionFields.js +18 -0
  18. package/lib/metadata-register/permissionFields.js.map +1 -0
  19. package/lib/metadata-register/restrictionRules.d.ts +7 -0
  20. package/lib/metadata-register/restrictionRules.js +18 -0
  21. package/lib/metadata-register/restrictionRules.js.map +1 -0
  22. package/lib/metadata-register/shareRules.d.ts +7 -0
  23. package/lib/metadata-register/shareRules.js +18 -0
  24. package/lib/metadata-register/shareRules.js.map +1 -0
  25. package/lib/types/field_permission.d.ts +4 -0
  26. package/lib/types/field_permission.js +50 -0
  27. package/lib/types/field_permission.js.map +1 -0
  28. package/lib/types/object.d.ts +0 -4
  29. package/lib/types/object.js +268 -261
  30. package/lib/types/object.js.map +1 -1
  31. package/lib/types/object_dynamic_load.js +13 -4
  32. package/lib/types/object_dynamic_load.js.map +1 -1
  33. package/lib/types/restrictionRule.d.ts +13 -0
  34. package/lib/types/restrictionRule.js +75 -0
  35. package/lib/types/restrictionRule.js.map +1 -0
  36. package/lib/types/shareRule.d.ts +13 -0
  37. package/lib/types/shareRule.js +75 -0
  38. package/lib/types/shareRule.js.map +1 -0
  39. package/lib/util/field.js +4 -4
  40. package/lib/util/field.js.map +1 -1
  41. package/lib/util/function_expression.d.ts +1 -1
  42. package/lib/util/function_expression.js +3 -2
  43. package/lib/util/function_expression.js.map +1 -1
  44. package/package.json +8 -8
  45. package/src/dynamic-load/preload_data.ts +44 -0
  46. package/src/dynamic-load/restrictionRules.ts +19 -0
  47. package/src/dynamic-load/shareRules.ts +19 -0
  48. package/src/index.ts +4 -1
  49. package/src/metadata-register/_base.ts +14 -3
  50. package/src/metadata-register/permissionFields.ts +13 -0
  51. package/src/metadata-register/restrictionRules.ts +12 -0
  52. package/src/metadata-register/shareRules.ts +13 -0
  53. package/src/types/field_permission.ts +26 -0
  54. package/src/types/object.ts +89 -68
  55. package/src/types/object_dynamic_load.ts +4 -1
  56. package/src/types/restrictionRule.ts +57 -0
  57. package/src/types/shareRule.ts +57 -0
  58. package/src/util/field.ts +4 -4
  59. package/src/util/function_expression.ts +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"field.js","sourceRoot":"","sources":["../../src/util/field.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"field.js","sourceRoot":"","sources":["../../src/util/field.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  export declare const isExpression: (func: any) => boolean;
2
- export declare const parseSingleExpression: (func: any, formData: any, dataPath: any, global: any) => any;
2
+ export declare const parseSingleExpression: (func: any, formData: any, dataPath: any, global: any, userSession?: {}) => any;
@@ -39,7 +39,8 @@ exports.isExpression = function (func) {
39
39
  }
40
40
  return false;
41
41
  };
42
- exports.parseSingleExpression = function (func, formData, dataPath, global) {
42
+ exports.parseSingleExpression = function (func, formData, dataPath, global, userSession) {
43
+ if (userSession === void 0) { userSession = {}; }
43
44
  var error, funcBody, parent, parentPath, str;
44
45
  if (formData === void 0) {
45
46
  formData = {};
@@ -48,7 +49,7 @@ exports.parseSingleExpression = function (func, formData, dataPath, global) {
48
49
  parent = getValueByPath(formData, parentPath) || {};
49
50
  if (typeof func === 'string') {
50
51
  funcBody = func.substring(2, func.length - 2);
51
- str = '\n return ' + funcBody.replace(/\bformData\b/g, JSON.stringify(formData).replace(/\bglobal\b/g, globalTag)).replace(/\bglobal\b/g, JSON.stringify(global)).replace(new RegExp('\\b' + globalTag + '\\b', 'g'), 'global').replace(/rootValue/g, JSON.stringify(parent));
52
+ str = "\n var $user=" + JSON.stringify(userSession) + "; return " + funcBody.replace(/\bformData\b/g, JSON.stringify(formData).replace(/\bglobal\b/g, globalTag)).replace(/\bglobal\b/g, JSON.stringify(global)).replace(new RegExp('\\b' + globalTag + '\\b', 'g'), 'global').replace(/rootValue/g, JSON.stringify(parent));
52
53
  try {
53
54
  return Function(str)();
54
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"function_expression.js","sourceRoot":"","sources":["../../src/util/function_expression.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"function_expression.js","sourceRoot":"","sources":["../../src/util/function_expression.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@steedos/objectql",
3
3
  "private": false,
4
- "version": "2.1.57",
4
+ "version": "2.1.61",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "scripts": {
@@ -18,12 +18,12 @@
18
18
  "@salesforce/dev-config": "^1.4.4",
19
19
  "@salesforce/kit": "^1.0.4",
20
20
  "@salesforce/ts-types": "^1.1.1",
21
- "@steedos/filters": "2.1.57",
22
- "@steedos/formula": "2.1.57",
23
- "@steedos/metadata-core": "2.1.57",
21
+ "@steedos/filters": "2.1.61",
22
+ "@steedos/formula": "2.1.61",
23
+ "@steedos/metadata-core": "2.1.61",
24
24
  "@steedos/odata-v4-typeorm": "^1.20.1",
25
- "@steedos/schemas": "2.1.57",
26
- "@steedos/standard-objects": "2.1.57",
25
+ "@steedos/schemas": "2.1.61",
26
+ "@steedos/standard-objects": "2.1.61",
27
27
  "@types/express": "^4.16.1",
28
28
  "@types/mongodb": "^3.1.22",
29
29
  "@types/node": "^11.10.4",
@@ -57,7 +57,7 @@
57
57
  },
58
58
  "devDependencies": {
59
59
  "@salesforce/dev-scripts": "0.3.12",
60
- "@steedos/meteor-bundle-runner": "2.1.57",
60
+ "@steedos/meteor-bundle-runner": "2.1.61",
61
61
  "@types/chai": "^4.1.7",
62
62
  "@types/chai-as-promised": "7.1.0",
63
63
  "@types/mocha": "^5.2.6",
@@ -77,5 +77,5 @@
77
77
  "publishConfig": {
78
78
  "access": "public"
79
79
  },
80
- "gitHead": "ded65c3ad95afec8827dd81d505684459a3ba019"
80
+ "gitHead": "ffa72e7758fdc53be405c3b95f371477500ed602"
81
81
  }
@@ -2,6 +2,10 @@ import { addObjectFieldConfig } from './field'
2
2
  import { addObjectButtonsConfig } from './button'
3
3
  import { addAppConfig, loadObjectLayoutMetadata, SteedosDataSourceType } from '..';
4
4
  import { addTabConfig } from './tabs';
5
+ import { registerRestrictionRules } from '../metadata-register/restrictionRules';
6
+ import { registerShareRules } from '../metadata-register/shareRules';
7
+ import { registerPermissionFields } from '../metadata-register/permissionFields';
8
+ import { getSteedosSchema } from '../types/schema';
5
9
 
6
10
  declare var Creator: any;
7
11
 
@@ -59,3 +63,43 @@ export const preloadDBObjectLayouts = async function(datasource: SteedosDataSour
59
63
  await loadObjectLayoutMetadata(element, `~database-${tableName}`);
60
64
  }
61
65
  }
66
+
67
+
68
+ export const preloadDBRestrictionRules = async function (datasource: SteedosDataSourceType) {
69
+ const schema = getSteedosSchema();
70
+ const tableName = "restriction_rules";
71
+ if (datasource.name === 'meteor') {
72
+ Creator.Collections[tableName] = Creator.createCollection({ name: tableName });
73
+ }
74
+ let records: any = await datasource.find(tableName, {});
75
+
76
+ for await (const element of records) {
77
+ await registerRestrictionRules.register(schema.broker, `~database-${tableName}`, element);
78
+ }
79
+ }
80
+
81
+ export const preloadDBShareRules = async function (datasource: SteedosDataSourceType) {
82
+ const schema = getSteedosSchema();
83
+ const tableName = "share_rules";
84
+ if (datasource.name === 'meteor') {
85
+ Creator.Collections[tableName] = Creator.createCollection({ name: tableName });
86
+ }
87
+ let records: any = await datasource.find(tableName, {});
88
+
89
+ for await (const element of records) {
90
+ await registerShareRules.register(schema.broker, `~database-${tableName}`, element);
91
+ }
92
+ }
93
+
94
+ export const preloadDBPermissionFields = async function (datasource: SteedosDataSourceType) {
95
+ const schema = getSteedosSchema();
96
+ const tableName = "permission_fields";
97
+ if (datasource.name === 'meteor') {
98
+ Creator.Collections[tableName] = Creator.createCollection({ name: tableName });
99
+ }
100
+ let records: any = await datasource.find(tableName, {});
101
+
102
+ for await (const element of records) {
103
+ await registerPermissionFields.register(schema.broker, `~database-${tableName}`, element);
104
+ }
105
+ }
@@ -0,0 +1,19 @@
1
+ import { LoadRestrictionRules } from '@steedos/metadata-core';
2
+ import { registerRestrictionRules } from '../metadata-register/restrictionRules';
3
+ import { getSteedosSchema } from '../types'
4
+ const loadRestrictionRules = new LoadRestrictionRules();
5
+
6
+ export const registerPackageRestrictionRules = async (packagePath: string, packageServiceName: string) => {
7
+ const metadata = loadRestrictionRules.load(packagePath);
8
+ const schema = getSteedosSchema();
9
+ for (const apiName in metadata) {
10
+ const item = metadata[apiName];
11
+ await registerRestrictionRules.register(schema.broker, packageServiceName, Object.assign(item, {
12
+ is_system: true, record_permissions: {
13
+ allowEdit: false,
14
+ allowDelete: false,
15
+ allowRead: true,
16
+ }
17
+ }))
18
+ }
19
+ }
@@ -0,0 +1,19 @@
1
+ import { LoadShareRules } from '@steedos/metadata-core';
2
+ import { registerRestrictionRules } from '../metadata-register/restrictionRules';
3
+ import { getSteedosSchema } from '../types'
4
+ const loadShareRules = new LoadShareRules();
5
+
6
+ export const registerPackageRestrictionRules = async (packagePath: string, packageServiceName: string) => {
7
+ const metadata = loadShareRules.load(packagePath);
8
+ const schema = getSteedosSchema();
9
+ for (const apiName in metadata) {
10
+ const item = metadata[apiName];
11
+ await registerRestrictionRules.register(schema.broker, packageServiceName, Object.assign(item, {
12
+ is_system: true, record_permissions: {
13
+ allowEdit: false,
14
+ allowDelete: false,
15
+ allowRead: true,
16
+ }
17
+ }))
18
+ }
19
+ }
package/src/index.ts CHANGED
@@ -10,4 +10,7 @@ export * from "./dynamic-load"
10
10
  export * from './metadata-register/query'
11
11
  export * from './metadata-register/chart'
12
12
  export * from './metadata-register/page'
13
- export * from './metadata-register/tab'
13
+ export * from './metadata-register/tab'
14
+ export * from './metadata-register/shareRules'
15
+ export * from './metadata-register/restrictionRules'
16
+ export * from './metadata-register/permissionFields'
@@ -1,3 +1,5 @@
1
+ import { JsonMap } from "@salesforce/ts-types"
2
+ import * as _ from 'lodash';
1
3
  const clone = require('clone');
2
4
  export class RegisterBase{
3
5
  serviceName;
@@ -5,9 +7,14 @@ export class RegisterBase{
5
7
  this.serviceName = serviceName;
6
8
  }
7
9
 
10
+ getApiName(metadata) {
11
+ return metadata._id || metadata.name;
12
+ }
13
+
8
14
  async register(broker, packageServiceName, config){
9
15
  const metadata = clone(config);
10
- const res = await broker.call(`${this.serviceName}.add`, {apiName: metadata._id || metadata.name ,data: metadata}, {meta: {
16
+ const res = await broker.call(`${this.serviceName}.add`, { apiName: this.getApiName(metadata), data: metadata }, {
17
+ meta: {
11
18
  metadataServiceName: packageServiceName,
12
19
  caller: {
13
20
  nodeID: broker.nodeID,
@@ -19,8 +26,12 @@ export class RegisterBase{
19
26
  return res;
20
27
  }
21
28
 
22
- async remove(broker, metadataApiName){
23
- const res = await broker.call(`${this.serviceName}.delete`, {fullName: metadataApiName});
29
+ async remove(broker, metadataApiNameOrConfig: string | JsonMap) {
30
+ let metadataApiName = metadataApiNameOrConfig;
31
+ if (_.isObject(metadataApiName)) {
32
+ metadataApiName = this.getApiName(metadataApiNameOrConfig);
33
+ }
34
+ const res = await broker.call(`${this.serviceName}.delete`, { fullName: metadataApiName, metadataApiName: metadataApiName });
24
35
  return res;
25
36
  }
26
37
 
@@ -0,0 +1,13 @@
1
+ import { RegisterBase } from "./_base";
2
+ const SERVICE_NAME = 'permission_fields';
3
+ class RegisterPermissionFields extends RegisterBase {
4
+ constructor() {
5
+ super(SERVICE_NAME);
6
+ }
7
+
8
+ getApiName(config) {
9
+ return `${config.name}`
10
+ }
11
+ }
12
+
13
+ export const registerPermissionFields = new RegisterPermissionFields();
@@ -0,0 +1,12 @@
1
+ import { RegisterBase } from "./_base";
2
+ const SERVICE_NAME = 'restriction_rules';
3
+ class RegisterRestrictionRules extends RegisterBase {
4
+ constructor() {
5
+ super(SERVICE_NAME);
6
+ }
7
+
8
+ getApiName(config) {
9
+ return `${config.object_name}.${config.name}`
10
+ }
11
+ }
12
+ export const registerRestrictionRules = new RegisterRestrictionRules();
@@ -0,0 +1,13 @@
1
+ import { RegisterBase } from "./_base";
2
+ const SERVICE_NAME = 'share_rules';
3
+ class RegisterShareRules extends RegisterBase {
4
+ constructor() {
5
+ super(SERVICE_NAME);
6
+ }
7
+
8
+ getApiName(config) {
9
+ return `${config.object_name}.${config.name}`
10
+ }
11
+ }
12
+
13
+ export const registerShareRules = new RegisterShareRules();
@@ -0,0 +1,26 @@
1
+ import { registerPermissionFields } from '../metadata-register/permissionFields';
2
+ import { getSteedosSchema } from '../types'
3
+ import * as _ from 'lodash'
4
+
5
+ export class FieldPermission {
6
+
7
+ static async getObjectFieldsPermission(objectApiName, permissionSetApiName) {
8
+ const schema = getSteedosSchema();
9
+ return await registerPermissionFields.find(schema.broker, {
10
+ pattern: `${permissionSetApiName}.${objectApiName}.*`
11
+ })
12
+ }
13
+
14
+ static async getObjectFieldsPermissionGroupRole(objectApiName) {
15
+ const permissions = await this.getObjectFieldsPermission(objectApiName, '*');
16
+ const result = {};
17
+ _.each(permissions, (permission) => {
18
+ const { permission_set_id, field, editable, readable } = permission.metadata;
19
+ if (!result[permission_set_id]) {
20
+ result[permission_set_id] = [];
21
+ }
22
+ result[permission_set_id].push({ field: field, read: readable, edit: editable })
23
+ })
24
+ return result;
25
+ }
26
+ }
@@ -1,6 +1,6 @@
1
1
  import { Dictionary, JsonMap } from "@salesforce/ts-types";
2
2
  import { SteedosTriggerType, SteedosFieldType, SteedosFieldTypeConfig, SteedosSchema, SteedosListenerConfig, SteedosObjectListViewTypeConfig, SteedosObjectListViewType, SteedosIDType, SteedosObjectPermissionTypeConfig, SteedosActionType, SteedosActionTypeConfig, SteedosUserSession, getSteedosSchema } from ".";
3
- import { getUserObjectSharesFilters, isTemplateSpace, isCloudAdminSpace, generateActionParams, absoluteUrl, isExpression, parseSingleExpression } from '../util'
3
+ import { getUserObjectSharesFilters, isTemplateSpace, isCloudAdminSpace, generateActionParams, absoluteUrl } from '../util'
4
4
  import _ = require("underscore");
5
5
  import { SteedosTriggerTypeConfig, SteedosTriggerContextConfig } from "./trigger";
6
6
  import { SteedosQueryOptions, SteedosQueryFilters } from "./query";
@@ -15,6 +15,9 @@ import { brokeEmitEvents } from "./object_events";
15
15
  import { translationObject } from "@steedos/i18n";
16
16
  import { getObjectLayouts } from "./object_layouts";
17
17
  import { sortBy, forEach } from 'lodash';
18
+ import { ShareRules } from './shareRule';
19
+ import { RestrictionRule } from './restrictionRule';
20
+ import { FieldPermission } from './field_permission';
18
21
 
19
22
  const clone = require('clone')
20
23
 
@@ -636,19 +639,25 @@ export class SteedosObjectType extends SteedosObjectProperties {
636
639
  uneditable_fields: null,
637
640
  unrelated_objects: null,
638
641
  field_permissions: null,
639
- read_filters: [],
640
- edit_filters: []
642
+ // read_filters: [],
643
+ // edit_filters: []
641
644
  }
642
645
 
643
646
  if (_.isEmpty(roles)) {
644
647
  throw new Error('not find user permission');
645
648
  }
646
649
 
650
+ const rolesFieldsPermission = await FieldPermission.getObjectFieldsPermissionGroupRole(this.name);
651
+
647
652
  roles.forEach((role) => {
648
- let rolePermission = objectRolesPermission[role]
653
+ let rolePermission = objectRolesPermission[role];
649
654
  if (rolePermission) {
655
+ let roleFieldsPermission = rolesFieldsPermission[role];
650
656
  _.each(userObjectPermission, (v, k) => {
651
- let _v = rolePermission[k]
657
+ let _v = rolePermission[k];
658
+ if (k === 'field_permissions') {
659
+ _v = roleFieldsPermission
660
+ }
652
661
  if (_.isBoolean(v)) {
653
662
  if (v === false && _v === true) {
654
663
  userObjectPermission[k] = _v
@@ -1315,31 +1324,31 @@ export class SteedosObjectType extends SteedosObjectProperties {
1315
1324
  return await this.runTriggerActions(when, context)
1316
1325
  }
1317
1326
 
1318
- private async appendRecordPermission(records, userSession) {
1319
- const _ids = _.pluck(records, '_id');
1320
- const objPm = await this.getUserObjectPermission(userSession);
1321
- const permissionFilters = this.getObjectPermissionFilters(objPm, userSession, true);
1322
- if (_.isEmpty(permissionFilters)) {
1323
- return;
1324
- }
1325
- const filters = formatFiltersToODataQuery(['_id', 'in', _ids])
1326
-
1327
- const results = await this.directFind({
1328
- fields: ['_id'],
1329
- filters: `(${filters}) and (${permissionFilters.join(' or ')})`
1330
- });
1331
- const allowEditIds = _.pluck(results, '_id');
1332
- _.each(records, (record) => {
1333
- if (_.include(allowEditIds, record._id)) {
1334
- record.record_permissions = {
1335
- allowRead: true,
1336
- allowEdit: true,
1337
- allowDelete: true,
1338
- }
1339
- }
1340
- })
1341
-
1342
- }
1327
+ // private async appendRecordPermission(records, userSession) {
1328
+ // const _ids = _.pluck(records, '_id');
1329
+ // const objPm = await this.getUserObjectPermission(userSession);
1330
+ // const permissionFilters = this.getObjectPermissionFilters(objPm, userSession, true);
1331
+ // if (_.isEmpty(permissionFilters)) {
1332
+ // return;
1333
+ // }
1334
+ // const filters = formatFiltersToODataQuery(['_id', 'in', _ids])
1335
+
1336
+ // const results = await this.directFind({
1337
+ // fields: ['_id'],
1338
+ // filters: `(${filters}) and (${permissionFilters.join(' or ')})`
1339
+ // });
1340
+ // const allowEditIds = _.pluck(results, '_id');
1341
+ // _.each(records, (record) => {
1342
+ // if (_.include(allowEditIds, record._id)) {
1343
+ // record.record_permissions = {
1344
+ // allowRead: true,
1345
+ // allowEdit: true,
1346
+ // allowDelete: true,
1347
+ // }
1348
+ // }
1349
+ // })
1350
+
1351
+ // }
1343
1352
 
1344
1353
  private async getTriggerContext(when: string, method: string, args: any[], recordId?: string) {
1345
1354
 
@@ -1491,15 +1500,16 @@ export class SteedosObjectType extends SteedosObjectProperties {
1491
1500
  let values = returnValue || {}
1492
1501
  if (method === 'count') {
1493
1502
  values = returnValue || 0
1494
- } else {
1495
- if (userSession) {
1496
- let _records = returnValue
1497
- if (method == 'findOne' && returnValue) {
1498
- _records = [_records]
1499
- }
1500
- await this.appendRecordPermission(_records, userSession);
1501
- }
1502
- }
1503
+ }
1504
+ // else{
1505
+ // if (userSession) {
1506
+ // let _records = returnValue
1507
+ // if (method == 'findOne' && returnValue) {
1508
+ // _records = [_records]
1509
+ // }
1510
+ // await this.appendRecordPermission(_records, userSession);
1511
+ // }
1512
+ // }
1503
1513
  Object.assign(afterTriggerContext, { data: { values: values } })
1504
1514
  }
1505
1515
  // console.log("==returnValue==", returnValue);
@@ -1577,32 +1587,32 @@ export class SteedosObjectType extends SteedosObjectProperties {
1577
1587
  }
1578
1588
  }
1579
1589
 
1580
- private getObjectPermissionFilters(objectPermission, userSession, isEdit) {
1581
- const objectPermissionFilters = [];
1590
+ // private getObjectPermissionFilters(objectPermission, userSession, isEdit) {
1591
+ // const objectPermissionFilters = [];
1582
1592
 
1583
- let permissionFiltersKey = 'read_filters';
1584
- if (isEdit) {
1585
- permissionFiltersKey = 'edit_filters';
1586
- }
1593
+ // let permissionFiltersKey = 'read_filters';
1594
+ // if (isEdit) {
1595
+ // permissionFiltersKey = 'edit_filters';
1596
+ // }
1587
1597
 
1588
- const globalData = Object.assign({}, userSession, { now: new Date() });
1598
+ // const globalData = Object.assign({}, userSession, { now: new Date() });
1589
1599
 
1590
- let permissionFilters = objectPermission[permissionFiltersKey];
1600
+ // let permissionFilters = objectPermission[permissionFiltersKey];
1591
1601
 
1592
- _.each(permissionFilters, (permissionFilter) => {
1593
- if (_.isString(permissionFilter) && isExpression(permissionFilter.trim())) {
1594
- try {
1595
- const filters = parseSingleExpression(permissionFilter, {}, "#", globalData);
1596
- if (filters && !_.isString(filters)) {
1597
- objectPermissionFilters.push(`(${formatFiltersToODataQuery(filters, userSession)})`)
1598
- }
1599
- } catch (error) {
1600
- console.error(`getObjectPermissionFilters error`, permissionFilter, error.message);
1601
- }
1602
- }
1603
- })
1604
- return objectPermissionFilters;
1605
- }
1602
+ // _.each(permissionFilters, (permissionFilter) => {
1603
+ // if (_.isString(permissionFilter) && isExpression(permissionFilter.trim())) {
1604
+ // try {
1605
+ // const filters = parseSingleExpression(permissionFilter, {}, "#", globalData);
1606
+ // if (filters && !_.isString(filters)) {
1607
+ // objectPermissionFilters.push(`(${formatFiltersToODataQuery(filters, userSession)})`)
1608
+ // }
1609
+ // } catch (error) {
1610
+ // console.error(`getObjectPermissionFilters error`, permissionFilter, error.message);
1611
+ // }
1612
+ // }
1613
+ // })
1614
+ // return objectPermissionFilters;
1615
+ // }
1606
1616
 
1607
1617
  /**
1608
1618
  * 把query.filters用formatFiltersToODataQuery转为odata query
@@ -1646,7 +1656,7 @@ export class SteedosObjectType extends SteedosObjectProperties {
1646
1656
  return
1647
1657
  }
1648
1658
 
1649
- let spaceFilter, companyFilter, ownerFilter, sharesFilter, objectPermissionFilters, clientFilter = query.filters, filters, permissionFilters = [], userFilters = [];
1659
+ let spaceFilter, companyFilter, ownerFilter, sharesFilter, shareRuleFilters, restrictionRuleFilters, clientFilter = query.filters, filters, permissionFilters = [], userFilters = [];
1650
1660
 
1651
1661
  if (spaceId) {
1652
1662
  spaceFilter = `(space eq '${spaceId}')`;
@@ -1666,16 +1676,27 @@ export class SteedosObjectType extends SteedosObjectProperties {
1666
1676
  ownerFilter = `(owner eq '${userId}')`;
1667
1677
  }
1668
1678
 
1669
- objectPermissionFilters = this.getObjectPermissionFilters(objPm, userSession, false);
1679
+ shareRuleFilters = await ShareRules.getUserObjectFilters(this.name, userSession);
1680
+
1681
+ if (!_.isEmpty(shareRuleFilters)) {
1682
+ permissionFilters.push(`(${shareRuleFilters.join(' or ')})`);
1683
+ }
1684
+
1685
+ restrictionRuleFilters = await RestrictionRule.getUserObjectFilters(this.name, userSession);
1670
1686
 
1671
- if (!_.isEmpty(objectPermissionFilters)) {
1672
- permissionFilters.push(`(${objectPermissionFilters.join(' or ')})`);
1687
+ if (!_.isEmpty(restrictionRuleFilters)) {
1688
+ userFilters.push(`(${restrictionRuleFilters.join(' or ')})`);
1673
1689
  }
1690
+ // objectPermissionFilters = this.getObjectPermissionFilters(objPm, userSession, false);
1691
+
1692
+ // if (!_.isEmpty(objectPermissionFilters)) {
1693
+ // permissionFilters.push(`(${objectPermissionFilters.join(' or ')})`);
1694
+ // }
1674
1695
 
1675
1696
  sharesFilter = getUserObjectSharesFilters(this.name, userSession);
1676
1697
 
1677
1698
  if (!_.isEmpty(companyFilter)) {
1678
- permissionFilters.push(`(${companyFilter.join(' or ')})`);
1699
+ permissionFilters.push(`(${companyFilter.join(' and ')})`);
1679
1700
  }
1680
1701
 
1681
1702
  if (ownerFilter) {
@@ -1710,7 +1731,7 @@ export class SteedosObjectType extends SteedosObjectProperties {
1710
1731
  }
1711
1732
  }
1712
1733
  else if (method === 'update' || method === 'updateOne') {
1713
- const permissionFilters = this.getObjectPermissionFilters(objPm, userSession, true);
1734
+ const permissionFilters = null; //this.getObjectPermissionFilters(objPm, userSession, true);
1714
1735
  if (!objPm.allowEdit && _.isEmpty(permissionFilters)) {
1715
1736
  throw new Error(`no ${method} permission!`);
1716
1737
  }
@@ -1777,7 +1798,7 @@ export class SteedosObjectType extends SteedosObjectProperties {
1777
1798
  }
1778
1799
  }
1779
1800
  else if (method === 'delete') {
1780
- const permissionFilters = this.getObjectPermissionFilters(objPm, userSession, true);
1801
+ const permissionFilters = null; //this.getObjectPermissionFilters(objPm, userSession, true);
1781
1802
  if (!objPm.allowDelete && _.isEmpty(permissionFilters)) {
1782
1803
  throw new Error(`no ${method} permission!`);
1783
1804
  }
@@ -3,7 +3,7 @@ import path = require('path')
3
3
  import { SteedosObjectTypeConfig, SteedosObjectPermissionTypeConfig, SteedosActionTypeConfig, getDataSource } from '.'
4
4
  // import { isMeteor } from '../util'
5
5
  import { Dictionary } from '@salesforce/ts-types';
6
- import { loadObjectFields, loadObjectListViews, loadObjectButtons, loadObjectMethods, loadObjectActions, loadObjectTriggers, addObjectListenerConfig, loadObjectLayouts, getLazyLoadFields, getLazyLoadButtons, loadObjectPermissions, loadSourceProfiles, loadSourcePermissionset, loadObjectValidationRules, loadSourceRoles, loadSourceFlowRoles, loadSourceApprovalProcesses, loadSourceWorkflows, loadStandardProfiles, loadStandardPermissionsets, preloadDBObjectFields, preloadDBObjectButtons, preloadDBApps, preloadDBObjectLayouts, preloadDBTabs } from '../dynamic-load'
6
+ import { loadObjectFields, loadObjectListViews, loadObjectButtons, loadObjectMethods, loadObjectActions, loadObjectTriggers, addObjectListenerConfig, loadObjectLayouts, getLazyLoadFields, getLazyLoadButtons, loadObjectPermissions, loadSourceProfiles, loadSourcePermissionset, loadObjectValidationRules, loadSourceRoles, loadSourceFlowRoles, loadSourceApprovalProcesses, loadSourceWorkflows, loadStandardProfiles, loadStandardPermissionsets, preloadDBObjectFields, preloadDBObjectButtons, preloadDBApps, preloadDBObjectLayouts, preloadDBTabs, preloadDBShareRules, preloadDBRestrictionRules, preloadDBPermissionFields } from '../dynamic-load'
7
7
  import { transformListenersToTriggers } from '..';
8
8
  import { getSteedosSchema } from './schema';
9
9
 
@@ -338,6 +338,9 @@ export const loadStandardMetadata = async (serviceName: string, datasourceApiNam
338
338
  await preloadDBObjectLayouts(datasource);
339
339
  await preloadDBObjectFields(datasource);
340
340
  await preloadDBObjectButtons(datasource);
341
+ await preloadDBShareRules(datasource);
342
+ await preloadDBRestrictionRules(datasource);
343
+ await preloadDBPermissionFields(datasource);
341
344
  }
342
345
  }
343
346
  }
@@ -0,0 +1,57 @@
1
+ import { registerRestrictionRules } from '../metadata-register/restrictionRules';
2
+ import { getSteedosSchema } from '../types'
3
+ import * as _ from 'lodash'
4
+ import { isExpression, parseSingleExpression } from '../util'
5
+ import { formatFiltersToODataQuery } from "@steedos/filters";
6
+
7
+ export type SteedosRestrictionRuleConfig = {
8
+ _id: string,
9
+ name: string,
10
+ object_name: string,
11
+ active: boolean,
12
+ record_filter: string,
13
+ entry_criteria: string,
14
+ description: string
15
+ }
16
+
17
+ export class RestrictionRule {
18
+ static async find(objectApiName) {
19
+ const schema = getSteedosSchema();
20
+ return await registerRestrictionRules.find(schema.broker, {
21
+ pattern: `${objectApiName}.*`
22
+ })
23
+ }
24
+ static async getUserObjectFilters(objectApiName, userSession: any) {
25
+ const rules = await this.find(objectApiName);
26
+ if (_.isEmpty(rules)) {
27
+ return;
28
+ }
29
+ const rulesFilters = [];
30
+ const globalData = { now: new Date() };
31
+ _.each(rules, (rule) => {
32
+ const { active, entry_criteria, record_filter } = rule.metadata;
33
+ if (active) {
34
+ if (_.isString(entry_criteria) && isExpression(entry_criteria.trim())) {
35
+ try {
36
+ const meetCriteria = parseSingleExpression(entry_criteria, {}, "#", globalData, userSession);
37
+ if (_.isBoolean(meetCriteria) && meetCriteria) {
38
+ if (_.isString(record_filter) && isExpression(record_filter.trim())) {
39
+ try {
40
+ const filters = parseSingleExpression(record_filter, {}, "#", globalData, userSession);
41
+ if (filters && !_.isString(filters)) {
42
+ rulesFilters.push(`(${formatFiltersToODataQuery(filters, userSession)})`)
43
+ }
44
+ } catch (error) {
45
+ console.error(`RestrictionRule.getUserObjectFilters record_filter error`, objectApiName, record_filter, error.message);
46
+ }
47
+ }
48
+ }
49
+ } catch (error) {
50
+ console.error(`RestrictionRule.getUserObjectFilters entry_criteria error`, objectApiName, entry_criteria, error.message);
51
+ }
52
+ }
53
+ }
54
+ })
55
+ return rulesFilters;
56
+ }
57
+ }