prostgles-server 4.2.450 → 4.2.451
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/dist/PublishParser/PublishParser.d.ts +0 -1
- package/dist/PublishParser/PublishParser.d.ts.map +1 -1
- package/dist/PublishParser/PublishParser.js +9 -66
- package/dist/PublishParser/PublishParser.js.map +1 -1
- package/dist/PublishParser/applyScopeToTableRules.d.ts +5 -0
- package/dist/PublishParser/applyScopeToTableRules.d.ts.map +1 -0
- package/dist/PublishParser/applyScopeToTableRules.js +65 -0
- package/dist/PublishParser/applyScopeToTableRules.js.map +1 -0
- package/dist/PublishParser/publishTypesAndUtils.d.ts +5 -5
- package/dist/PublishParser/publishTypesAndUtils.d.ts.map +1 -1
- package/lib/PublishParser/PublishParser.ts +19 -73
- package/lib/PublishParser/applyScopeToTableRules.ts +73 -0
- package/lib/PublishParser/publishTypesAndUtils.ts +5 -5
- package/package.json +1 -1
|
@@ -31,5 +31,4 @@ export declare class PublishParser {
|
|
|
31
31
|
}>;
|
|
32
32
|
}
|
|
33
33
|
export * from "./publishTypesAndUtils";
|
|
34
|
-
export declare const fromEntries: <K extends string | number | symbol, V>(entries: readonly (readonly [K, V])[]) => Record<K, V>;
|
|
35
34
|
//# sourceMappingURL=PublishParser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PublishParser.d.ts","sourceRoot":"","sources":["../../lib/PublishParser/PublishParser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE9E,OAAO,KAAK,EAAE,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"PublishParser.d.ts","sourceRoot":"","sources":["../../lib/PublishParser/PublishParser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE9E,OAAO,KAAK,EAAE,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAG9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAIvE,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EACf,eAAe,EACf,aAAa,EACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAC;AAEhC,qBAAa,aAAa;IACxB,OAAO,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACzC,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,GAAG,EAAE,eAAe,CAAC;IACrB,EAAE,EAAE,EAAE,CAAC;IACP,SAAS,EAAE,SAAS,CAAC;gBAET,SAAS,EAAE,SAAS;IAY1B,gBAAgB,CACpB,SAAS,EAAE,iBAAiB,EAC5B,UAAU,EAAE,iBAAiB,GAAG,SAAS,GACxC,OAAO,CAAC,aAAa,CAAC;IAmBnB,mBAAmB,CAAC,SAAS,EAAE,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB,GAAG,SAAS;IAgB/F;;OAEG;IACG,kBAAkB,CACtB,SAAS,EAAE,iBAAiB,EAC5B,UAAU,EAAE,iBAAiB,GAAG,SAAS,GACxC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAe/B,2BAA2B,CAC/B,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,eAAe,EAClD,KAAK,EAAE,eAAe,GAAG,SAAS,GACjC,OAAO,CAAC,eAAe,CAAC;IAWrB,kBAAkB,CACtB,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,GAAG,WAAW,CAAC,EAC1E,UAAU,EAAE,iBAAiB,GAAG,SAAS,EACzC,KAAK,EAAE,eAAe,GAAG,SAAS,GACjC,OAAO,CAAC,eAAe,CAAC;IAkC3B,mBAAmB,CACjB,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,eAAe,EACvC,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,eAAe,GAAG,SAAS;IA2C9B,aAAa,CACjB,IAAI,EAAE,QAAQ,EACd,UAAU,EAAE,iBAAiB,GAAG,SAAS,EACzC,KAAK,EAAE,eAAe,GAAG,SAAS,GACjC,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IA+BvC,6BAA6B,0LAA4C;IAGzE,oBAAoB;;;;;;OAAmC;CACxD;AAED,cAAc,wBAAwB,CAAC"}
|
|
@@ -14,10 +14,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.
|
|
17
|
+
exports.PublishParser = void 0;
|
|
18
18
|
const prostgles_types_1 = require("prostgles-types");
|
|
19
19
|
const AuthHandler_1 = require("../Auth/AuthHandler");
|
|
20
20
|
const getClientHandlers_1 = require("../WebsocketAPI/getClientHandlers");
|
|
21
|
+
const applyScopeToTableRules_1 = require("./applyScopeToTableRules");
|
|
21
22
|
const getFileTableRules_1 = require("./getFileTableRules");
|
|
22
23
|
const getSchemaFromPublish_1 = require("./getSchemaFromPublish");
|
|
23
24
|
const getTableRulesWithoutFileTable_1 = require("./getTableRulesWithoutFileTable");
|
|
@@ -162,71 +163,17 @@ class PublishParser {
|
|
|
162
163
|
}
|
|
163
164
|
}
|
|
164
165
|
async getTableRules(args, clientInfo, scope) {
|
|
166
|
+
const { tableName } = args;
|
|
167
|
+
const tableHandler = this.dbo[tableName];
|
|
168
|
+
if (!tableHandler) {
|
|
169
|
+
throw "INTERNAL ERROR: table handler not found for " + args.tableName;
|
|
170
|
+
}
|
|
165
171
|
const fileTablePublishRules = await this.getTableRulesWithoutFileTable(args, clientInfo);
|
|
166
|
-
const applyScopeToTableRules = (tableRules) => {
|
|
167
|
-
if (!tableRules)
|
|
168
|
-
return;
|
|
169
|
-
if (!scope || scope.sql === "commited")
|
|
170
|
-
return tableRules;
|
|
171
|
-
if (scope.sql === "rolledback") {
|
|
172
|
-
return (0, prostgles_types_1.pickKeys)(tableRules, ["select"]);
|
|
173
|
-
}
|
|
174
|
-
const tableScope = scope.tables?.[args.tableName];
|
|
175
|
-
if (!tableScope)
|
|
176
|
-
return;
|
|
177
|
-
const tableHandler = this.dbo[args.tableName];
|
|
178
|
-
if (!tableHandler) {
|
|
179
|
-
throw "INTERNAL ERROR: table handler not found for " + args.tableName;
|
|
180
|
-
}
|
|
181
|
-
const validatedTableRules = tableHandler.getValidatedRules?.(tableRules);
|
|
182
|
-
if (!validatedTableRules) {
|
|
183
|
-
throw "INTERNAL ERROR: getValidatedRules is missing for " + args.tableName;
|
|
184
|
-
}
|
|
185
|
-
/** Make sure the scope does not allow things outside the validatedTableRules */
|
|
186
|
-
const result = (0, exports.fromEntries)((0, prostgles_types_1.getObjectEntries)(tableScope)
|
|
187
|
-
.map(([ruleName, ruleScope]) => {
|
|
188
|
-
if (!ruleScope)
|
|
189
|
-
return undefined;
|
|
190
|
-
const rule = tableRules[ruleName];
|
|
191
|
-
const validatedRule = validatedTableRules[ruleName];
|
|
192
|
-
if (!validatedRule || !rule) {
|
|
193
|
-
throw `Invalid scope: ${args.tableName}.${ruleName}. The publish does not allow this command.`;
|
|
194
|
-
}
|
|
195
|
-
if (ruleScope === true) {
|
|
196
|
-
return [ruleName, validatedRule];
|
|
197
|
-
}
|
|
198
|
-
const scopeFields = tableHandler.parseFieldFilter(ruleScope.fields);
|
|
199
|
-
const scopeForcedFilter = "forcedFilter" in ruleScope ? ruleScope.forcedFilter : undefined;
|
|
200
|
-
const ruleFields = "fields" in validatedRule ? validatedRule.fields : undefined;
|
|
201
|
-
for (const field of scopeFields) {
|
|
202
|
-
if (!ruleFields?.includes(field)) {
|
|
203
|
-
throw `Invalid scope: ${args.tableName}.${ruleName}. The field "${field}" is not allowed to be selected according to the publish rules.`;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
if (!scopeFields.length) {
|
|
207
|
-
throw `Invalid scope: ${args.tableName}.${ruleName}. At least one field must be selected.`;
|
|
208
|
-
}
|
|
209
|
-
const ruleForcedFilter = "forcedFilter" in validatedRule ? validatedRule.forcedFilter : undefined;
|
|
210
|
-
const combinedForcedFilter = scopeForcedFilter && ruleForcedFilter ?
|
|
211
|
-
{ $and: [scopeForcedFilter, ruleForcedFilter] }
|
|
212
|
-
: scopeForcedFilter || ruleForcedFilter;
|
|
213
|
-
return [
|
|
214
|
-
ruleName,
|
|
215
|
-
{
|
|
216
|
-
...rule,
|
|
217
|
-
fields: (0, exports.fromEntries)(scopeFields.map((field) => [field, 1])),
|
|
218
|
-
...(scopeForcedFilter ? { forcedFilter: combinedForcedFilter } : {}),
|
|
219
|
-
},
|
|
220
|
-
];
|
|
221
|
-
})
|
|
222
|
-
.filter(prostgles_types_1.isDefined));
|
|
223
|
-
return result;
|
|
224
|
-
};
|
|
225
172
|
if (this.dbo[args.tableName]?.is_media) {
|
|
226
173
|
const { rules: fileTableRules } = await getFileTableRules_1.getFileTableRules.bind(this)(args.tableName, fileTablePublishRules, args.clientReq, clientInfo, scope);
|
|
227
|
-
return applyScopeToTableRules((0, publishTypesAndUtils_1.parsePublishTableRule)(fileTableRules));
|
|
174
|
+
return (0, applyScopeToTableRules_1.applyScopeToTableRules)(tableName, tableHandler, (0, publishTypesAndUtils_1.parsePublishTableRule)(fileTableRules), scope);
|
|
228
175
|
}
|
|
229
|
-
return applyScopeToTableRules((0, publishTypesAndUtils_1.parsePublishTableRule)(fileTablePublishRules));
|
|
176
|
+
return (0, applyScopeToTableRules_1.applyScopeToTableRules)(tableName, tableHandler, (0, publishTypesAndUtils_1.parsePublishTableRule)(fileTablePublishRules), scope);
|
|
230
177
|
}
|
|
231
178
|
getTableRulesWithoutFileTable = getTableRulesWithoutFileTable_1.getTableRulesWithoutFileTable.bind(this);
|
|
232
179
|
/* Prepares schema for client. Only allowed views and commands will be present */
|
|
@@ -244,8 +191,4 @@ function applyParamsIfFunc(maybeFunc, ...params) {
|
|
|
244
191
|
//@ts-ignore
|
|
245
192
|
return maybeFunc;
|
|
246
193
|
}
|
|
247
|
-
const fromEntries = (entries) => {
|
|
248
|
-
return Object.fromEntries(entries);
|
|
249
|
-
};
|
|
250
|
-
exports.fromEntries = fromEntries;
|
|
251
194
|
//# sourceMappingURL=PublishParser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PublishParser.js","sourceRoot":"","sources":["../../lib/PublishParser/PublishParser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"PublishParser.js","sourceRoot":"","sources":["../../lib/PublishParser/PublishParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type ParsedTableRule, type PermissionScope } from "./PublishParser";
|
|
2
|
+
import type { TableHandler } from "../DboBuilder/TableHandler/TableHandler";
|
|
3
|
+
export declare const applyScopeToTableRules: (tableName: string, tableHandler: Partial<TableHandler>, tableRules: ParsedTableRule | undefined, scope: PermissionScope | undefined) => ParsedTableRule | undefined;
|
|
4
|
+
export declare const fromEntries: <K extends string | number | symbol, V>(entries: readonly (readonly [K, V])[]) => Record<K, V>;
|
|
5
|
+
//# sourceMappingURL=applyScopeToTableRules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applyScopeToTableRules.d.ts","sourceRoot":"","sources":["../../lib/PublishParser/applyScopeToTableRules.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAC5E,eAAO,MAAM,sBAAsB,GACjC,WAAW,MAAM,EACjB,cAAc,OAAO,CAAC,YAAY,CAAC,EACnC,YAAY,eAAe,GAAG,SAAS,EACvC,OAAO,eAAe,GAAG,SAAS,KACjC,eAAe,GAAG,SA0DpB,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC,EAC/D,SAAS,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KACpC,MAAM,CAAC,CAAC,EAAE,CAAC,CAEb,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fromEntries = exports.applyScopeToTableRules = void 0;
|
|
4
|
+
const prostgles_types_1 = require("prostgles-types");
|
|
5
|
+
const applyScopeToTableRules = (tableName, tableHandler, tableRules, scope) => {
|
|
6
|
+
if (!tableRules)
|
|
7
|
+
return;
|
|
8
|
+
if (!scope || scope.sql === "commited")
|
|
9
|
+
return tableRules;
|
|
10
|
+
if (scope.sql === "rolledback") {
|
|
11
|
+
return (0, prostgles_types_1.pickKeys)(tableRules, ["select"]);
|
|
12
|
+
}
|
|
13
|
+
const tableScope = scope.tables?.[tableName];
|
|
14
|
+
if (!tableScope)
|
|
15
|
+
return;
|
|
16
|
+
const validatedTableRules = tableHandler.getValidatedRules?.(tableRules);
|
|
17
|
+
if (!validatedTableRules) {
|
|
18
|
+
throw "INTERNAL ERROR: getValidatedRules is missing for " + tableName;
|
|
19
|
+
}
|
|
20
|
+
/** Make sure the scope does not allow things outside the validatedTableRules */
|
|
21
|
+
const result = (0, exports.fromEntries)((0, prostgles_types_1.getObjectEntries)(tableScope)
|
|
22
|
+
.map(([ruleName, ruleScope]) => {
|
|
23
|
+
if (!ruleScope)
|
|
24
|
+
return undefined;
|
|
25
|
+
const rule = tableRules[ruleName];
|
|
26
|
+
const validatedRule = validatedTableRules[ruleName];
|
|
27
|
+
if (!validatedRule || !rule) {
|
|
28
|
+
throw `Invalid scope: ${tableName}.${ruleName}. The publish does not allow this command.`;
|
|
29
|
+
}
|
|
30
|
+
if (ruleScope === true) {
|
|
31
|
+
return [ruleName, validatedRule];
|
|
32
|
+
}
|
|
33
|
+
const scopeFields = tableHandler.parseFieldFilter(ruleScope.fields);
|
|
34
|
+
const scopeForcedFilter = "forcedFilter" in ruleScope ? ruleScope.forcedFilter : undefined;
|
|
35
|
+
const ruleFields = "fields" in validatedRule ? validatedRule.fields : undefined;
|
|
36
|
+
for (const field of scopeFields) {
|
|
37
|
+
if (!ruleFields?.includes(field)) {
|
|
38
|
+
throw `Invalid scope: ${tableName}.${ruleName}. The field "${field}" is not allowed to be selected according to the publish rules.`;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (!scopeFields.length) {
|
|
42
|
+
throw `Invalid scope: ${tableName}.${ruleName}. At least one field must be selected.`;
|
|
43
|
+
}
|
|
44
|
+
const ruleForcedFilter = "forcedFilter" in validatedRule ? validatedRule.forcedFilter : undefined;
|
|
45
|
+
const combinedForcedFilter = scopeForcedFilter && ruleForcedFilter ?
|
|
46
|
+
{ $and: [scopeForcedFilter, ruleForcedFilter] }
|
|
47
|
+
: scopeForcedFilter || ruleForcedFilter;
|
|
48
|
+
return [
|
|
49
|
+
ruleName,
|
|
50
|
+
{
|
|
51
|
+
...rule,
|
|
52
|
+
fields: (0, exports.fromEntries)(scopeFields.map((field) => [field, 1])),
|
|
53
|
+
...(scopeForcedFilter ? { forcedFilter: combinedForcedFilter } : {}),
|
|
54
|
+
},
|
|
55
|
+
];
|
|
56
|
+
})
|
|
57
|
+
.filter(prostgles_types_1.isDefined));
|
|
58
|
+
return result;
|
|
59
|
+
};
|
|
60
|
+
exports.applyScopeToTableRules = applyScopeToTableRules;
|
|
61
|
+
const fromEntries = (entries) => {
|
|
62
|
+
return Object.fromEntries(entries);
|
|
63
|
+
};
|
|
64
|
+
exports.fromEntries = fromEntries;
|
|
65
|
+
//# sourceMappingURL=applyScopeToTableRules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applyScopeToTableRules.js","sourceRoot":"","sources":["../../lib/PublishParser/applyScopeToTableRules.ts"],"names":[],"mappings":"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"}
|
|
@@ -383,15 +383,15 @@ export type PermissionScope = {
|
|
|
383
383
|
/** TODO: this should match publish types */
|
|
384
384
|
tables?: Record<string, Partial<{
|
|
385
385
|
select: true | {
|
|
386
|
-
fields
|
|
387
|
-
forcedFilter
|
|
386
|
+
fields?: FieldFilter;
|
|
387
|
+
forcedFilter?: AnyObject;
|
|
388
388
|
};
|
|
389
389
|
insert: true | {
|
|
390
|
-
fields
|
|
390
|
+
fields?: FieldFilter;
|
|
391
391
|
};
|
|
392
392
|
update: true | {
|
|
393
|
-
fields
|
|
394
|
-
forcedFilter
|
|
393
|
+
fields?: FieldFilter;
|
|
394
|
+
forcedFilter?: AnyObject;
|
|
395
395
|
};
|
|
396
396
|
delete: true;
|
|
397
397
|
}>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publishTypesAndUtils.d.ts","sourceRoot":"","sources":["../../lib/PublishParser/publishTypesAndUtils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"publishTypesAndUtils.d.ts","sourceRoot":"","sources":["../../lib/PublishParser/publishTypesAndUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { includes } from "prostgles-types";
|
|
2
2
|
import { getClientRequestIPsInfo } from "../Auth/AuthHandler";
|
|
3
3
|
import type { AuthClientRequest, AuthResultWithSID } from "../Auth/AuthTypes";
|
|
4
4
|
import type { DBOFullyTyped } from "../DBSchemaBuilder/DBSchemaBuilder";
|
|
5
5
|
import type { DB, DBHandlerServer, Prostgles } from "../Prostgles";
|
|
6
6
|
import type { ProstglesInitOptions } from "../ProstglesTypes";
|
|
7
7
|
import { getClientHandlers } from "../WebsocketAPI/getClientHandlers";
|
|
8
|
+
import { applyScopeToTableRules } from "./applyScopeToTableRules";
|
|
8
9
|
import type { ServerFunctionDefinition } from "./defineServerFunction";
|
|
9
10
|
import { getFileTableRules } from "./getFileTableRules";
|
|
10
11
|
import { getSchemaFromPublish } from "./getSchemaFromPublish";
|
|
@@ -203,71 +204,12 @@ export class PublishParser {
|
|
|
203
204
|
clientInfo: AuthResultWithSID | undefined,
|
|
204
205
|
scope: PermissionScope | undefined,
|
|
205
206
|
): Promise<ParsedTableRule | undefined> {
|
|
207
|
+
const { tableName } = args;
|
|
208
|
+
const tableHandler = this.dbo[tableName];
|
|
209
|
+
if (!tableHandler) {
|
|
210
|
+
throw "INTERNAL ERROR: table handler not found for " + args.tableName;
|
|
211
|
+
}
|
|
206
212
|
const fileTablePublishRules = await this.getTableRulesWithoutFileTable(args, clientInfo);
|
|
207
|
-
const applyScopeToTableRules = (tableRules: ParsedTableRule | undefined) => {
|
|
208
|
-
if (!tableRules) return;
|
|
209
|
-
if (!scope || scope.sql === "commited") return tableRules;
|
|
210
|
-
if (scope.sql === "rolledback") {
|
|
211
|
-
return pickKeys(tableRules, ["select"]);
|
|
212
|
-
}
|
|
213
|
-
const tableScope = scope.tables?.[args.tableName];
|
|
214
|
-
if (!tableScope) return;
|
|
215
|
-
|
|
216
|
-
const tableHandler = this.dbo[args.tableName];
|
|
217
|
-
if (!tableHandler) {
|
|
218
|
-
throw "INTERNAL ERROR: table handler not found for " + args.tableName;
|
|
219
|
-
}
|
|
220
|
-
const validatedTableRules = tableHandler.getValidatedRules?.(tableRules);
|
|
221
|
-
if (!validatedTableRules) {
|
|
222
|
-
throw "INTERNAL ERROR: getValidatedRules is missing for " + args.tableName;
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
/** Make sure the scope does not allow things outside the validatedTableRules */
|
|
226
|
-
const result = fromEntries(
|
|
227
|
-
getObjectEntries(tableScope)
|
|
228
|
-
.map(([ruleName, ruleScope]) => {
|
|
229
|
-
if (!ruleScope) return undefined;
|
|
230
|
-
const rule = tableRules[ruleName];
|
|
231
|
-
const validatedRule = validatedTableRules[ruleName];
|
|
232
|
-
if (!validatedRule || !rule) {
|
|
233
|
-
throw `Invalid scope: ${args.tableName}.${ruleName}. The publish does not allow this command.`;
|
|
234
|
-
}
|
|
235
|
-
if (ruleScope === true) {
|
|
236
|
-
return [ruleName, validatedRule] as const;
|
|
237
|
-
}
|
|
238
|
-
const scopeFields = tableHandler.parseFieldFilter!(ruleScope.fields);
|
|
239
|
-
const scopeForcedFilter =
|
|
240
|
-
"forcedFilter" in ruleScope ? ruleScope.forcedFilter : undefined;
|
|
241
|
-
|
|
242
|
-
const ruleFields = "fields" in validatedRule ? validatedRule.fields : undefined;
|
|
243
|
-
for (const field of scopeFields) {
|
|
244
|
-
if (!ruleFields?.includes(field)) {
|
|
245
|
-
throw `Invalid scope: ${args.tableName}.${ruleName}. The field "${field}" is not allowed to be selected according to the publish rules.`;
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
if (!scopeFields.length) {
|
|
249
|
-
throw `Invalid scope: ${args.tableName}.${ruleName}. At least one field must be selected.`;
|
|
250
|
-
}
|
|
251
|
-
const ruleForcedFilter =
|
|
252
|
-
"forcedFilter" in validatedRule ? validatedRule.forcedFilter : undefined;
|
|
253
|
-
const combinedForcedFilter =
|
|
254
|
-
scopeForcedFilter && ruleForcedFilter ?
|
|
255
|
-
{ $and: [scopeForcedFilter, ruleForcedFilter] }
|
|
256
|
-
: scopeForcedFilter || ruleForcedFilter;
|
|
257
|
-
|
|
258
|
-
return [
|
|
259
|
-
ruleName,
|
|
260
|
-
{
|
|
261
|
-
...rule,
|
|
262
|
-
fields: fromEntries(scopeFields.map((field) => [field, 1] as const)),
|
|
263
|
-
...(scopeForcedFilter ? { forcedFilter: combinedForcedFilter } : {}),
|
|
264
|
-
} as any,
|
|
265
|
-
] as const;
|
|
266
|
-
})
|
|
267
|
-
.filter(isDefined),
|
|
268
|
-
) as ParsedTableRule;
|
|
269
|
-
return result;
|
|
270
|
-
};
|
|
271
213
|
if (this.dbo[args.tableName]?.is_media) {
|
|
272
214
|
const { rules: fileTableRules } = await getFileTableRules.bind(this)(
|
|
273
215
|
args.tableName,
|
|
@@ -276,10 +218,20 @@ export class PublishParser {
|
|
|
276
218
|
clientInfo,
|
|
277
219
|
scope,
|
|
278
220
|
);
|
|
279
|
-
return applyScopeToTableRules(
|
|
221
|
+
return applyScopeToTableRules(
|
|
222
|
+
tableName,
|
|
223
|
+
tableHandler,
|
|
224
|
+
parsePublishTableRule(fileTableRules),
|
|
225
|
+
scope,
|
|
226
|
+
);
|
|
280
227
|
}
|
|
281
228
|
|
|
282
|
-
return applyScopeToTableRules(
|
|
229
|
+
return applyScopeToTableRules(
|
|
230
|
+
tableName,
|
|
231
|
+
tableHandler,
|
|
232
|
+
parsePublishTableRule(fileTablePublishRules),
|
|
233
|
+
scope,
|
|
234
|
+
);
|
|
283
235
|
}
|
|
284
236
|
|
|
285
237
|
getTableRulesWithoutFileTable = getTableRulesWithoutFileTable.bind(this);
|
|
@@ -307,9 +259,3 @@ function applyParamsIfFunc<T>(
|
|
|
307
259
|
//@ts-ignore
|
|
308
260
|
return maybeFunc;
|
|
309
261
|
}
|
|
310
|
-
|
|
311
|
-
export const fromEntries = <K extends string | number | symbol, V>(
|
|
312
|
-
entries: readonly (readonly [K, V])[],
|
|
313
|
-
): Record<K, V> => {
|
|
314
|
-
return Object.fromEntries(entries) as Record<K, V>;
|
|
315
|
-
};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { getObjectEntries, isDefined, pickKeys } from "prostgles-types";
|
|
2
|
+
import { type ParsedTableRule, type PermissionScope } from "./PublishParser";
|
|
3
|
+
import type { TableHandler } from "../DboBuilder/TableHandler/TableHandler";
|
|
4
|
+
export const applyScopeToTableRules = (
|
|
5
|
+
tableName: string,
|
|
6
|
+
tableHandler: Partial<TableHandler>,
|
|
7
|
+
tableRules: ParsedTableRule | undefined,
|
|
8
|
+
scope: PermissionScope | undefined,
|
|
9
|
+
): ParsedTableRule | undefined => {
|
|
10
|
+
if (!tableRules) return;
|
|
11
|
+
if (!scope || scope.sql === "commited") return tableRules;
|
|
12
|
+
if (scope.sql === "rolledback") {
|
|
13
|
+
return pickKeys(tableRules, ["select"]);
|
|
14
|
+
}
|
|
15
|
+
const tableScope = scope.tables?.[tableName];
|
|
16
|
+
if (!tableScope) return;
|
|
17
|
+
|
|
18
|
+
const validatedTableRules = tableHandler.getValidatedRules?.(tableRules);
|
|
19
|
+
if (!validatedTableRules) {
|
|
20
|
+
throw "INTERNAL ERROR: getValidatedRules is missing for " + tableName;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** Make sure the scope does not allow things outside the validatedTableRules */
|
|
24
|
+
const result = fromEntries(
|
|
25
|
+
getObjectEntries(tableScope)
|
|
26
|
+
.map(([ruleName, ruleScope]) => {
|
|
27
|
+
if (!ruleScope) return undefined;
|
|
28
|
+
const rule = tableRules[ruleName];
|
|
29
|
+
const validatedRule = validatedTableRules[ruleName];
|
|
30
|
+
if (!validatedRule || !rule) {
|
|
31
|
+
throw `Invalid scope: ${tableName}.${ruleName}. The publish does not allow this command.`;
|
|
32
|
+
}
|
|
33
|
+
if (ruleScope === true) {
|
|
34
|
+
return [ruleName, validatedRule] as const;
|
|
35
|
+
}
|
|
36
|
+
const scopeFields = tableHandler.parseFieldFilter!(ruleScope.fields);
|
|
37
|
+
const scopeForcedFilter = "forcedFilter" in ruleScope ? ruleScope.forcedFilter : undefined;
|
|
38
|
+
|
|
39
|
+
const ruleFields = "fields" in validatedRule ? validatedRule.fields : undefined;
|
|
40
|
+
for (const field of scopeFields) {
|
|
41
|
+
if (!ruleFields?.includes(field)) {
|
|
42
|
+
throw `Invalid scope: ${tableName}.${ruleName}. The field "${field}" is not allowed to be selected according to the publish rules.`;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (!scopeFields.length) {
|
|
46
|
+
throw `Invalid scope: ${tableName}.${ruleName}. At least one field must be selected.`;
|
|
47
|
+
}
|
|
48
|
+
const ruleForcedFilter =
|
|
49
|
+
"forcedFilter" in validatedRule ? validatedRule.forcedFilter : undefined;
|
|
50
|
+
const combinedForcedFilter =
|
|
51
|
+
scopeForcedFilter && ruleForcedFilter ?
|
|
52
|
+
{ $and: [scopeForcedFilter, ruleForcedFilter] }
|
|
53
|
+
: scopeForcedFilter || ruleForcedFilter;
|
|
54
|
+
|
|
55
|
+
return [
|
|
56
|
+
ruleName,
|
|
57
|
+
{
|
|
58
|
+
...rule,
|
|
59
|
+
fields: fromEntries(scopeFields.map((field) => [field, 1] as const)),
|
|
60
|
+
...(scopeForcedFilter ? { forcedFilter: combinedForcedFilter } : {}),
|
|
61
|
+
} as any,
|
|
62
|
+
] as const;
|
|
63
|
+
})
|
|
64
|
+
.filter(isDefined),
|
|
65
|
+
) as ParsedTableRule;
|
|
66
|
+
return result;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export const fromEntries = <K extends string | number | symbol, V>(
|
|
70
|
+
entries: readonly (readonly [K, V])[],
|
|
71
|
+
): Record<K, V> => {
|
|
72
|
+
return Object.fromEntries(entries) as Record<K, V>;
|
|
73
|
+
};
|
|
@@ -512,19 +512,19 @@ export type PermissionScope = {
|
|
|
512
512
|
select:
|
|
513
513
|
| true
|
|
514
514
|
| {
|
|
515
|
-
fields
|
|
516
|
-
forcedFilter
|
|
515
|
+
fields?: FieldFilter;
|
|
516
|
+
forcedFilter?: AnyObject;
|
|
517
517
|
};
|
|
518
518
|
insert:
|
|
519
519
|
| true
|
|
520
520
|
| {
|
|
521
|
-
fields
|
|
521
|
+
fields?: FieldFilter;
|
|
522
522
|
};
|
|
523
523
|
update:
|
|
524
524
|
| true
|
|
525
525
|
| {
|
|
526
|
-
fields
|
|
527
|
-
forcedFilter
|
|
526
|
+
fields?: FieldFilter;
|
|
527
|
+
forcedFilter?: AnyObject;
|
|
528
528
|
};
|
|
529
529
|
delete: true;
|
|
530
530
|
}>
|