@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.
- package/lib/dynamic-load/preload_data.d.ts +3 -0
- package/lib/dynamic-load/preload_data.js +158 -1
- package/lib/dynamic-load/preload_data.js.map +1 -1
- package/lib/dynamic-load/restrictionRules.d.ts +1 -0
- package/lib/dynamic-load/restrictionRules.js +42 -0
- package/lib/dynamic-load/restrictionRules.js.map +1 -0
- package/lib/dynamic-load/shareRules.d.ts +1 -0
- package/lib/dynamic-load/shareRules.js +42 -0
- package/lib/dynamic-load/shareRules.js.map +1 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.js +3 -0
- package/lib/index.js.map +1 -1
- package/lib/metadata-register/_base.d.ts +3 -1
- package/lib/metadata-register/_base.js +16 -5
- package/lib/metadata-register/_base.js.map +1 -1
- package/lib/metadata-register/permissionFields.d.ts +7 -0
- package/lib/metadata-register/permissionFields.js +18 -0
- package/lib/metadata-register/permissionFields.js.map +1 -0
- package/lib/metadata-register/restrictionRules.d.ts +7 -0
- package/lib/metadata-register/restrictionRules.js +18 -0
- package/lib/metadata-register/restrictionRules.js.map +1 -0
- package/lib/metadata-register/shareRules.d.ts +7 -0
- package/lib/metadata-register/shareRules.js +18 -0
- package/lib/metadata-register/shareRules.js.map +1 -0
- package/lib/types/field_permission.d.ts +4 -0
- package/lib/types/field_permission.js +50 -0
- package/lib/types/field_permission.js.map +1 -0
- package/lib/types/object.d.ts +0 -4
- package/lib/types/object.js +268 -261
- package/lib/types/object.js.map +1 -1
- package/lib/types/object_dynamic_load.js +13 -4
- package/lib/types/object_dynamic_load.js.map +1 -1
- package/lib/types/restrictionRule.d.ts +13 -0
- package/lib/types/restrictionRule.js +75 -0
- package/lib/types/restrictionRule.js.map +1 -0
- package/lib/types/shareRule.d.ts +13 -0
- package/lib/types/shareRule.js +75 -0
- package/lib/types/shareRule.js.map +1 -0
- package/lib/util/field.js +4 -4
- package/lib/util/field.js.map +1 -1
- package/lib/util/function_expression.d.ts +1 -1
- package/lib/util/function_expression.js +3 -2
- package/lib/util/function_expression.js.map +1 -1
- package/package.json +8 -8
- package/src/dynamic-load/preload_data.ts +44 -0
- package/src/dynamic-load/restrictionRules.ts +19 -0
- package/src/dynamic-load/shareRules.ts +19 -0
- package/src/index.ts +4 -1
- package/src/metadata-register/_base.ts +14 -3
- package/src/metadata-register/permissionFields.ts +13 -0
- package/src/metadata-register/restrictionRules.ts +12 -0
- package/src/metadata-register/shareRules.ts +13 -0
- package/src/types/field_permission.ts +26 -0
- package/src/types/object.ts +89 -68
- package/src/types/object_dynamic_load.ts +4 -1
- package/src/types/restrictionRule.ts +57 -0
- package/src/types/shareRule.ts +57 -0
- package/src/util/field.ts +4 -4
- package/src/util/function_expression.ts +2 -2
package/lib/util/field.js.map
CHANGED
|
@@ -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 =
|
|
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":";;;AAAA,0BAA2B;AAE3B,IAAM,SAAS,GAAG,iBAAiB,CAAC;AAEpC,IAAM,aAAa,GAAG,UAAU,IAAI;IAChC,IAAI,OAAO,CAAC;IACZ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC1B,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,OAAO,GAAG,CAAC;SACd;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC5B;IACD,OAAO,GAAG,CAAC;AACf,CAAC,CAAA;AAED,IAAM,cAAc,GAAG,UAAU,QAAQ,EAAE,IAAI;IAC3C,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE;QACvB,OAAO,QAAQ,IAAI,EAAE,CAAC;KACzB;SAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QACjC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;KAChC;SAAM;QACH,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC5C;AACL,CAAC,CAAC;AAEW,QAAA,YAAY,GAAG,UAAU,IAAI;IACtC,IAAI,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;IACxB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC1B,OAAO,KAAK,CAAC;KAChB;IACD,OAAO,GAAG,YAAY,CAAC;IACvB,IAAI,GAAG,oBAAoB,CAAC;IAC5B,IAAI,GAAG,gBAAgB,CAAC;IACxB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QAC3F,OAAO,IAAI,CAAC;KACf;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEW,QAAA,qBAAqB,GAAG,UAAU,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM;
|
|
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.
|
|
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.
|
|
22
|
-
"@steedos/formula": "2.1.
|
|
23
|
-
"@steedos/metadata-core": "2.1.
|
|
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.
|
|
26
|
-
"@steedos/standard-objects": "2.1.
|
|
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.
|
|
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": "
|
|
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:
|
|
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,
|
|
23
|
-
|
|
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
|
+
}
|
package/src/types/object.ts
CHANGED
|
@@ -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
|
|
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
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
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
|
-
}
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
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
|
-
|
|
1590
|
+
// private getObjectPermissionFilters(objectPermission, userSession, isEdit) {
|
|
1591
|
+
// const objectPermissionFilters = [];
|
|
1582
1592
|
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1593
|
+
// let permissionFiltersKey = 'read_filters';
|
|
1594
|
+
// if (isEdit) {
|
|
1595
|
+
// permissionFiltersKey = 'edit_filters';
|
|
1596
|
+
// }
|
|
1587
1597
|
|
|
1588
|
-
|
|
1598
|
+
// const globalData = Object.assign({}, userSession, { now: new Date() });
|
|
1589
1599
|
|
|
1590
|
-
|
|
1600
|
+
// let permissionFilters = objectPermission[permissionFiltersKey];
|
|
1591
1601
|
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
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,
|
|
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
|
-
|
|
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(
|
|
1672
|
-
|
|
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('
|
|
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
|
+
}
|