@steedos/service-metadata-server 3.0.0-beta.12 → 3.0.0-beta.120
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/metadataService.js +61 -40
- package/lib/metadataService.js.map +1 -1
- package/lib/permissionFieldsService.js +67 -25
- package/lib/permissionFieldsService.js.map +1 -1
- package/package.json +12 -13
- package/src/metadataService.ts +261 -185
- package/src/permissionFieldsService.ts +145 -95
package/lib/metadataService.js
CHANGED
|
@@ -4,12 +4,12 @@ const tslib_1 = require("tslib");
|
|
|
4
4
|
const _ = require("lodash");
|
|
5
5
|
module.exports = {
|
|
6
6
|
name: "#",
|
|
7
|
-
dependencies: [
|
|
7
|
+
dependencies: ["metadata"],
|
|
8
8
|
methods: {
|
|
9
9
|
getMatadataCacherKey: {
|
|
10
10
|
handler(metadataApiName) {
|
|
11
11
|
return `$steedos.#${this.settings.metadataType}.${metadataApiName}`;
|
|
12
|
-
}
|
|
12
|
+
},
|
|
13
13
|
},
|
|
14
14
|
getServiceConfig: {
|
|
15
15
|
handler(serviceName, apiName, meta) {
|
|
@@ -18,37 +18,37 @@ module.exports = {
|
|
|
18
18
|
const metadataConfig = yield this.broker.call(`metadata.getServiceMetadata`, {
|
|
19
19
|
serviceName,
|
|
20
20
|
metadataType,
|
|
21
|
-
metadataApiName: apiName
|
|
21
|
+
metadataApiName: apiName,
|
|
22
22
|
}, { meta: meta });
|
|
23
23
|
return metadataConfig === null || metadataConfig === void 0 ? void 0 : metadataConfig.metadata;
|
|
24
24
|
});
|
|
25
|
-
}
|
|
25
|
+
},
|
|
26
26
|
},
|
|
27
27
|
getServicesConfigs: {
|
|
28
28
|
handler(apiName_1, meta_1) {
|
|
29
29
|
return tslib_1.__awaiter(this, arguments, void 0, function* (apiName, meta, pluck = true) {
|
|
30
|
-
const serviceName =
|
|
30
|
+
const serviceName = "*";
|
|
31
31
|
const metadataType = this.settings.metadataType;
|
|
32
32
|
const configs = yield this.broker.call(`metadata.getServiceMetadatas`, {
|
|
33
33
|
serviceName,
|
|
34
34
|
metadataType,
|
|
35
|
-
metadataApiName: apiName
|
|
35
|
+
metadataApiName: apiName,
|
|
36
36
|
}, { meta: meta });
|
|
37
37
|
if (pluck) {
|
|
38
|
-
return _.map(configs,
|
|
38
|
+
return _.map(configs, "metadata");
|
|
39
39
|
}
|
|
40
40
|
else {
|
|
41
41
|
return configs;
|
|
42
42
|
}
|
|
43
43
|
});
|
|
44
|
-
}
|
|
44
|
+
},
|
|
45
45
|
},
|
|
46
46
|
register: {
|
|
47
47
|
handler(apiName, data, meta) {
|
|
48
48
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
49
|
-
return yield this.broker.call(
|
|
49
|
+
return yield this.broker.call("metadata.add", { key: this.getMatadataCacherKey(apiName), data: data }, { meta: meta });
|
|
50
50
|
});
|
|
51
|
-
}
|
|
51
|
+
},
|
|
52
52
|
},
|
|
53
53
|
mregister: {
|
|
54
54
|
handler(data, meta) {
|
|
@@ -60,11 +60,11 @@ module.exports = {
|
|
|
60
60
|
_.map(data, (value, key) => {
|
|
61
61
|
mdata[this.getMatadataCacherKey(key)] = value;
|
|
62
62
|
});
|
|
63
|
-
return yield this.broker.call(
|
|
64
|
-
data: mdata
|
|
63
|
+
return yield this.broker.call("metadata.madd", {
|
|
64
|
+
data: mdata,
|
|
65
65
|
}, { meta: meta });
|
|
66
66
|
});
|
|
67
|
-
}
|
|
67
|
+
},
|
|
68
68
|
},
|
|
69
69
|
refresh: {
|
|
70
70
|
handler(apiName, meta) {
|
|
@@ -79,7 +79,7 @@ module.exports = {
|
|
|
79
79
|
}), config);
|
|
80
80
|
return config;
|
|
81
81
|
});
|
|
82
|
-
}
|
|
82
|
+
},
|
|
83
83
|
},
|
|
84
84
|
mrefresh: {
|
|
85
85
|
handler(meta) {
|
|
@@ -89,9 +89,12 @@ module.exports = {
|
|
|
89
89
|
return null;
|
|
90
90
|
}
|
|
91
91
|
let mconfig = {};
|
|
92
|
-
_.map(_.groupBy(configs,
|
|
92
|
+
_.map(_.groupBy(configs, "metadataApiName"), (_configs, metadataApiName) => {
|
|
93
93
|
let config = {};
|
|
94
|
-
const __configs = _.map(_configs,
|
|
94
|
+
const __configs = _.map(_configs, "metadata");
|
|
95
|
+
_.sortBy(__configs, function (o) {
|
|
96
|
+
return -o.__timestamp;
|
|
97
|
+
});
|
|
95
98
|
config = _.defaultsDeep({}, ..._.sortBy(__configs, function (o) {
|
|
96
99
|
return o && o._id ? -1 : 1;
|
|
97
100
|
}), config);
|
|
@@ -99,43 +102,43 @@ module.exports = {
|
|
|
99
102
|
});
|
|
100
103
|
return mconfig;
|
|
101
104
|
});
|
|
102
|
-
}
|
|
105
|
+
},
|
|
103
106
|
},
|
|
104
107
|
removeServiceMetadata: {
|
|
105
108
|
handler(serviceName, apiName, meta) {
|
|
106
109
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
107
110
|
const metadataType = this.settings.metadataType;
|
|
108
|
-
return yield this.broker.call(
|
|
111
|
+
return yield this.broker.call("metadata.removeServiceMetadata", {
|
|
109
112
|
serviceName,
|
|
110
113
|
metadataType,
|
|
111
|
-
metadataApiName: apiName
|
|
114
|
+
metadataApiName: apiName,
|
|
112
115
|
}, meta);
|
|
113
116
|
});
|
|
114
|
-
}
|
|
115
|
-
}
|
|
117
|
+
},
|
|
118
|
+
},
|
|
116
119
|
},
|
|
117
120
|
actions: {
|
|
118
121
|
get: {
|
|
119
122
|
handler(ctx) {
|
|
120
123
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
121
|
-
return yield ctx.broker.call(
|
|
124
|
+
return yield ctx.broker.call("metadata.get", { key: this.getMatadataCacherKey(ctx.params.metadataApiName) }, { meta: ctx.meta });
|
|
122
125
|
});
|
|
123
|
-
}
|
|
126
|
+
},
|
|
124
127
|
},
|
|
125
128
|
getAll: {
|
|
126
129
|
handler(ctx) {
|
|
127
130
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
128
|
-
return yield ctx.broker.call(
|
|
131
|
+
return yield ctx.broker.call("metadata.filter", { key: this.getMatadataCacherKey("*") }, { meta: ctx.meta });
|
|
129
132
|
});
|
|
130
|
-
}
|
|
133
|
+
},
|
|
131
134
|
},
|
|
132
135
|
filter: {
|
|
133
136
|
handler(ctx) {
|
|
134
137
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
135
138
|
let { pattern } = ctx.params;
|
|
136
|
-
return yield ctx.broker.call(
|
|
139
|
+
return yield ctx.broker.call("metadata.filter", { key: this.getMatadataCacherKey(pattern) }, { meta: ctx.meta });
|
|
137
140
|
});
|
|
138
|
-
}
|
|
141
|
+
},
|
|
139
142
|
},
|
|
140
143
|
add: {
|
|
141
144
|
handler(ctx) {
|
|
@@ -147,49 +150,65 @@ module.exports = {
|
|
|
147
150
|
if (metadataConfig && metadataConfig.metadata) {
|
|
148
151
|
config = _.defaultsDeep(config, metadataConfig.metadata);
|
|
149
152
|
}
|
|
150
|
-
yield ctx.broker.call(
|
|
153
|
+
yield ctx.broker.call("metadata.addServiceMetadata", { key: this.getMatadataCacherKey(metadataApiName), data: config }, {
|
|
154
|
+
meta: Object.assign({}, ctx.meta, {
|
|
155
|
+
metadataType: this.settings.metadataType,
|
|
156
|
+
metadataApiName: metadataApiName,
|
|
157
|
+
}),
|
|
158
|
+
});
|
|
151
159
|
const newConfig = yield this.refresh(metadataApiName, ctx.meta);
|
|
152
160
|
if (newConfig) {
|
|
153
161
|
return yield this.register(metadataApiName, newConfig, ctx.meta);
|
|
154
162
|
}
|
|
155
163
|
});
|
|
156
|
-
}
|
|
164
|
+
},
|
|
157
165
|
},
|
|
158
166
|
madd: {
|
|
159
167
|
handler(ctx) {
|
|
160
168
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
161
169
|
let data = ctx.params.data;
|
|
162
|
-
yield ctx.broker.call(
|
|
170
|
+
yield ctx.broker.call("metadata.maddServiceMetadata", { data: data }, {
|
|
171
|
+
meta: Object.assign({}, ctx.meta, {
|
|
172
|
+
metadataType: this.settings.metadataType,
|
|
173
|
+
}),
|
|
174
|
+
});
|
|
163
175
|
const newmConfig = yield this.mrefresh(ctx.meta);
|
|
164
176
|
if (newmConfig) {
|
|
165
177
|
return yield this.mregister(newmConfig, ctx.meta);
|
|
166
178
|
}
|
|
167
179
|
});
|
|
168
|
-
}
|
|
180
|
+
},
|
|
169
181
|
},
|
|
170
182
|
delete: {
|
|
171
183
|
handler(ctx) {
|
|
172
184
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
173
185
|
const metadataApiName = ctx.params.apiName;
|
|
174
186
|
const serviceName = ctx.meta.metadataServiceName;
|
|
175
|
-
yield this.removeServiceMetadata(serviceName, metadataApiName, {
|
|
187
|
+
yield this.removeServiceMetadata(serviceName, metadataApiName, {
|
|
188
|
+
meta: Object.assign({}, ctx.meta, {
|
|
189
|
+
metadataType: this.settings.metadataType,
|
|
190
|
+
metadataApiName: metadataApiName,
|
|
191
|
+
}),
|
|
192
|
+
});
|
|
176
193
|
const config = yield this.refresh(metadataApiName, ctx.meta);
|
|
177
194
|
if (!config) {
|
|
178
|
-
yield ctx.broker.call(
|
|
195
|
+
yield ctx.broker.call("metadata.delete", {
|
|
196
|
+
key: this.getMatadataCacherKey(metadataApiName),
|
|
197
|
+
});
|
|
179
198
|
}
|
|
180
199
|
else {
|
|
181
200
|
yield this.register(metadataApiName, config, ctx.meta);
|
|
182
201
|
}
|
|
183
202
|
});
|
|
184
|
-
}
|
|
203
|
+
},
|
|
185
204
|
},
|
|
186
205
|
verify: {
|
|
187
206
|
handler(ctx) {
|
|
188
207
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
189
208
|
return true;
|
|
190
209
|
});
|
|
191
|
-
}
|
|
192
|
-
}
|
|
210
|
+
},
|
|
211
|
+
},
|
|
193
212
|
},
|
|
194
213
|
merged(schema) {
|
|
195
214
|
if (!schema.events) {
|
|
@@ -207,10 +226,12 @@ module.exports = {
|
|
|
207
226
|
const metadataApiName = _c;
|
|
208
227
|
const config = yield this.refresh(metadataApiName, ctx.meta);
|
|
209
228
|
if (!config) {
|
|
210
|
-
yield ctx.broker.call(
|
|
229
|
+
yield ctx.broker.call("metadata.delete", {
|
|
230
|
+
key: this.getMatadataCacherKey(metadataApiName),
|
|
231
|
+
});
|
|
211
232
|
}
|
|
212
233
|
else {
|
|
213
|
-
yield this.register(
|
|
234
|
+
yield this.register(metadataApiName, config, {});
|
|
214
235
|
}
|
|
215
236
|
}
|
|
216
237
|
}
|
|
@@ -222,8 +243,8 @@ module.exports = {
|
|
|
222
243
|
finally { if (e_1) throw e_1.error; }
|
|
223
244
|
}
|
|
224
245
|
}
|
|
225
|
-
})
|
|
246
|
+
}),
|
|
226
247
|
};
|
|
227
|
-
}
|
|
248
|
+
},
|
|
228
249
|
};
|
|
229
250
|
//# sourceMappingURL=metadataService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadataService.js","sourceRoot":"","sources":["../src/metadataService.ts"],"names":[],"mappings":";;;AAAA,4BAA6B;AAE7B,MAAM,CAAC,OAAO,GAAG;
|
|
1
|
+
{"version":3,"file":"metadataService.js","sourceRoot":"","sources":["../src/metadataService.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,11 +2,21 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
const _ = require("lodash");
|
|
5
|
-
const metadataService = require(
|
|
6
|
-
const SERVICE_NAME =
|
|
7
|
-
const METADATA_TYPE =
|
|
5
|
+
const metadataService = require("./metadataService");
|
|
6
|
+
const SERVICE_NAME = "permission_fields";
|
|
7
|
+
const METADATA_TYPE = "permission_fields";
|
|
8
8
|
const objectql = require("@steedos/objectql");
|
|
9
|
-
const systemFields = [
|
|
9
|
+
const systemFields = [
|
|
10
|
+
"owner",
|
|
11
|
+
"created",
|
|
12
|
+
"created_by",
|
|
13
|
+
"modified",
|
|
14
|
+
"modified_by",
|
|
15
|
+
"locked",
|
|
16
|
+
"company_id",
|
|
17
|
+
"company_ids",
|
|
18
|
+
"instance_state",
|
|
19
|
+
];
|
|
10
20
|
function getFieldPermission(apiName) {
|
|
11
21
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
12
22
|
const schema = objectql.getSteedosSchema();
|
|
@@ -15,7 +25,8 @@ function getFieldPermission(apiName) {
|
|
|
15
25
|
});
|
|
16
26
|
}
|
|
17
27
|
const getFieldDefaultEditable = (field) => {
|
|
18
|
-
if (_.includes(systemFields, field.name) &&
|
|
28
|
+
if (_.includes(systemFields, field.name) &&
|
|
29
|
+
(field.omit || field.hidden || field.readonly || field.disabled)) {
|
|
19
30
|
return false;
|
|
20
31
|
}
|
|
21
32
|
if (field.omit || field.hidden || field.readonly || field.disabled) {
|
|
@@ -36,33 +47,53 @@ module.exports = {
|
|
|
36
47
|
name: SERVICE_NAME,
|
|
37
48
|
mixins: [metadataService],
|
|
38
49
|
settings: {
|
|
39
|
-
metadataType: METADATA_TYPE
|
|
50
|
+
metadataType: METADATA_TYPE,
|
|
40
51
|
},
|
|
41
52
|
methods: {
|
|
42
53
|
resetFieldPermissions: {
|
|
43
54
|
handler(permissionObjectId, userSession) {
|
|
44
55
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
45
|
-
const record = yield objectql
|
|
56
|
+
const record = yield objectql
|
|
57
|
+
.getObject("permission_objects")
|
|
58
|
+
.findOne(permissionObjectId);
|
|
46
59
|
if (!record) {
|
|
47
60
|
return;
|
|
48
61
|
}
|
|
49
|
-
const permissionSet = yield objectql
|
|
50
|
-
|
|
62
|
+
const permissionSet = yield objectql
|
|
63
|
+
.getObject("permission_set")
|
|
64
|
+
.findOne(record.permission_set_id);
|
|
65
|
+
const fields = yield objectql
|
|
66
|
+
.getObject("object_fields")
|
|
67
|
+
.find({ filters: [["object", "=", record.object_name]] });
|
|
51
68
|
const now = new Date();
|
|
52
69
|
for (const field of fields) {
|
|
53
|
-
const result = yield objectql
|
|
70
|
+
const result = yield objectql
|
|
71
|
+
.getObject("permission_fields")
|
|
72
|
+
.directFind({
|
|
73
|
+
filters: [
|
|
74
|
+
["permission_set_id", "=", permissionSet.name],
|
|
75
|
+
["permission_object", "=", record.name],
|
|
76
|
+
["object_name", "=", record.object_name],
|
|
77
|
+
["field", "=", field.name],
|
|
78
|
+
["is_system", "!=", true],
|
|
79
|
+
],
|
|
80
|
+
});
|
|
54
81
|
const count = result.length;
|
|
55
82
|
if (count == 0) {
|
|
56
83
|
const apiName = `${permissionSet.name}.${record.object_name}.${field.name}`;
|
|
57
84
|
const fieldPermission = yield getFieldPermission(apiName);
|
|
58
|
-
yield objectql.getObject(
|
|
85
|
+
yield objectql.getObject("permission_fields").directInsert({
|
|
59
86
|
name: apiName,
|
|
60
87
|
permission_set_id: permissionSet.name,
|
|
61
88
|
permission_object: record.name,
|
|
62
89
|
object_name: record.object_name,
|
|
63
90
|
field: field.name,
|
|
64
|
-
editable: fieldPermission
|
|
65
|
-
|
|
91
|
+
editable: fieldPermission
|
|
92
|
+
? fieldPermission.editable
|
|
93
|
+
: getFieldDefaultEditable(field),
|
|
94
|
+
readable: fieldPermission
|
|
95
|
+
? fieldPermission.readable
|
|
96
|
+
: getFieldDefaultReadable(field),
|
|
66
97
|
owner: userSession.userId,
|
|
67
98
|
space: userSession.spaceId,
|
|
68
99
|
created: now,
|
|
@@ -70,23 +101,32 @@ module.exports = {
|
|
|
70
101
|
created_by: userSession.userId,
|
|
71
102
|
modified_by: userSession.userId,
|
|
72
103
|
company_id: userSession.company_id,
|
|
73
|
-
company_ids: userSession.company_ids
|
|
104
|
+
company_ids: userSession.company_ids,
|
|
74
105
|
});
|
|
75
106
|
}
|
|
76
107
|
}
|
|
77
|
-
const fieldsPermission = yield objectql
|
|
78
|
-
|
|
79
|
-
|
|
108
|
+
const fieldsPermission = yield objectql
|
|
109
|
+
.getObject("permission_fields")
|
|
110
|
+
.find({
|
|
111
|
+
filters: [
|
|
112
|
+
["permission_set_id", "=", permissionSet.name],
|
|
113
|
+
["object_name", "=", record.object_name],
|
|
114
|
+
],
|
|
115
|
+
});
|
|
116
|
+
const allFields = _.map(fieldsPermission, "field");
|
|
117
|
+
const objectFields = _.map(fields, "name");
|
|
80
118
|
const diffFields = _.difference(allFields, objectFields);
|
|
81
119
|
for (const diffField of diffFields) {
|
|
82
120
|
const fieldPermission = _.find(fieldsPermission, (fp) => {
|
|
83
121
|
return fp.field == diffField;
|
|
84
122
|
});
|
|
85
|
-
yield objectql
|
|
123
|
+
yield objectql
|
|
124
|
+
.getObject("permission_fields")
|
|
125
|
+
.delete(fieldPermission._id);
|
|
86
126
|
}
|
|
87
127
|
});
|
|
88
|
-
}
|
|
89
|
-
}
|
|
128
|
+
},
|
|
129
|
+
},
|
|
90
130
|
},
|
|
91
131
|
actions: {
|
|
92
132
|
resetFieldPermissions: {
|
|
@@ -96,20 +136,22 @@ module.exports = {
|
|
|
96
136
|
const { permissionObjectId } = ctx.params;
|
|
97
137
|
return yield this.resetFieldPermissions(permissionObjectId, userSession);
|
|
98
138
|
});
|
|
99
|
-
}
|
|
139
|
+
},
|
|
100
140
|
},
|
|
101
141
|
resetAllPermissionSetFieldPermissions: {
|
|
102
142
|
handler(ctx) {
|
|
103
143
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
104
144
|
const userSession = ctx.meta.user;
|
|
105
145
|
const { objectName } = ctx.params;
|
|
106
|
-
const records = yield objectql
|
|
146
|
+
const records = yield objectql
|
|
147
|
+
.getObject("permission_objects")
|
|
148
|
+
.directFind({ filters: [["object_name", "=", objectName]] });
|
|
107
149
|
for (const record of records) {
|
|
108
150
|
yield this.resetFieldPermissions(record._id, userSession);
|
|
109
151
|
}
|
|
110
152
|
});
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
|
+
},
|
|
114
156
|
};
|
|
115
157
|
//# sourceMappingURL=permissionFieldsService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissionFieldsService.js","sourceRoot":"","sources":["../src/permissionFieldsService.ts"],"names":[],"mappings":";;;AAAA,4BAA4B;AAC5B,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACrD,MAAM,YAAY,GAAG,mBAAmB,CAAC;AACzC,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAE9C,MAAM,YAAY,GAAG,
|
|
1
|
+
{"version":3,"file":"permissionFieldsService.js","sourceRoot":"","sources":["../src/permissionFieldsService.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,31 +1,30 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steedos/service-metadata-server",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.120",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"build": "rm -rf ./lib && tsc"
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"@steedos/objectql": "3.0.0-beta.
|
|
11
|
-
"@steedos/service-metadata": "3.0.0-beta.
|
|
12
|
-
"@steedos/service-metadata-apps": "3.0.0-beta.
|
|
13
|
-
"@steedos/service-metadata-layouts": "3.0.0-beta.
|
|
14
|
-
"@steedos/service-metadata-objects": "3.0.0-beta.
|
|
15
|
-
"@steedos/service-metadata-permissionsets": "3.0.0-beta.
|
|
16
|
-
"@steedos/service-metadata-tabs": "3.0.0-beta.
|
|
17
|
-
"@steedos/service-metadata-translations": "3.0.0-beta.
|
|
18
|
-
"@steedos/service-metadata-triggers": "3.0.0-beta.
|
|
19
|
-
"@steedos/service-packages": "3.0.0-beta.
|
|
10
|
+
"@steedos/objectql": "3.0.0-beta.120",
|
|
11
|
+
"@steedos/service-metadata": "3.0.0-beta.120",
|
|
12
|
+
"@steedos/service-metadata-apps": "3.0.0-beta.120",
|
|
13
|
+
"@steedos/service-metadata-layouts": "3.0.0-beta.120",
|
|
14
|
+
"@steedos/service-metadata-objects": "3.0.0-beta.120",
|
|
15
|
+
"@steedos/service-metadata-permissionsets": "3.0.0-beta.120",
|
|
16
|
+
"@steedos/service-metadata-tabs": "3.0.0-beta.120",
|
|
17
|
+
"@steedos/service-metadata-translations": "3.0.0-beta.120",
|
|
18
|
+
"@steedos/service-metadata-triggers": "3.0.0-beta.120",
|
|
19
|
+
"@steedos/service-packages": "3.0.0-beta.120",
|
|
20
20
|
"lodash": "^4.17.21",
|
|
21
21
|
"underscore": "1.13.4"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
24
|
"typescript": "5.7.3"
|
|
25
25
|
},
|
|
26
|
-
"private": false,
|
|
27
26
|
"publishConfig": {
|
|
28
27
|
"access": "public"
|
|
29
28
|
},
|
|
30
|
-
"gitHead": "
|
|
29
|
+
"gitHead": "7d47094f59490c8d6bd0c94395e1dba6e0d86bac"
|
|
31
30
|
}
|
package/src/metadataService.ts
CHANGED
|
@@ -1,199 +1,275 @@
|
|
|
1
1
|
import _ = require("lodash");
|
|
2
2
|
|
|
3
3
|
module.exports = {
|
|
4
|
-
|
|
4
|
+
name: "#",
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Dependencies
|
|
8
|
+
*/
|
|
9
|
+
dependencies: ["metadata"],
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
}, meta);
|
|
105
|
-
}
|
|
11
|
+
methods: {
|
|
12
|
+
getMatadataCacherKey: {
|
|
13
|
+
handler(metadataApiName: string) {
|
|
14
|
+
return `$steedos.#${this.settings.metadataType}.${metadataApiName}`;
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
getServiceConfig: {
|
|
18
|
+
async handler(serviceName, apiName, meta) {
|
|
19
|
+
const metadataType = this.settings.metadataType;
|
|
20
|
+
const metadataConfig = await this.broker.call(
|
|
21
|
+
`metadata.getServiceMetadata`,
|
|
22
|
+
{
|
|
23
|
+
serviceName,
|
|
24
|
+
metadataType,
|
|
25
|
+
metadataApiName: apiName,
|
|
26
|
+
},
|
|
27
|
+
{ meta: meta },
|
|
28
|
+
);
|
|
29
|
+
return metadataConfig?.metadata;
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
getServicesConfigs: {
|
|
33
|
+
async handler(apiName, meta, pluck = true) {
|
|
34
|
+
const serviceName = "*";
|
|
35
|
+
const metadataType = this.settings.metadataType;
|
|
36
|
+
const configs = await this.broker.call(
|
|
37
|
+
`metadata.getServiceMetadatas`,
|
|
38
|
+
{
|
|
39
|
+
serviceName,
|
|
40
|
+
metadataType,
|
|
41
|
+
metadataApiName: apiName,
|
|
42
|
+
},
|
|
43
|
+
{ meta: meta },
|
|
44
|
+
);
|
|
45
|
+
if (pluck) {
|
|
46
|
+
return _.map(configs, "metadata");
|
|
47
|
+
} else {
|
|
48
|
+
return configs;
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
register: {
|
|
53
|
+
async handler(apiName, data, meta) {
|
|
54
|
+
return await this.broker.call(
|
|
55
|
+
"metadata.add",
|
|
56
|
+
{ key: this.getMatadataCacherKey(apiName), data: data },
|
|
57
|
+
{ meta: meta },
|
|
58
|
+
);
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
mregister: {
|
|
62
|
+
/**
|
|
63
|
+
* data: {apiName1: value1, apiName2: value2}
|
|
64
|
+
*/
|
|
65
|
+
async handler(data, meta) {
|
|
66
|
+
const mdata = {};
|
|
67
|
+
if (!data || _.isEmpty(data)) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
_.map(data, (value, key) => {
|
|
71
|
+
mdata[this.getMatadataCacherKey(key)] = value;
|
|
72
|
+
});
|
|
73
|
+
return await this.broker.call(
|
|
74
|
+
"metadata.madd",
|
|
75
|
+
{
|
|
76
|
+
data: mdata,
|
|
77
|
+
},
|
|
78
|
+
{ meta: meta },
|
|
79
|
+
);
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
refresh: {
|
|
83
|
+
async handler(apiName, meta) {
|
|
84
|
+
let config: any = {};
|
|
85
|
+
const configs = await this.getServicesConfigs(apiName, meta);
|
|
86
|
+
if (configs.length == 0) {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
config = _.defaultsDeep(
|
|
90
|
+
{},
|
|
91
|
+
..._.sortBy(configs, function (o) {
|
|
92
|
+
return o && o._id ? -1 : 1;
|
|
93
|
+
}),
|
|
94
|
+
config,
|
|
95
|
+
);
|
|
96
|
+
return config;
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
mrefresh: {
|
|
100
|
+
async handler(meta) {
|
|
101
|
+
const configs = await this.getServicesConfigs("*", meta, false);
|
|
102
|
+
if (configs.length == 0) {
|
|
103
|
+
return null;
|
|
106
104
|
}
|
|
105
|
+
let mconfig: any = {};
|
|
106
|
+
_.map(
|
|
107
|
+
_.groupBy(configs, "metadataApiName"),
|
|
108
|
+
(_configs, metadataApiName) => {
|
|
109
|
+
let config: any = {};
|
|
110
|
+
const __configs = _.map(_configs, "metadata");
|
|
111
|
+
_.sortBy(__configs, function (o) {
|
|
112
|
+
return -o.__timestamp;
|
|
113
|
+
});
|
|
114
|
+
config = _.defaultsDeep(
|
|
115
|
+
{},
|
|
116
|
+
..._.sortBy(__configs, function (o) {
|
|
117
|
+
return o && o._id ? -1 : 1;
|
|
118
|
+
}),
|
|
119
|
+
config,
|
|
120
|
+
);
|
|
121
|
+
mconfig[metadataApiName] = config;
|
|
122
|
+
},
|
|
123
|
+
);
|
|
124
|
+
return mconfig;
|
|
125
|
+
},
|
|
107
126
|
},
|
|
127
|
+
removeServiceMetadata: {
|
|
128
|
+
async handler(serviceName, apiName, meta) {
|
|
129
|
+
const metadataType = this.settings.metadataType;
|
|
130
|
+
return await this.broker.call(
|
|
131
|
+
"metadata.removeServiceMetadata",
|
|
132
|
+
{
|
|
133
|
+
serviceName,
|
|
134
|
+
metadataType,
|
|
135
|
+
metadataApiName: apiName,
|
|
136
|
+
},
|
|
137
|
+
meta,
|
|
138
|
+
);
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
/**
|
|
143
|
+
* Actions
|
|
144
|
+
*/
|
|
145
|
+
actions: {
|
|
108
146
|
/**
|
|
109
|
-
*
|
|
147
|
+
* Say a 'Hello' action.
|
|
148
|
+
*
|
|
149
|
+
* @returns
|
|
110
150
|
*/
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
const config = await this.refresh(metadataApiName, ctx.meta);
|
|
166
|
-
if (!config) {
|
|
167
|
-
await ctx.broker.call('metadata.delete', { key: this.getMatadataCacherKey(metadataApiName) })
|
|
168
|
-
} else {
|
|
169
|
-
await this.register(metadataApiName, config, ctx.meta);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
},
|
|
173
|
-
verify: {
|
|
174
|
-
async handler(ctx) {
|
|
175
|
-
return true;
|
|
176
|
-
}
|
|
151
|
+
get: {
|
|
152
|
+
async handler(ctx) {
|
|
153
|
+
return await ctx.broker.call(
|
|
154
|
+
"metadata.get",
|
|
155
|
+
{ key: this.getMatadataCacherKey(ctx.params.metadataApiName) },
|
|
156
|
+
{ meta: ctx.meta },
|
|
157
|
+
);
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
getAll: {
|
|
161
|
+
async handler(ctx) {
|
|
162
|
+
return await ctx.broker.call(
|
|
163
|
+
"metadata.filter",
|
|
164
|
+
{ key: this.getMatadataCacherKey("*") },
|
|
165
|
+
{ meta: ctx.meta },
|
|
166
|
+
);
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
filter: {
|
|
170
|
+
async handler(ctx) {
|
|
171
|
+
let { pattern } = ctx.params;
|
|
172
|
+
return await ctx.broker.call(
|
|
173
|
+
"metadata.filter",
|
|
174
|
+
{ key: this.getMatadataCacherKey(pattern) },
|
|
175
|
+
{ meta: ctx.meta },
|
|
176
|
+
);
|
|
177
|
+
},
|
|
178
|
+
},
|
|
179
|
+
add: {
|
|
180
|
+
async handler(ctx) {
|
|
181
|
+
let config = ctx.params.data;
|
|
182
|
+
const serviceName = ctx.meta.metadataServiceName;
|
|
183
|
+
const metadataApiName = ctx.params.apiName;
|
|
184
|
+
const metadataConfig = await this.getServiceConfig(
|
|
185
|
+
serviceName,
|
|
186
|
+
`${metadataApiName}`,
|
|
187
|
+
ctx.meta,
|
|
188
|
+
);
|
|
189
|
+
if (metadataConfig && metadataConfig.metadata) {
|
|
190
|
+
config = _.defaultsDeep(config, metadataConfig.metadata);
|
|
191
|
+
}
|
|
192
|
+
await ctx.broker.call(
|
|
193
|
+
"metadata.addServiceMetadata",
|
|
194
|
+
{ key: this.getMatadataCacherKey(metadataApiName), data: config },
|
|
195
|
+
{
|
|
196
|
+
meta: Object.assign({}, ctx.meta, {
|
|
197
|
+
metadataType: this.settings.metadataType,
|
|
198
|
+
metadataApiName: metadataApiName,
|
|
199
|
+
}),
|
|
200
|
+
},
|
|
201
|
+
);
|
|
202
|
+
const newConfig = await this.refresh(metadataApiName, ctx.meta);
|
|
203
|
+
if (newConfig) {
|
|
204
|
+
return await this.register(metadataApiName, newConfig, ctx.meta);
|
|
177
205
|
}
|
|
206
|
+
},
|
|
178
207
|
},
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
208
|
+
madd: {
|
|
209
|
+
async handler(ctx) {
|
|
210
|
+
// data : {k1:v1, k2:v2}
|
|
211
|
+
let data = ctx.params.data;
|
|
212
|
+
await ctx.broker.call(
|
|
213
|
+
"metadata.maddServiceMetadata",
|
|
214
|
+
{ data: data },
|
|
215
|
+
{
|
|
216
|
+
meta: Object.assign({}, ctx.meta, {
|
|
217
|
+
metadataType: this.settings.metadataType,
|
|
218
|
+
}),
|
|
219
|
+
},
|
|
220
|
+
);
|
|
221
|
+
const newmConfig = await this.mrefresh(ctx.meta);
|
|
222
|
+
if (newmConfig) {
|
|
223
|
+
return await this.mregister(newmConfig, ctx.meta);
|
|
182
224
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
225
|
+
},
|
|
226
|
+
},
|
|
227
|
+
delete: {
|
|
228
|
+
async handler(ctx) {
|
|
229
|
+
const metadataApiName = ctx.params.apiName;
|
|
230
|
+
const serviceName = ctx.meta.metadataServiceName;
|
|
231
|
+
await this.removeServiceMetadata(serviceName, metadataApiName, {
|
|
232
|
+
meta: Object.assign({}, ctx.meta, {
|
|
233
|
+
metadataType: this.settings.metadataType,
|
|
234
|
+
metadataApiName: metadataApiName,
|
|
235
|
+
}),
|
|
236
|
+
});
|
|
237
|
+
const config = await this.refresh(metadataApiName, ctx.meta);
|
|
238
|
+
if (!config) {
|
|
239
|
+
await ctx.broker.call("metadata.delete", {
|
|
240
|
+
key: this.getMatadataCacherKey(metadataApiName),
|
|
241
|
+
});
|
|
242
|
+
} else {
|
|
243
|
+
await this.register(metadataApiName, config, ctx.meta);
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
},
|
|
247
|
+
verify: {
|
|
248
|
+
async handler(ctx) {
|
|
249
|
+
return true;
|
|
250
|
+
},
|
|
251
|
+
},
|
|
252
|
+
},
|
|
253
|
+
merged(schema) {
|
|
254
|
+
if (!schema.events) {
|
|
255
|
+
schema.events = {};
|
|
198
256
|
}
|
|
257
|
+
schema.events[`$METADATA.${schema.settings.metadataType}.*`] = {
|
|
258
|
+
handler: async (ctx) => {
|
|
259
|
+
const { isClear, metadataApiNames } = ctx.params;
|
|
260
|
+
if (isClear) {
|
|
261
|
+
for await (const metadataApiName of metadataApiNames) {
|
|
262
|
+
const config = await this.refresh(metadataApiName, ctx.meta);
|
|
263
|
+
if (!config) {
|
|
264
|
+
await ctx.broker.call("metadata.delete", {
|
|
265
|
+
key: this.getMatadataCacherKey(metadataApiName),
|
|
266
|
+
});
|
|
267
|
+
} else {
|
|
268
|
+
await this.register(metadataApiName, config, {});
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
},
|
|
273
|
+
};
|
|
274
|
+
},
|
|
199
275
|
};
|
|
@@ -1,110 +1,160 @@
|
|
|
1
|
-
import * as _ from
|
|
2
|
-
const metadataService = require(
|
|
3
|
-
const SERVICE_NAME =
|
|
4
|
-
const METADATA_TYPE =
|
|
1
|
+
import * as _ from "lodash";
|
|
2
|
+
const metadataService = require("./metadataService");
|
|
3
|
+
const SERVICE_NAME = "permission_fields";
|
|
4
|
+
const METADATA_TYPE = "permission_fields";
|
|
5
5
|
const objectql = require("@steedos/objectql");
|
|
6
6
|
|
|
7
|
-
const systemFields = [
|
|
7
|
+
const systemFields = [
|
|
8
|
+
"owner",
|
|
9
|
+
"created",
|
|
10
|
+
"created_by",
|
|
11
|
+
"modified",
|
|
12
|
+
"modified_by",
|
|
13
|
+
"locked",
|
|
14
|
+
"company_id",
|
|
15
|
+
"company_ids",
|
|
16
|
+
"instance_state",
|
|
17
|
+
];
|
|
8
18
|
|
|
9
19
|
async function getFieldPermission(apiName) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
20
|
+
const schema = objectql.getSteedosSchema();
|
|
21
|
+
const config = await objectql.registerPermissionFields.get(
|
|
22
|
+
schema.broker,
|
|
23
|
+
apiName,
|
|
24
|
+
);
|
|
25
|
+
return config ? config.metadata : null;
|
|
13
26
|
}
|
|
14
27
|
|
|
15
28
|
const getFieldDefaultEditable = (field) => {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
29
|
+
if (
|
|
30
|
+
_.includes(systemFields, field.name) &&
|
|
31
|
+
(field.omit || field.hidden || field.readonly || field.disabled)
|
|
32
|
+
) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
if (field.omit || field.hidden || field.readonly || field.disabled) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
return true;
|
|
39
|
+
};
|
|
24
40
|
|
|
25
41
|
const getFieldDefaultReadable = (field) => {
|
|
26
|
-
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
if (field.hidden) {
|
|
30
|
-
return false
|
|
31
|
-
}
|
|
42
|
+
if (_.includes(systemFields, field.name) && !field.hidden) {
|
|
32
43
|
return true;
|
|
33
|
-
}
|
|
44
|
+
}
|
|
45
|
+
if (field.hidden) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
return true;
|
|
49
|
+
};
|
|
34
50
|
|
|
35
51
|
module.exports = {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
//获取对象所有字段
|
|
50
|
-
const fields = await objectql.getObject('object_fields').find({ filters: [['object', '=', record.object_name]] });
|
|
51
|
-
const now = new Date();
|
|
52
|
-
for (const field of fields) {
|
|
53
|
-
const result = await objectql.getObject('permission_fields').directFind({ filters: [['permission_set_id', '=', permissionSet.name], ['permission_object', '=', record.name], ['object_name', '=', record.object_name], ['field', '=', field.name], ['is_system', '!=', true]] });
|
|
54
|
-
const count = result.length;
|
|
55
|
-
if (count == 0) {
|
|
56
|
-
const apiName = `${permissionSet.name}.${record.object_name}.${field.name}`
|
|
57
|
-
const fieldPermission = await getFieldPermission(apiName)
|
|
58
|
-
await objectql.getObject('permission_fields').directInsert({
|
|
59
|
-
name: apiName,
|
|
60
|
-
permission_set_id: permissionSet.name,
|
|
61
|
-
permission_object: record.name,
|
|
62
|
-
object_name: record.object_name,
|
|
63
|
-
field: field.name,
|
|
64
|
-
editable: fieldPermission ? fieldPermission.editable : getFieldDefaultEditable(field),
|
|
65
|
-
readable: fieldPermission ? fieldPermission.readable : getFieldDefaultReadable(field),
|
|
66
|
-
owner: userSession.userId,
|
|
67
|
-
space: userSession.spaceId,
|
|
68
|
-
created: now,
|
|
69
|
-
modified: now,
|
|
70
|
-
created_by: userSession.userId,
|
|
71
|
-
modified_by: userSession.userId,
|
|
72
|
-
company_id: userSession.company_id,
|
|
73
|
-
company_ids: userSession.company_ids
|
|
74
|
-
})
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
//删除已删除、卸载的字段权限
|
|
78
|
-
const fieldsPermission = await objectql.getObject('permission_fields').find({ filters: [['permission_set_id', '=', permissionSet.name], ['object_name', '=', record.object_name]] });
|
|
79
|
-
const allFields = _.map(fieldsPermission, 'field');
|
|
80
|
-
const objectFields = _.map(fields, 'name');
|
|
81
|
-
const diffFields = _.difference(allFields, objectFields);
|
|
82
|
-
for (const diffField of diffFields) {
|
|
83
|
-
const fieldPermission = _.find(fieldsPermission, (fp) => {
|
|
84
|
-
return fp.field == diffField
|
|
85
|
-
})
|
|
86
|
-
await objectql.getObject('permission_fields').delete(fieldPermission._id)
|
|
87
|
-
}
|
|
88
|
-
}
|
|
52
|
+
name: SERVICE_NAME,
|
|
53
|
+
mixins: [metadataService],
|
|
54
|
+
settings: {
|
|
55
|
+
metadataType: METADATA_TYPE,
|
|
56
|
+
},
|
|
57
|
+
methods: {
|
|
58
|
+
resetFieldPermissions: {
|
|
59
|
+
async handler(permissionObjectId: string, userSession: any) {
|
|
60
|
+
const record = await objectql
|
|
61
|
+
.getObject("permission_objects")
|
|
62
|
+
.findOne(permissionObjectId);
|
|
63
|
+
if (!record) {
|
|
64
|
+
return;
|
|
89
65
|
}
|
|
66
|
+
const permissionSet = await objectql
|
|
67
|
+
.getObject("permission_set")
|
|
68
|
+
.findOne(record.permission_set_id);
|
|
69
|
+
//获取对象所有字段
|
|
70
|
+
const fields = await objectql
|
|
71
|
+
.getObject("object_fields")
|
|
72
|
+
.find({ filters: [["object", "=", record.object_name]] });
|
|
73
|
+
const now = new Date();
|
|
74
|
+
for (const field of fields) {
|
|
75
|
+
const result = await objectql
|
|
76
|
+
.getObject("permission_fields")
|
|
77
|
+
.directFind({
|
|
78
|
+
filters: [
|
|
79
|
+
["permission_set_id", "=", permissionSet.name],
|
|
80
|
+
["permission_object", "=", record.name],
|
|
81
|
+
["object_name", "=", record.object_name],
|
|
82
|
+
["field", "=", field.name],
|
|
83
|
+
["is_system", "!=", true],
|
|
84
|
+
],
|
|
85
|
+
});
|
|
86
|
+
const count = result.length;
|
|
87
|
+
if (count == 0) {
|
|
88
|
+
const apiName = `${permissionSet.name}.${record.object_name}.${field.name}`;
|
|
89
|
+
const fieldPermission = await getFieldPermission(apiName);
|
|
90
|
+
await objectql.getObject("permission_fields").directInsert({
|
|
91
|
+
name: apiName,
|
|
92
|
+
permission_set_id: permissionSet.name,
|
|
93
|
+
permission_object: record.name,
|
|
94
|
+
object_name: record.object_name,
|
|
95
|
+
field: field.name,
|
|
96
|
+
editable: fieldPermission
|
|
97
|
+
? fieldPermission.editable
|
|
98
|
+
: getFieldDefaultEditable(field),
|
|
99
|
+
readable: fieldPermission
|
|
100
|
+
? fieldPermission.readable
|
|
101
|
+
: getFieldDefaultReadable(field),
|
|
102
|
+
owner: userSession.userId,
|
|
103
|
+
space: userSession.spaceId,
|
|
104
|
+
created: now,
|
|
105
|
+
modified: now,
|
|
106
|
+
created_by: userSession.userId,
|
|
107
|
+
modified_by: userSession.userId,
|
|
108
|
+
company_id: userSession.company_id,
|
|
109
|
+
company_ids: userSession.company_ids,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
//删除已删除、卸载的字段权限
|
|
114
|
+
const fieldsPermission = await objectql
|
|
115
|
+
.getObject("permission_fields")
|
|
116
|
+
.find({
|
|
117
|
+
filters: [
|
|
118
|
+
["permission_set_id", "=", permissionSet.name],
|
|
119
|
+
["object_name", "=", record.object_name],
|
|
120
|
+
],
|
|
121
|
+
});
|
|
122
|
+
const allFields = _.map(fieldsPermission, "field");
|
|
123
|
+
const objectFields = _.map(fields, "name");
|
|
124
|
+
const diffFields = _.difference(allFields, objectFields);
|
|
125
|
+
for (const diffField of diffFields) {
|
|
126
|
+
const fieldPermission = _.find(fieldsPermission, (fp) => {
|
|
127
|
+
return fp.field == diffField;
|
|
128
|
+
});
|
|
129
|
+
await objectql
|
|
130
|
+
.getObject("permission_fields")
|
|
131
|
+
.delete(fieldPermission._id);
|
|
132
|
+
}
|
|
133
|
+
},
|
|
90
134
|
},
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
135
|
+
},
|
|
136
|
+
actions: {
|
|
137
|
+
resetFieldPermissions: {
|
|
138
|
+
async handler(ctx) {
|
|
139
|
+
const userSession = ctx.meta.user;
|
|
140
|
+
const { permissionObjectId } = ctx.params;
|
|
141
|
+
return await this.resetFieldPermissions(
|
|
142
|
+
permissionObjectId,
|
|
143
|
+
userSession,
|
|
144
|
+
);
|
|
145
|
+
},
|
|
146
|
+
},
|
|
147
|
+
resetAllPermissionSetFieldPermissions: {
|
|
148
|
+
async handler(ctx) {
|
|
149
|
+
const userSession = ctx.meta.user;
|
|
150
|
+
const { objectName } = ctx.params;
|
|
151
|
+
const records = await objectql
|
|
152
|
+
.getObject("permission_objects")
|
|
153
|
+
.directFind({ filters: [["object_name", "=", objectName]] });
|
|
154
|
+
for (const record of records) {
|
|
155
|
+
await this.resetFieldPermissions(record._id, userSession);
|
|
108
156
|
}
|
|
109
|
-
|
|
110
|
-
}
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
};
|