@zenstackhq/runtime 0.6.0-pre.19 → 1.0.0-alpha.100
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/enhancements/nested-write-vistor.d.ts +9 -4
- package/enhancements/nested-write-vistor.js +28 -10
- package/enhancements/nested-write-vistor.js.map +1 -1
- package/enhancements/policy/handler.js +17 -14
- package/enhancements/policy/handler.js.map +1 -1
- package/enhancements/policy/policy-utils.d.ts +19 -3
- package/enhancements/policy/policy-utils.js +239 -59
- package/enhancements/policy/policy-utils.js.map +1 -1
- package/enhancements/preset.d.ts +11 -2
- package/enhancements/preset.js +11 -2
- package/enhancements/preset.js.map +1 -1
- package/enhancements/proxy.js +3 -3
- package/enhancements/proxy.js.map +1 -1
- package/enhancements/types.d.ts +9 -0
- package/enhancements/utils.d.ts +1 -0
- package/enhancements/utils.js +30 -2
- package/enhancements/utils.js.map +1 -1
- package/error.d.ts +1 -0
- package/error.js.map +1 -1
- package/package.json +6 -7
- package/types.d.ts +30 -9
- package/types.js +2 -0
- package/types.js.map +1 -1
- package/validation.d.ts +7 -0
- package/validation.js +15 -1
- package/validation.js.map +1 -1
- package/version.js +6 -1
- package/version.js.map +1 -1
- package/zod.d.ts +10 -0
- package/zod.js +17 -0
- package/zod.js.map +1 -0
- package/client.d.ts +0 -2
- package/client.js +0 -28
- package/client.js.map +0 -1
- package/request.d.ts +0 -37
- package/request.js +0 -161
- package/request.js.map +0 -1
|
@@ -19,13 +19,13 @@ const sdk_1 = require("@zenstackhq/sdk");
|
|
|
19
19
|
const change_case_1 = require("change-case");
|
|
20
20
|
const cuid_1 = __importDefault(require("cuid"));
|
|
21
21
|
const deepcopy_1 = __importDefault(require("deepcopy"));
|
|
22
|
-
const util_1 = require("util");
|
|
23
22
|
const zod_validation_error_1 = require("zod-validation-error");
|
|
24
23
|
const version_1 = require("../../version");
|
|
25
24
|
const model_meta_1 = require("../model-meta");
|
|
26
25
|
const nested_write_vistor_1 = require("../nested-write-vistor");
|
|
27
26
|
const utils_1 = require("../utils");
|
|
28
27
|
const logger_1 = require("./logger");
|
|
28
|
+
const pluralize_1 = __importDefault(require("pluralize"));
|
|
29
29
|
/**
|
|
30
30
|
* Access policy enforcement utilities
|
|
31
31
|
*/
|
|
@@ -43,7 +43,7 @@ class PolicyUtil {
|
|
|
43
43
|
and(...conditions) {
|
|
44
44
|
if (conditions.includes(false)) {
|
|
45
45
|
// always false
|
|
46
|
-
return {
|
|
46
|
+
return { [sdk_1.GUARD_FIELD_NAME]: false };
|
|
47
47
|
}
|
|
48
48
|
const filtered = conditions.filter((c) => typeof c === 'object' && !!c && Object.keys(c).length > 0);
|
|
49
49
|
if (filtered.length === 0) {
|
|
@@ -62,7 +62,7 @@ class PolicyUtil {
|
|
|
62
62
|
or(...conditions) {
|
|
63
63
|
if (conditions.includes(true)) {
|
|
64
64
|
// always true
|
|
65
|
-
return {
|
|
65
|
+
return { [sdk_1.GUARD_FIELD_NAME]: true };
|
|
66
66
|
}
|
|
67
67
|
const filtered = conditions.filter((c) => typeof c === 'object' && !!c);
|
|
68
68
|
if (filtered.length === 0) {
|
|
@@ -75,6 +75,17 @@ class PolicyUtil {
|
|
|
75
75
|
return { OR: filtered };
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Creates a negation of a query condition.
|
|
80
|
+
*/
|
|
81
|
+
not(condition) {
|
|
82
|
+
if (typeof condition === 'boolean') {
|
|
83
|
+
return !condition;
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
return { NOT: condition };
|
|
87
|
+
}
|
|
88
|
+
}
|
|
78
89
|
/**
|
|
79
90
|
* Gets pregenerated authorization guard object for a given model and operation.
|
|
80
91
|
*
|
|
@@ -116,10 +127,87 @@ class PolicyUtil {
|
|
|
116
127
|
*/
|
|
117
128
|
injectAuthGuard(args, model, operation) {
|
|
118
129
|
return __awaiter(this, void 0, void 0, function* () {
|
|
130
|
+
if (args.where) {
|
|
131
|
+
// inject into relation fields:
|
|
132
|
+
// to-many: some/none/every
|
|
133
|
+
// to-one: direct-conditions/is/isNot
|
|
134
|
+
yield this.injectGuardForFields(model, args.where, operation);
|
|
135
|
+
}
|
|
119
136
|
const guard = yield this.getAuthGuard(model, operation);
|
|
120
137
|
args.where = this.and(args.where, guard);
|
|
121
138
|
});
|
|
122
139
|
}
|
|
140
|
+
injectGuardForFields(model, payload, operation) {
|
|
141
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
142
|
+
for (const [field, subPayload] of Object.entries(payload)) {
|
|
143
|
+
if (!subPayload) {
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
const fieldInfo = yield (0, model_meta_1.resolveField)(this.modelMeta, model, field);
|
|
147
|
+
if (!fieldInfo || !fieldInfo.isDataModel) {
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
if (fieldInfo.isArray) {
|
|
151
|
+
yield this.injectGuardForToManyField(fieldInfo, subPayload, operation);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
yield this.injectGuardForToOneField(fieldInfo, subPayload, operation);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
injectGuardForToManyField(fieldInfo, payload, operation) {
|
|
160
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
161
|
+
const guard = yield this.getAuthGuard(fieldInfo.type, operation);
|
|
162
|
+
if (payload.some) {
|
|
163
|
+
yield this.injectGuardForFields(fieldInfo.type, payload.some, operation);
|
|
164
|
+
// turn "some" into: { some: { AND: [guard, payload.some] } }
|
|
165
|
+
payload.some = this.and(payload.some, guard);
|
|
166
|
+
}
|
|
167
|
+
if (payload.none) {
|
|
168
|
+
yield this.injectGuardForFields(fieldInfo.type, payload.none, operation);
|
|
169
|
+
// turn none into: { none: { AND: [guard, payload.none] } }
|
|
170
|
+
payload.none = this.and(payload.none, guard);
|
|
171
|
+
}
|
|
172
|
+
if (payload.every &&
|
|
173
|
+
typeof payload.every === 'object' &&
|
|
174
|
+
// ignore empty every clause
|
|
175
|
+
Object.keys(payload.every).length > 0) {
|
|
176
|
+
yield this.injectGuardForFields(fieldInfo.type, payload.every, operation);
|
|
177
|
+
// turn "every" into: { none: { AND: [guard, { NOT: payload.every }] } }
|
|
178
|
+
if (!payload.none) {
|
|
179
|
+
payload.none = {};
|
|
180
|
+
}
|
|
181
|
+
payload.none = this.and(payload.none, guard, this.not(payload.every));
|
|
182
|
+
delete payload.every;
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
injectGuardForToOneField(fieldInfo, payload, operation) {
|
|
187
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
188
|
+
const guard = yield this.getAuthGuard(fieldInfo.type, operation);
|
|
189
|
+
if (payload.is || payload.isNot) {
|
|
190
|
+
if (payload.is) {
|
|
191
|
+
yield this.injectGuardForFields(fieldInfo.type, payload.is, operation);
|
|
192
|
+
// turn "is" into: { is: { AND: [ originalIs, guard ] }
|
|
193
|
+
payload.is = this.and(payload.is, guard);
|
|
194
|
+
}
|
|
195
|
+
if (payload.isNot) {
|
|
196
|
+
yield this.injectGuardForFields(fieldInfo.type, payload.isNot, operation);
|
|
197
|
+
// turn "isNot" into: { isNot: { AND: [ originalIsNot, { NOT: guard } ] } }
|
|
198
|
+
payload.isNot = this.and(payload.isNot, this.not(guard));
|
|
199
|
+
delete payload.isNot;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
yield this.injectGuardForFields(fieldInfo.type, payload, operation);
|
|
204
|
+
// turn direct conditions into: { is: { AND: [ originalConditions, guard ] } }
|
|
205
|
+
const combined = this.and((0, deepcopy_1.default)(payload), guard);
|
|
206
|
+
Object.keys(payload).forEach((key) => delete payload[key]);
|
|
207
|
+
payload.is = combined;
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
}
|
|
123
211
|
/**
|
|
124
212
|
* Read model entities w.r.t the given query args. The result list
|
|
125
213
|
* are guaranteed to fully satisfy 'read' policy rules recursively.
|
|
@@ -131,23 +219,52 @@ class PolicyUtil {
|
|
|
131
219
|
readWithCheck(model, args) {
|
|
132
220
|
return __awaiter(this, void 0, void 0, function* () {
|
|
133
221
|
args = this.clone(args);
|
|
222
|
+
if (args.where) {
|
|
223
|
+
// query args will be used with findMany, so we need to
|
|
224
|
+
// translate unique constraint filters into a flat filter
|
|
225
|
+
// e.g.: { a_b: { a: '1', b: '1' } } => { a: '1', b: '1' }
|
|
226
|
+
yield this.flattenGeneratedUniqueField(model, args.where);
|
|
227
|
+
}
|
|
134
228
|
yield this.injectAuthGuard(args, model, 'read');
|
|
135
229
|
// recursively inject read guard conditions into the query args
|
|
136
230
|
yield this.injectNestedReadConditions(model, args);
|
|
137
|
-
this.logger.info(`Reading with validation for ${model}: ${(0,
|
|
231
|
+
this.logger.info(`Reading with validation for ${model}: ${(0, utils_1.formatObject)(args)}`);
|
|
138
232
|
const result = yield this.db[model].findMany(args);
|
|
139
233
|
yield Promise.all(result.map((item) => this.postProcessForRead(item, model, args, 'read')));
|
|
140
234
|
return result;
|
|
141
235
|
});
|
|
142
236
|
}
|
|
237
|
+
// flatten unique constraint filters
|
|
238
|
+
flattenGeneratedUniqueField(model, args) {
|
|
239
|
+
var _a;
|
|
240
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
241
|
+
// e.g.: { a_b: { a: '1', b: '1' } } => { a: '1', b: '1' }
|
|
242
|
+
const uniqueConstraints = (_a = this.modelMeta.uniqueConstraints) === null || _a === void 0 ? void 0 : _a[(0, change_case_1.camelCase)(model)];
|
|
243
|
+
let flattened = false;
|
|
244
|
+
if (uniqueConstraints) {
|
|
245
|
+
for (const [field, value] of Object.entries(args)) {
|
|
246
|
+
if (uniqueConstraints[field] && typeof value === 'object') {
|
|
247
|
+
for (const [f, v] of Object.entries(value)) {
|
|
248
|
+
args[f] = v;
|
|
249
|
+
}
|
|
250
|
+
delete args[field];
|
|
251
|
+
flattened = true;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
if (flattened) {
|
|
256
|
+
this.logger.info(`Filter flattened: ${JSON.stringify(args)}`);
|
|
257
|
+
}
|
|
258
|
+
});
|
|
259
|
+
}
|
|
143
260
|
injectNestedReadConditions(model, args) {
|
|
144
|
-
var _a, _b
|
|
261
|
+
var _a, _b;
|
|
145
262
|
return __awaiter(this, void 0, void 0, function* () {
|
|
146
263
|
const injectTarget = (_a = args.select) !== null && _a !== void 0 ? _a : args.include;
|
|
147
264
|
if (!injectTarget) {
|
|
148
265
|
return;
|
|
149
266
|
}
|
|
150
|
-
const
|
|
267
|
+
const idFields = this.getIdFields(model);
|
|
151
268
|
for (const field of (0, utils_1.getModelFields)(injectTarget)) {
|
|
152
269
|
const fieldInfo = (0, model_meta_1.resolveField)(this.modelMeta, model, field);
|
|
153
270
|
if (!fieldInfo || !fieldInfo.isDataModel) {
|
|
@@ -159,14 +276,19 @@ class PolicyUtil {
|
|
|
159
276
|
injectTarget[field] = {};
|
|
160
277
|
}
|
|
161
278
|
// inject extra condition for to-many relation
|
|
162
|
-
|
|
163
|
-
injectTarget[field].where = this.and(injectTarget.where, guard);
|
|
279
|
+
yield this.injectAuthGuard(injectTarget[field], fieldInfo.type, 'read');
|
|
164
280
|
}
|
|
165
281
|
else {
|
|
166
|
-
// there's no way of injecting condition for to-one relation, so
|
|
167
|
-
// make sure 'id'
|
|
168
|
-
|
|
169
|
-
|
|
282
|
+
// there's no way of injecting condition for to-one relation, so if there's
|
|
283
|
+
// "select" clause we make sure 'id' fields are selected and check them against
|
|
284
|
+
// query result; nothing needs to be done for "include" clause because all
|
|
285
|
+
// fields are already selected
|
|
286
|
+
if ((_b = injectTarget[field]) === null || _b === void 0 ? void 0 : _b.select) {
|
|
287
|
+
for (const idField of idFields) {
|
|
288
|
+
if (injectTarget[field].select[idField.name] !== true) {
|
|
289
|
+
injectTarget[field].select[idField.name] = true;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
170
292
|
}
|
|
171
293
|
}
|
|
172
294
|
// recurse
|
|
@@ -180,9 +302,10 @@ class PolicyUtil {
|
|
|
180
302
|
* omitted.
|
|
181
303
|
*/
|
|
182
304
|
postProcessForRead(entityData, model, args, operation) {
|
|
183
|
-
var _a
|
|
305
|
+
var _a;
|
|
184
306
|
return __awaiter(this, void 0, void 0, function* () {
|
|
185
|
-
|
|
307
|
+
const ids = this.getEntityIds(model, entityData);
|
|
308
|
+
if (Object.keys(ids).length === 0) {
|
|
186
309
|
return;
|
|
187
310
|
}
|
|
188
311
|
// strip auxiliary fields
|
|
@@ -198,17 +321,19 @@ class PolicyUtil {
|
|
|
198
321
|
// to-one relation data cannot be trimmed by injected guards, we have to
|
|
199
322
|
// post-check them
|
|
200
323
|
for (const field of (0, utils_1.getModelFields)(injectTarget)) {
|
|
324
|
+
if (!(entityData === null || entityData === void 0 ? void 0 : entityData[field])) {
|
|
325
|
+
continue;
|
|
326
|
+
}
|
|
201
327
|
const fieldInfo = (0, model_meta_1.resolveField)(this.modelMeta, model, field);
|
|
202
328
|
if (!fieldInfo || !fieldInfo.isDataModel || fieldInfo.isArray) {
|
|
203
329
|
continue;
|
|
204
330
|
}
|
|
205
|
-
const
|
|
206
|
-
|
|
207
|
-
if (!relatedEntityId) {
|
|
331
|
+
const ids = this.getEntityIds(fieldInfo.type, entityData[field]);
|
|
332
|
+
if (Object.keys(ids).length === 0) {
|
|
208
333
|
continue;
|
|
209
334
|
}
|
|
210
|
-
this.logger.info(`Validating read of to-one relation: ${fieldInfo.type}#${
|
|
211
|
-
yield this.checkPolicyForFilter(fieldInfo.type,
|
|
335
|
+
this.logger.info(`Validating read of to-one relation: ${fieldInfo.type}#${(0, utils_1.formatObject)(ids)}`);
|
|
336
|
+
yield this.checkPolicyForFilter(fieldInfo.type, ids, operation, this.db);
|
|
212
337
|
// recurse
|
|
213
338
|
yield this.postProcessForRead(entityData[field], fieldInfo.type, injectTarget[field], operation);
|
|
214
339
|
}
|
|
@@ -224,13 +349,25 @@ class PolicyUtil {
|
|
|
224
349
|
const createdModels = new Set();
|
|
225
350
|
// record model entities that are updated, together with their
|
|
226
351
|
// values before update, so we can post-check if they satisfy
|
|
227
|
-
// model =>
|
|
352
|
+
// model => { ids, entity value }
|
|
228
353
|
const updatedModels = new Map();
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
354
|
+
function addUpdatedEntity(model, ids, entity) {
|
|
355
|
+
let modelEntities = updatedModels.get(model);
|
|
356
|
+
if (!modelEntities) {
|
|
357
|
+
modelEntities = [];
|
|
358
|
+
updatedModels.set(model, modelEntities);
|
|
359
|
+
}
|
|
360
|
+
modelEntities.push({ ids, value: entity });
|
|
361
|
+
}
|
|
362
|
+
const idFields = this.getIdFields(model);
|
|
363
|
+
if (args.select) {
|
|
364
|
+
// make sure id fields are selected, we need it to
|
|
232
365
|
// read back the updated entity
|
|
233
|
-
|
|
366
|
+
for (const idField of idFields) {
|
|
367
|
+
if (!args.select[idField.name]) {
|
|
368
|
+
args.select[idField.name] = true;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
234
371
|
}
|
|
235
372
|
// use a transaction to conduct write, so in case any create or nested create
|
|
236
373
|
// fails access policies, we can roll back the entire operation
|
|
@@ -253,7 +390,7 @@ class PolicyUtil {
|
|
|
253
390
|
let result, currQuery;
|
|
254
391
|
let currField;
|
|
255
392
|
for (let i = context.nestingPath.length - 1; i >= 0; i--) {
|
|
256
|
-
const { field, where } = context.nestingPath[i];
|
|
393
|
+
const { field, where, unique } = context.nestingPath[i];
|
|
257
394
|
if (!result) {
|
|
258
395
|
// first segment (bottom), just use its where clause
|
|
259
396
|
result = currQuery = Object.assign({}, where);
|
|
@@ -270,11 +407,15 @@ class PolicyUtil {
|
|
|
270
407
|
currQuery = currQuery[currField.backLink];
|
|
271
408
|
currField = field;
|
|
272
409
|
}
|
|
410
|
+
if (unique) {
|
|
411
|
+
// hit a unique filter, no need to traverse further up
|
|
412
|
+
break;
|
|
413
|
+
}
|
|
273
414
|
}
|
|
274
415
|
return result;
|
|
275
416
|
});
|
|
276
417
|
// args processor for update/upsert
|
|
277
|
-
const processUpdate = (model,
|
|
418
|
+
const processUpdate = (model, where, context) => __awaiter(this, void 0, void 0, function* () {
|
|
278
419
|
const preGuard = yield this.getAuthGuard(model, 'update');
|
|
279
420
|
if (preGuard === false) {
|
|
280
421
|
throw this.deniedByPolicy(model, 'update');
|
|
@@ -316,11 +457,10 @@ class PolicyUtil {
|
|
|
316
457
|
yield this.checkPolicyForFilter(model, subQuery, 'update', this.db);
|
|
317
458
|
}
|
|
318
459
|
else {
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
throw this.unknownError(`Missing 'where' in update args`);
|
|
460
|
+
if (!where) {
|
|
461
|
+
throw this.unknownError(`Missing 'where' parameter`);
|
|
322
462
|
}
|
|
323
|
-
yield this.checkPolicyForFilter(model,
|
|
463
|
+
yield this.checkPolicyForFilter(model, where, 'update', this.db);
|
|
324
464
|
}
|
|
325
465
|
}
|
|
326
466
|
yield preparePostUpdateCheck(model, context);
|
|
@@ -344,19 +484,25 @@ class PolicyUtil {
|
|
|
344
484
|
const schema = yield this.getModelSchema(model);
|
|
345
485
|
// post-update check is needed if there's post-update rule or validation schema
|
|
346
486
|
if (postGuard !== true || schema) {
|
|
347
|
-
let modelEntities = updatedModels.get(model);
|
|
348
|
-
if (!modelEntities) {
|
|
349
|
-
modelEntities = new Map();
|
|
350
|
-
updatedModels.set(model, modelEntities);
|
|
351
|
-
}
|
|
352
487
|
// fetch preValue selection (analyzed from the post-update rules)
|
|
353
488
|
const preValueSelect = yield this.getPreValueSelect(model);
|
|
354
489
|
const filter = yield buildReversedQuery(context);
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
490
|
+
// query args will be used with findMany, so we need to
|
|
491
|
+
// translate unique constraint filters into a flat filter
|
|
492
|
+
// e.g.: { a_b: { a: '1', b: '1' } } => { a: '1', b: '1' }
|
|
493
|
+
yield this.flattenGeneratedUniqueField(model, filter);
|
|
494
|
+
const idFields = this.getIdFields(model);
|
|
495
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
496
|
+
const select = Object.assign({}, preValueSelect);
|
|
497
|
+
for (const idField of idFields) {
|
|
498
|
+
select[idField.name] = true;
|
|
499
|
+
}
|
|
500
|
+
const query = { where: filter, select };
|
|
501
|
+
this.logger.info(`fetching pre-update entities for ${model}: ${(0, utils_1.formatObject)(query)})}`);
|
|
358
502
|
const entities = yield this.db[model].findMany(query);
|
|
359
|
-
entities.forEach((entity) =>
|
|
503
|
+
entities.forEach((entity) => {
|
|
504
|
+
addUpdatedEntity(model, this.getEntityIds(model, entity), entity);
|
|
505
|
+
});
|
|
360
506
|
}
|
|
361
507
|
});
|
|
362
508
|
// args processor for delete
|
|
@@ -376,6 +522,19 @@ class PolicyUtil {
|
|
|
376
522
|
}
|
|
377
523
|
}
|
|
378
524
|
});
|
|
525
|
+
// process relation updates: connect, connectOrCreate, and disconnect
|
|
526
|
+
const processRelationUpdate = (model, args, context) => __awaiter(this, void 0, void 0, function* () {
|
|
527
|
+
var _a;
|
|
528
|
+
if ((_a = context.field) === null || _a === void 0 ? void 0 : _a.backLink) {
|
|
529
|
+
// fetch the backlink field of the model being connected
|
|
530
|
+
const backLinkField = (0, model_meta_1.resolveField)(this.modelMeta, model, context.field.backLink);
|
|
531
|
+
if (backLinkField.isRelationOwner) {
|
|
532
|
+
// the target side of relation owns the relation,
|
|
533
|
+
// mark it as updated
|
|
534
|
+
yield processUpdate(model, args, context);
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
});
|
|
379
538
|
// use a visitor to process args before conducting the write action
|
|
380
539
|
const visitor = new nested_write_vistor_1.NestedWriteVisitor(this.modelMeta, {
|
|
381
540
|
create: (model, args) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -383,16 +542,29 @@ class PolicyUtil {
|
|
|
383
542
|
yield processCreate(model, oneArgs);
|
|
384
543
|
}
|
|
385
544
|
}),
|
|
386
|
-
connectOrCreate: (model, args) => __awaiter(this, void 0, void 0, function* () {
|
|
545
|
+
connectOrCreate: (model, args, context) => __awaiter(this, void 0, void 0, function* () {
|
|
387
546
|
for (const oneArgs of (0, utils_1.enumerate)(args)) {
|
|
388
547
|
if (oneArgs.create) {
|
|
389
548
|
yield processCreate(model, oneArgs.create);
|
|
390
549
|
}
|
|
550
|
+
if (oneArgs.where) {
|
|
551
|
+
yield processRelationUpdate(model, oneArgs.where, context);
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
}),
|
|
555
|
+
connect: (model, args, context) => __awaiter(this, void 0, void 0, function* () {
|
|
556
|
+
for (const oneArgs of (0, utils_1.enumerate)(args)) {
|
|
557
|
+
yield processRelationUpdate(model, oneArgs, context);
|
|
558
|
+
}
|
|
559
|
+
}),
|
|
560
|
+
disconnect: (model, args, context) => __awaiter(this, void 0, void 0, function* () {
|
|
561
|
+
for (const oneArgs of (0, utils_1.enumerate)(args)) {
|
|
562
|
+
yield processRelationUpdate(model, oneArgs, context);
|
|
391
563
|
}
|
|
392
564
|
}),
|
|
393
565
|
update: (model, args, context) => __awaiter(this, void 0, void 0, function* () {
|
|
394
566
|
for (const oneArgs of (0, utils_1.enumerate)(args)) {
|
|
395
|
-
yield processUpdate(model, oneArgs, context);
|
|
567
|
+
yield processUpdate(model, oneArgs.where, context);
|
|
396
568
|
}
|
|
397
569
|
}),
|
|
398
570
|
updateMany: (model, args, context) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -406,7 +578,7 @@ class PolicyUtil {
|
|
|
406
578
|
yield processCreate(model, oneArgs.create);
|
|
407
579
|
}
|
|
408
580
|
if (oneArgs.update) {
|
|
409
|
-
yield processUpdate(model,
|
|
581
|
+
yield processUpdate(model, oneArgs.where, context);
|
|
410
582
|
}
|
|
411
583
|
}
|
|
412
584
|
}),
|
|
@@ -446,7 +618,7 @@ class PolicyUtil {
|
|
|
446
618
|
if (updatedModels.size > 0) {
|
|
447
619
|
// do post-check on updated entities
|
|
448
620
|
yield Promise.all([...updatedModels.entries()]
|
|
449
|
-
.map(([model, modelEntities]) =>
|
|
621
|
+
.map(([model, modelEntities]) => modelEntities.map(({ ids, value: preValue }) => __awaiter(this, void 0, void 0, function* () { return this.checkPostUpdate(model, ids, tx, preValue); })))
|
|
450
622
|
.flat());
|
|
451
623
|
}
|
|
452
624
|
return result;
|
|
@@ -463,8 +635,8 @@ class PolicyUtil {
|
|
|
463
635
|
return db.$transaction((tx) => action(tx));
|
|
464
636
|
}
|
|
465
637
|
}
|
|
466
|
-
deniedByPolicy(model, operation, extra) {
|
|
467
|
-
return new runtime_1.PrismaClientKnownRequestError(`denied by policy: ${model} entities failed '${operation}' check${extra ? ', ' + extra : ''}`, { clientVersion: (0, version_1.getVersion)(), code: 'P2004' });
|
|
638
|
+
deniedByPolicy(model, operation, extra, reason) {
|
|
639
|
+
return new runtime_1.PrismaClientKnownRequestError(`denied by policy: ${model} entities failed '${operation}' check${extra ? ', ' + extra : ''}`, { clientVersion: (0, version_1.getVersion)(), code: 'P2004', meta: { reason } });
|
|
468
640
|
}
|
|
469
641
|
notFound(model) {
|
|
470
642
|
return new runtime_1.PrismaClientKnownRequestError(`entity not found for model ${model}`, {
|
|
@@ -484,17 +656,22 @@ class PolicyUtil {
|
|
|
484
656
|
checkPolicyForFilter(model, filter, operation, db) {
|
|
485
657
|
return __awaiter(this, void 0, void 0, function* () {
|
|
486
658
|
this.logger.info(`Checking policy for ${model}#${JSON.stringify(filter)} for ${operation}`);
|
|
487
|
-
const
|
|
659
|
+
const queryFilter = (0, deepcopy_1.default)(filter);
|
|
660
|
+
// query args will be used with findMany, so we need to
|
|
661
|
+
// translate unique constraint filters into a flat filter
|
|
662
|
+
// e.g.: { a_b: { a: '1', b: '1' } } => { a: '1', b: '1' }
|
|
663
|
+
yield this.flattenGeneratedUniqueField(model, queryFilter);
|
|
664
|
+
const count = (yield db[model].count({ where: queryFilter }));
|
|
488
665
|
const guard = yield this.getAuthGuard(model, operation);
|
|
489
666
|
// build a query condition with policy injected
|
|
490
|
-
const guardedQuery = { where: this.and(
|
|
667
|
+
const guardedQuery = { where: this.and(queryFilter, guard) };
|
|
491
668
|
const schema = (operation === 'create' || operation === 'update') && (yield this.getModelSchema(model));
|
|
492
669
|
if (schema) {
|
|
493
670
|
// we've got schemas, so have to fetch entities and validate them
|
|
494
671
|
const entities = yield db[model].findMany(guardedQuery);
|
|
495
672
|
if (entities.length < count) {
|
|
496
673
|
this.logger.info(`entity ${model} failed policy check for operation ${operation}`);
|
|
497
|
-
throw this.deniedByPolicy(model, operation, `${count - entities.length} entities failed policy check`);
|
|
674
|
+
throw this.deniedByPolicy(model, operation, `${count - entities.length} ${(0, pluralize_1.default)('entity', count - entities.length)} failed policy check`);
|
|
498
675
|
}
|
|
499
676
|
// TODO: push down schema check to the database
|
|
500
677
|
const schemaCheckErrors = entities.map((entity) => schema.safeParse(entity)).filter((r) => !r.success);
|
|
@@ -509,18 +686,17 @@ class PolicyUtil {
|
|
|
509
686
|
const guardedCount = (yield db[model].count(guardedQuery));
|
|
510
687
|
if (guardedCount < count) {
|
|
511
688
|
this.logger.info(`entity ${model} failed policy check for operation ${operation}`);
|
|
512
|
-
throw this.deniedByPolicy(model, operation, `${count - guardedCount}
|
|
689
|
+
throw this.deniedByPolicy(model, operation, `${count - guardedCount} ${(0, pluralize_1.default)('entity', count - guardedCount)} failed policy check`);
|
|
513
690
|
}
|
|
514
691
|
}
|
|
515
692
|
});
|
|
516
693
|
}
|
|
517
|
-
checkPostUpdate(model,
|
|
694
|
+
checkPostUpdate(model, ids, db, preValue) {
|
|
518
695
|
return __awaiter(this, void 0, void 0, function* () {
|
|
519
|
-
this.logger.info(`Checking post-update policy for ${model}#${
|
|
696
|
+
this.logger.info(`Checking post-update policy for ${model}#${ids}, preValue: ${(0, utils_1.formatObject)(preValue)}`);
|
|
520
697
|
const guard = yield this.getAuthGuard(model, 'postUpdate', preValue);
|
|
521
698
|
// build a query condition with policy injected
|
|
522
|
-
const
|
|
523
|
-
const guardedQuery = { where: this.and({ [idField.name]: id }, guard) };
|
|
699
|
+
const guardedQuery = { where: this.and(ids, guard) };
|
|
524
700
|
// query with policy injected
|
|
525
701
|
const entity = yield db[model].findFirst(guardedQuery);
|
|
526
702
|
// see if we get fewer items with policy, if so, reject with an throw
|
|
@@ -552,13 +728,13 @@ class PolicyUtil {
|
|
|
552
728
|
/**
|
|
553
729
|
* Gets "id" field for a given model.
|
|
554
730
|
*/
|
|
555
|
-
|
|
731
|
+
getIdFields(model) {
|
|
556
732
|
const fields = this.modelMeta.fields[(0, change_case_1.camelCase)(model)];
|
|
557
733
|
if (!fields) {
|
|
558
734
|
throw this.unknownError(`Unable to load fields for ${model}`);
|
|
559
735
|
}
|
|
560
|
-
const result = Object.values(fields).
|
|
561
|
-
if (
|
|
736
|
+
const result = Object.values(fields).filter((f) => f.isId);
|
|
737
|
+
if (result.length === 0) {
|
|
562
738
|
throw this.unknownError(`model ${model} does not have an id field`);
|
|
563
739
|
}
|
|
564
740
|
return result;
|
|
@@ -566,9 +742,13 @@ class PolicyUtil {
|
|
|
566
742
|
/**
|
|
567
743
|
* Gets id field value from an entity.
|
|
568
744
|
*/
|
|
569
|
-
|
|
570
|
-
const
|
|
571
|
-
|
|
745
|
+
getEntityIds(model, entityData) {
|
|
746
|
+
const idFields = this.getIdFields(model);
|
|
747
|
+
const result = {};
|
|
748
|
+
for (const idField of idFields) {
|
|
749
|
+
result[idField.name] = entityData[idField.name];
|
|
750
|
+
}
|
|
751
|
+
return result;
|
|
572
752
|
}
|
|
573
753
|
}
|
|
574
754
|
exports.PolicyUtil = PolicyUtil;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy-utils.js","sourceRoot":"","sources":["../../../src/enhancements/policy/policy-utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"policy-utils.js","sourceRoot":"","sources":["../../../src/enhancements/policy/policy-utils.ts"],"names":[],"mappings":"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"}
|
package/enhancements/preset.d.ts
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
import { WithPolicyContext } from './policy';
|
|
2
2
|
import { ModelMeta, PolicyDef } from './types';
|
|
3
3
|
/**
|
|
4
|
-
* Gets
|
|
5
|
-
*
|
|
4
|
+
* Gets a Prisma client enhanced with all essential behaviors, including access
|
|
5
|
+
* policy, field validation, field omission and password hashing.
|
|
6
|
+
*
|
|
7
|
+
* It's a shortcut for calling withOmit(withPassword(withPolicy(prisma, options))).
|
|
8
|
+
*
|
|
9
|
+
* @param prisma The Prisma client to enhance.
|
|
10
|
+
* @param context The context to for evaluating access policies.
|
|
11
|
+
* @param policy The access policy data, generated by @core/access-policy plugin.
|
|
12
|
+
* You only need to pass it if you configured the plugin to generate into custom location.
|
|
13
|
+
* @param modelMeta The model metadata, generated by @core/model-meta plugin.
|
|
14
|
+
* You only need to pass it if you configured the plugin to generate into custom location.
|
|
6
15
|
*/
|
|
7
16
|
export declare function withPresets<DbClient extends object>(prisma: DbClient, context?: WithPolicyContext, policy?: PolicyDef, modelMeta?: ModelMeta): DbClient;
|