@cerebruminc/yates 3.3.2 → 3.4.0
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/CHANGELOG.md +12 -0
- package/README.md +4 -0
- package/dist/ast-fragments.js.map +1 -1
- package/dist/escape.js +1 -3
- package/dist/escape.js.map +1 -1
- package/dist/expressions.d.ts +1 -1
- package/dist/expressions.js +40 -21
- package/dist/expressions.js.map +1 -1
- package/dist/index.js +299 -235
- package/dist/index.js.map +1 -1
- package/package.json +8 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [3.4.0](https://github.com/cerebruminc/yates/compare/v3.3.2...v3.4.0) (2024-03-22)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* add a debug mode and some additional logging for expressions ([d8b85fa](https://github.com/cerebruminc/yates/commit/d8b85faae13a3aa4e4e6c978f000d7dffc626e7d))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* improve startup performance by unifying queries for pg policies and roles ([d765fd5](https://github.com/cerebruminc/yates/commit/d765fd57ffcaa9a9630e2e70cbec3546effbc854))
|
|
14
|
+
|
|
3
15
|
## [3.3.2](https://github.com/cerebruminc/yates/compare/v3.3.1...v3.3.2) (2024-02-28)
|
|
4
16
|
|
|
5
17
|
|
package/README.md
CHANGED
|
@@ -152,6 +152,10 @@ When defining an ability you need to provide the following properties:
|
|
|
152
152
|
|
|
153
153
|
- `operation`: The operation that the ability is being applied to. This can be one of `CREATE`, `READ`, `UPDATE` or `DELETE`.
|
|
154
154
|
|
|
155
|
+
### Debug
|
|
156
|
+
|
|
157
|
+
To run Yates in debug mode, use the environment variable `DEBUG=yates`.
|
|
158
|
+
|
|
155
159
|
## Known limitations
|
|
156
160
|
|
|
157
161
|
### Nested transactions
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast-fragments.js","sourceRoot":"","sources":["../src/ast-fragments.ts"],"names":[],"mappings":";;;AAAA,mCAAyC;AAEzC;;;;GAIG;AACI,IAAM,yBAAyB,GAAG,UAAC,OAAe;IACxD,OAAO;QACN,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACL,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE;gBACN;oBACC,GAAG,EAAE;wBACJ,IAAI,EAAE,IAAI;wBACV,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,IAAI;wBACb,QAAQ,EAAE;4BACT,IAAI,EAAE,IAAI;yBACV;wBACD,OAAO,EAAE;4BACR;gCACC,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE;oCACL,IAAI,EAAE,UAAU;oCAChB,IAAI,EAAE,2BAA2B;oCACjC,IAAI,EAAE;wCACL,IAAI,EAAE,WAAW;wCACjB,KAAK,EAAE;4CACN;gDACC,IAAI,EAAE,MAAM;gDACZ,OAAO,EAAE,MAAM;gDACf,IAAI,EAAE;oDACL,IAAI,EAAE,UAAU;oDAChB,IAAI,EAAE,iBAAiB;oDACvB,IAAI,EAAE;wDACL,IAAI,EAAE,WAAW;wDACjB,KAAK,EAAE;4DACN;gEACC,IAAI,EAAE,WAAW;gEACjB,KAAK,EAAE,IAAA,sBAAa,
|
|
1
|
+
{"version":3,"file":"ast-fragments.js","sourceRoot":"","sources":["../src/ast-fragments.ts"],"names":[],"mappings":";;;AAAA,mCAAyC;AAEzC;;;;GAIG;AACI,IAAM,yBAAyB,GAAG,UAAC,OAAe;IACxD,OAAO;QACN,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACL,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE;gBACN;oBACC,GAAG,EAAE;wBACJ,IAAI,EAAE,IAAI;wBACV,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,IAAI;wBACb,QAAQ,EAAE;4BACT,IAAI,EAAE,IAAI;yBACV;wBACD,OAAO,EAAE;4BACR;gCACC,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE;oCACL,IAAI,EAAE,UAAU;oCAChB,IAAI,EAAE,2BAA2B;oCACjC,IAAI,EAAE;wCACL,IAAI,EAAE,WAAW;wCACjB,KAAK,EAAE;4CACN;gDACC,IAAI,EAAE,MAAM;gDACZ,OAAO,EAAE,MAAM;gDACf,IAAI,EAAE;oDACL,IAAI,EAAE,UAAU;oDAChB,IAAI,EAAE,iBAAiB;oDACvB,IAAI,EAAE;wDACL,IAAI,EAAE,WAAW;wDACjB,KAAK,EAAE;4DACN;gEACC,IAAI,EAAE,WAAW;gEACjB,KAAK,EAAE,IAAA,sBAAa,EACnB,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CACzC;6DACD;yDACD;qDACD;iDACD;gDACD,EAAE,EAAE,IAAI;gDACR,MAAM,EAAE,IAAI;gDACZ,MAAM,EAAE;oDACP,QAAQ,EAAE,OAAO;iDACjB;gDACD,MAAM,EAAE,EAAE;gDACV,UAAU,EAAE,EAAE;6CACd;yCACD;qCACD;iCACD;gCACD,EAAE,EAAE,IAAI;6BACR;yBACD;wBACD,IAAI,EAAE;4BACL,QAAQ,EAAE,IAAI;yBACd;wBACD,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,IAAI;wBACX,OAAO,EAAE,IAAI;wBACb,MAAM,EAAE,IAAI;wBACZ,OAAO,EAAE,IAAI;wBACb,KAAK,EAAE;4BACN,SAAS,EAAE,EAAE;4BACb,KAAK,EAAE,EAAE;yBACT;wBACD,MAAM,EAAE,IAAI;qBACZ;iBACD;aACD;SACD;KACD,CAAC;AACH,CAAC,CAAC;AA1EW,QAAA,yBAAyB,6BA0EpC"}
|
package/dist/escape.js
CHANGED
|
@@ -5,9 +5,7 @@
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.escapeLiteral = exports.escapeIdentifier = void 0;
|
|
7
7
|
// Ported from PostgreSQL 9.2.4 source code in src/interfaces/libpq/fe-exec.c
|
|
8
|
-
var escapeIdentifier = function (str) {
|
|
9
|
-
return "\"".concat(str.replace(/"/g, '""'), "\"");
|
|
10
|
-
};
|
|
8
|
+
var escapeIdentifier = function (str) { return "\"".concat(str.replace(/"/g, '""'), "\""); };
|
|
11
9
|
exports.escapeIdentifier = escapeIdentifier;
|
|
12
10
|
// Ported from PostgreSQL 9.2.4 source code in src/interfaces/libpq/fe-exec.c
|
|
13
11
|
var escapeLiteral = function (str) {
|
package/dist/escape.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"escape.js","sourceRoot":"","sources":["../src/escape.ts"],"names":[],"mappings":";AAAA,mEAAmE;AACnE,4HAA4H;AAC5H,yJAAyJ;;;AAEzJ,6EAA6E;AACtE,IAAM,gBAAgB,GAAG,
|
|
1
|
+
{"version":3,"file":"escape.js","sourceRoot":"","sources":["../src/escape.ts"],"names":[],"mappings":";AAAA,mEAAmE;AACnE,4HAA4H;AAC5H,yJAAyJ;;;AAEzJ,6EAA6E;AACtE,IAAM,gBAAgB,GAAG,UAAC,GAAW,IAAK,OAAA,YAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAG,EAA9B,CAA8B,CAAC;AAAnE,QAAA,gBAAgB,oBAAmD;AAEhF,6EAA6E;AACtE,IAAM,aAAa,GAAG,UAAC,GAAW;IACxC,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,OAAO,GAAG,GAAG,CAAC;IAElB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,YAAY,GAAG,IAAI,CAAC;QACrB,CAAC;aAAM,CAAC;YACP,OAAO,IAAI,CAAC,CAAC;QACd,CAAC;IACF,CAAC;IAED,OAAO,IAAI,GAAG,CAAC;IAEf,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC3B,OAAO,GAAG,YAAK,OAAO,CAAE,CAAC;IAC1B,CAAC;IAED,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC;AAvBW,QAAA,aAAa,iBAuBxB"}
|
package/dist/expressions.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Prisma, PrismaClient } from "@prisma/client";
|
|
2
|
-
import { AsyncReturnType } from "type-fest";
|
|
3
2
|
import { defineDmmfProperty } from "@prisma/client/runtime/library";
|
|
3
|
+
import { AsyncReturnType } from "type-fest";
|
|
4
4
|
export type RuntimeDataModel = Parameters<typeof defineDmmfProperty>[1];
|
|
5
5
|
type FFMeta<M extends Prisma.ModelName> = PrismaClient[Uncapitalize<M>]["findFirst"];
|
|
6
6
|
type ModelWhereArgs<M extends Prisma.ModelName> = Exclude<Parameters<FFMeta<M>>["0"], undefined>["where"];
|
package/dist/expressions.js
CHANGED
|
@@ -63,19 +63,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
63
63
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
64
64
|
exports.expressionToSQL = void 0;
|
|
65
65
|
var client_1 = require("@prisma/client");
|
|
66
|
-
var random_1 = __importDefault(require("lodash/random"));
|
|
67
66
|
var matches_1 = __importDefault(require("lodash/matches"));
|
|
67
|
+
var random_1 = __importDefault(require("lodash/random"));
|
|
68
68
|
var node_sql_parser_1 = require("node-sql-parser");
|
|
69
|
-
var escape_1 = require("./escape");
|
|
70
69
|
var ast_fragments_1 = require("./ast-fragments");
|
|
70
|
+
var escape_1 = require("./escape");
|
|
71
71
|
var PRISMA_NUMERIC_TYPES = ["Int", "BigInt", "Float", "Decimal"];
|
|
72
|
+
// This function is a recursive function that will search through an object and
|
|
73
|
+
// its children to find a matching object.
|
|
74
|
+
// It's used to find a matching AST fragment so that we can replace it with a token
|
|
75
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO future cleanup
|
|
72
76
|
var deepFind = function (obj, subObj) {
|
|
73
77
|
var matcher = (0, matches_1.default)(subObj);
|
|
74
78
|
for (var key in obj) {
|
|
75
79
|
if (matcher(obj[key])) {
|
|
76
80
|
return obj[key];
|
|
77
81
|
}
|
|
78
|
-
|
|
82
|
+
if (typeof obj[key] === "object") {
|
|
79
83
|
var result = deepFind(obj[key], subObj);
|
|
80
84
|
if (result) {
|
|
81
85
|
return result;
|
|
@@ -83,16 +87,20 @@ var deepFind = function (obj, subObj) {
|
|
|
83
87
|
}
|
|
84
88
|
}
|
|
85
89
|
};
|
|
90
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
86
91
|
var expressionRowName = function (col) { return "___yates_row_".concat(col); };
|
|
87
92
|
var expressionContext = function (context) { return "___yates_context_".concat(context); };
|
|
88
93
|
// Generate a big 32bit signed integer to use as an ID
|
|
89
94
|
var getLargeRandomInt = function () { return (0, random_1.default)(1000000000, 2147483647); };
|
|
90
95
|
var getDmmfMetaData = function (client, model, field) {
|
|
91
|
-
|
|
96
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
97
|
+
var runtimeDataModel = client
|
|
98
|
+
._runtimeDataModel;
|
|
92
99
|
var modelData = runtimeDataModel.models[model];
|
|
93
100
|
if (!modelData) {
|
|
94
101
|
throw new Error("Could not retrieve model data from Prisma Client for model '".concat(model, "'"));
|
|
95
102
|
}
|
|
103
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
96
104
|
var fieldData = modelData.fields.find(function (f) { return f.name === field; });
|
|
97
105
|
if (!fieldData) {
|
|
98
106
|
throw new Error("Could not retrieve field data from Prisma Client for field '".concat(model, ".").concat(field, "'"));
|
|
@@ -107,6 +115,7 @@ var tokenizeWhereExpression = function (
|
|
|
107
115
|
/** The Prisma client to use for metadata */
|
|
108
116
|
client,
|
|
109
117
|
/** The Prisma where expression to be tokenized */
|
|
118
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
110
119
|
where,
|
|
111
120
|
/** The base table we are generating an expression for */
|
|
112
121
|
table,
|
|
@@ -133,18 +142,18 @@ tokens) {
|
|
|
133
142
|
if (fieldData.isList) {
|
|
134
143
|
for (var subField in value) {
|
|
135
144
|
var subValue = value[subField];
|
|
136
|
-
var _b = tokenizeWhereExpression(client, subValue, table, fieldData.type, tokens),
|
|
137
|
-
|
|
138
|
-
|
|
145
|
+
var _b = tokenizeWhereExpression(client, subValue, table, fieldData.type, tokens), subTokens_1 = _b.tokens, subWhere_1 = _b.where;
|
|
146
|
+
// biome-ignore lint/style/noParameterAssign: TODO fix this
|
|
147
|
+
tokens = __assign(__assign({}, tokens), subTokens_1);
|
|
148
|
+
where[field][subField] = subWhere_1;
|
|
139
149
|
}
|
|
140
150
|
continue;
|
|
141
151
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
}
|
|
152
|
+
var _c = tokenizeWhereExpression(client, value, table, fieldData.type, tokens), subTokens = _c.tokens, subWhere = _c.where;
|
|
153
|
+
// biome-ignore lint/style/noParameterAssign: TODO fix this
|
|
154
|
+
tokens = __assign(__assign({}, tokens), subTokens);
|
|
155
|
+
where[field] = subWhere;
|
|
156
|
+
continue;
|
|
148
157
|
}
|
|
149
158
|
var isNumeric = PRISMA_NUMERIC_TYPES.includes(fieldData.type);
|
|
150
159
|
var isColumnName = typeof value === "string" && !!value.match(/^___yates_row_/);
|
|
@@ -153,6 +162,7 @@ tokens) {
|
|
|
153
162
|
switch (true) {
|
|
154
163
|
case isColumnName:
|
|
155
164
|
// Substiture the yates row placeholder for the actual column name
|
|
165
|
+
// biome-ignore lint/correctness/noSwitchDeclarations: TODO fix this
|
|
156
166
|
var column = value.replace(/^___yates_row_/, "");
|
|
157
167
|
if (!getDmmfMetaData(client, table, column)) {
|
|
158
168
|
throw new Error("Invalid field name \"".concat(column, "\""));
|
|
@@ -222,6 +232,7 @@ tokens) {
|
|
|
222
232
|
try {
|
|
223
233
|
for (var _d = (e_1 = void 0, __values(value.in)), _e = _d.next(); !_e.done; _e = _d.next()) {
|
|
224
234
|
var item = _e.value;
|
|
235
|
+
// biome-ignore lint/suspicious/noImplicitAnyLet: TODO fix this
|
|
225
236
|
var inToken = void 0;
|
|
226
237
|
do {
|
|
227
238
|
inToken = getLargeRandomInt();
|
|
@@ -247,11 +258,9 @@ tokens) {
|
|
|
247
258
|
};
|
|
248
259
|
continue;
|
|
249
260
|
}
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
astFragment = (0, ast_fragments_1.jsonb_array_elements_text)(value.in);
|
|
254
|
-
}
|
|
261
|
+
// If the value of `in` is a context value, we assume that it is an array that has been JSON encoded
|
|
262
|
+
// We create an AST fragment representing a function call to `jsonb_array_elements_text` with the context value as the argument
|
|
263
|
+
astFragment = (0, ast_fragments_1.jsonb_array_elements_text)(value.in);
|
|
255
264
|
break;
|
|
256
265
|
// All other types are treated as strings
|
|
257
266
|
default:
|
|
@@ -303,21 +312,28 @@ var expressionToSQL = function (getExpression, table) { return __awaiter(void 0,
|
|
|
303
312
|
},
|
|
304
313
|
});
|
|
305
314
|
return [4 /*yield*/, new Promise(
|
|
306
|
-
//
|
|
315
|
+
// biome-ignore lint/suspicious/noAsyncPromiseExecutor: future cleanup
|
|
307
316
|
function (resolve, reject) { return __awaiter(void 0, void 0, void 0, function () {
|
|
308
317
|
var rawExpression, isSubselect, error_1;
|
|
309
318
|
return __generator(this, function (_a) {
|
|
310
319
|
switch (_a.label) {
|
|
311
320
|
case 0:
|
|
312
|
-
rawExpression = getExpression(
|
|
321
|
+
rawExpression = getExpression(
|
|
322
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
323
|
+
expressionClient,
|
|
324
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
325
|
+
expressionRowName, expressionContext);
|
|
313
326
|
isSubselect = typeof rawExpression === "object" &&
|
|
314
327
|
"then" in rawExpression &&
|
|
328
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
315
329
|
typeof rawExpression.then === "function";
|
|
330
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
316
331
|
baseClient.$on("query", function (e) {
|
|
317
332
|
var e_2, _a, e_3, _b;
|
|
318
333
|
try {
|
|
319
334
|
var parser = new node_sql_parser_1.Parser();
|
|
320
335
|
// Parse the query into an AST
|
|
336
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
321
337
|
var ast = parser.astify(e.query, {
|
|
322
338
|
database: "postgresql",
|
|
323
339
|
});
|
|
@@ -398,10 +414,13 @@ var expressionToSQL = function (getExpression, table) { return __awaiter(void 0,
|
|
|
398
414
|
case 2:
|
|
399
415
|
_a.sent();
|
|
400
416
|
return [3 /*break*/, 5];
|
|
401
|
-
case 3:
|
|
417
|
+
case 3:
|
|
418
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
419
|
+
return [4 /*yield*/, expressionClient[table].findFirst({
|
|
402
420
|
where: rawExpression,
|
|
403
421
|
})];
|
|
404
422
|
case 4:
|
|
423
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
405
424
|
_a.sent();
|
|
406
425
|
_a.label = 5;
|
|
407
426
|
case 5: return [3 /*break*/, 7];
|
package/dist/expressions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expressions.js","sourceRoot":"","sources":["../src/expressions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAsD;
|
|
1
|
+
{"version":3,"file":"expressions.js","sourceRoot":"","sources":["../src/expressions.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -105,13 +105,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
105
105
|
};
|
|
106
106
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
107
107
|
exports.setup = exports.createRoles = exports.createClient = exports.createRoleName = exports.createAbilityName = void 0;
|
|
108
|
+
var crypto = __importStar(require("crypto"));
|
|
109
|
+
var debug_1 = __importDefault(require("debug"));
|
|
108
110
|
var difference_1 = __importDefault(require("lodash/difference"));
|
|
109
111
|
var flatMap_1 = __importDefault(require("lodash/flatMap"));
|
|
110
112
|
var map_1 = __importDefault(require("lodash/map"));
|
|
111
113
|
var toPairs_1 = __importDefault(require("lodash/toPairs"));
|
|
112
|
-
var crypto = __importStar(require("crypto"));
|
|
113
114
|
var expressions_1 = require("./expressions");
|
|
114
115
|
var VALID_OPERATIONS = ["SELECT", "UPDATE", "INSERT", "DELETE"];
|
|
116
|
+
var debug = (0, debug_1.default)("yates");
|
|
115
117
|
/**
|
|
116
118
|
* This function is used to take a lock that is automatically released at the end of the current transaction.
|
|
117
119
|
* This is very convenient for ensuring we don't hit concurrency issues when running setup code.
|
|
@@ -158,16 +160,19 @@ var createClient = function (prisma, getContext, options) {
|
|
|
158
160
|
query: {
|
|
159
161
|
$allModels: {
|
|
160
162
|
$allOperations: function (params) {
|
|
161
|
-
var _a;
|
|
162
163
|
return __awaiter(this, void 0, void 0, function () {
|
|
163
|
-
var model, args, query, operation, ctx, role, context, pgRole,
|
|
164
|
-
var e_2,
|
|
164
|
+
var model, args, query, operation, ctx, role, context, pgRole, _a, _b, k, _c, _d, v, queryResults, e_1;
|
|
165
|
+
var e_2, _e, e_3, _f;
|
|
165
166
|
var _this = this;
|
|
167
|
+
var _g;
|
|
166
168
|
return __generator(this, function (_h) {
|
|
167
169
|
switch (_h.label) {
|
|
168
170
|
case 0:
|
|
169
171
|
model = params.model, args = params.args, query = params.query, operation = params.operation;
|
|
170
172
|
if (!model) {
|
|
173
|
+
// If the model is not defined, we can't apply RLS
|
|
174
|
+
// This can occur when you are making a call with Prisma's $queryRaw method
|
|
175
|
+
// biome-ignore lint/suspicious/noExplicitAny: See above
|
|
171
176
|
return [2 /*return*/, query(args)];
|
|
172
177
|
}
|
|
173
178
|
ctx = getContext();
|
|
@@ -179,18 +184,20 @@ var createClient = function (prisma, getContext, options) {
|
|
|
179
184
|
pgRole = (0, exports.createRoleName)(role);
|
|
180
185
|
if (context) {
|
|
181
186
|
try {
|
|
182
|
-
for (
|
|
183
|
-
k =
|
|
187
|
+
for (_a = __values(Object.keys(context)), _b = _a.next(); !_b.done; _b = _a.next()) {
|
|
188
|
+
k = _b.value;
|
|
184
189
|
if (!k.match(/^[a-z_\.]+$/)) {
|
|
185
190
|
throw new Error("Context variable \"".concat(k, "\" contains invalid characters. Context variables must only contain lowercase letters, numbers, periods and underscores."));
|
|
186
191
|
}
|
|
187
|
-
if (typeof context[k] !== "number" &&
|
|
192
|
+
if (typeof context[k] !== "number" &&
|
|
193
|
+
typeof context[k] !== "string" &&
|
|
194
|
+
!Array.isArray(context[k])) {
|
|
188
195
|
throw new Error("Context variable \"".concat(k, "\" must be a string, number or array. Got ").concat(typeof context[k]));
|
|
189
196
|
}
|
|
190
197
|
if (Array.isArray(context[k])) {
|
|
191
198
|
try {
|
|
192
|
-
for (
|
|
193
|
-
v =
|
|
199
|
+
for (_c = (e_3 = void 0, __values(context[k])), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
200
|
+
v = _d.value;
|
|
194
201
|
if (typeof v !== "string") {
|
|
195
202
|
throw new Error("Context variable \"".concat(k, "\" must be an array of strings. Got ").concat(typeof v));
|
|
196
203
|
}
|
|
@@ -199,7 +206,7 @@ var createClient = function (prisma, getContext, options) {
|
|
|
199
206
|
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
200
207
|
finally {
|
|
201
208
|
try {
|
|
202
|
-
if (
|
|
209
|
+
if (_d && !_d.done && (_f = _c.return)) _f.call(_c);
|
|
203
210
|
}
|
|
204
211
|
finally { if (e_3) throw e_3.error; }
|
|
205
212
|
}
|
|
@@ -211,7 +218,7 @@ var createClient = function (prisma, getContext, options) {
|
|
|
211
218
|
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
212
219
|
finally {
|
|
213
220
|
try {
|
|
214
|
-
if (
|
|
221
|
+
if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
|
|
215
222
|
}
|
|
216
223
|
finally { if (e_2) throw e_2.error; }
|
|
217
224
|
}
|
|
@@ -283,7 +290,7 @@ var createClient = function (prisma, getContext, options) {
|
|
|
283
290
|
case 3:
|
|
284
291
|
e_1 = _h.sent();
|
|
285
292
|
// Normalize RLS errors to make them a bit more readable.
|
|
286
|
-
if ((
|
|
293
|
+
if ((_g = e_1.message) === null || _g === void 0 ? void 0 : _g.includes("new row violates row-level security policy for table")) {
|
|
287
294
|
throw new Error("You do not have permission to perform this action: ".concat(model, ".").concat(operation, "(...)"));
|
|
288
295
|
}
|
|
289
296
|
throw e_1;
|
|
@@ -298,256 +305,313 @@ var createClient = function (prisma, getContext, options) {
|
|
|
298
305
|
return client;
|
|
299
306
|
};
|
|
300
307
|
exports.createClient = createClient;
|
|
301
|
-
var setRLS = function (prisma, table, roleName, operation, rawExpression) { return __awaiter(void 0, void 0, void 0, function () {
|
|
302
|
-
var expression, policyName, rows;
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
308
|
+
var setRLS = function (prisma, pgPolicies, table, roleName, operation, rawExpression) { return __awaiter(void 0, void 0, void 0, function () {
|
|
309
|
+
var expression, policyName, rows, normalizedExpression, normalizedQual;
|
|
310
|
+
var _a, _b, _c, _d;
|
|
311
|
+
return __generator(this, function (_e) {
|
|
312
|
+
switch (_e.label) {
|
|
313
|
+
case 0:
|
|
314
|
+
debug("Calculating RLS expression from", rawExpression);
|
|
315
|
+
return [4 /*yield*/, (0, expressions_1.expressionToSQL)(rawExpression, table)];
|
|
306
316
|
case 1:
|
|
307
|
-
expression =
|
|
317
|
+
expression = _e.sent();
|
|
308
318
|
policyName = roleName;
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
319
|
+
rows = pgPolicies.filter(function (row) { return row.tablename === table && row.policyname === policyName; });
|
|
320
|
+
debug("Creating RLS policy", policyName);
|
|
321
|
+
debug("On table", table);
|
|
322
|
+
debug("For operation", operation);
|
|
323
|
+
debug("To role", roleName);
|
|
324
|
+
debug("With expression", expression);
|
|
325
|
+
normalizedExpression = expression === "true"
|
|
326
|
+
? expression
|
|
327
|
+
: "(".concat(expression.replace(/(\r\n|\n|\r)/gm, ""), ")");
|
|
328
|
+
normalizedQual = operation === "INSERT"
|
|
329
|
+
? (_b = (_a = rows === null || rows === void 0 ? void 0 : rows[0]) === null || _a === void 0 ? void 0 : _a.with_check) === null || _b === void 0 ? void 0 : _b.replace(/(\r\n|\n|\r)/gm, "")
|
|
330
|
+
: (_d = (_c = rows === null || rows === void 0 ? void 0 : rows[0]) === null || _c === void 0 ? void 0 : _c.qual) === null || _d === void 0 ? void 0 : _d.replace(/(\r\n|\n|\r)/gm, "");
|
|
331
|
+
if (!(rows.length === 0)) return [3 /*break*/, 6];
|
|
332
|
+
if (!(operation === "INSERT")) return [3 /*break*/, 3];
|
|
314
333
|
return [4 /*yield*/, prisma.$queryRawUnsafe("\n CREATE POLICY ".concat(policyName, " ON \"public\".\"").concat(table, "\" FOR ").concat(operation, " TO ").concat(roleName, " WITH CHECK (").concat(expression, ");\n "))];
|
|
315
|
-
case
|
|
316
|
-
|
|
317
|
-
return [3 /*break*/,
|
|
318
|
-
case
|
|
319
|
-
case
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
case
|
|
323
|
-
case
|
|
324
|
-
if (!(
|
|
325
|
-
if (!(operation === "INSERT")) return [3 /*break*/,
|
|
334
|
+
case 2:
|
|
335
|
+
_e.sent();
|
|
336
|
+
return [3 /*break*/, 5];
|
|
337
|
+
case 3: return [4 /*yield*/, prisma.$queryRawUnsafe("\n CREATE POLICY ".concat(policyName, " ON \"public\".\"").concat(table, "\" FOR ").concat(operation, " TO ").concat(roleName, " USING (").concat(expression, ");\n "))];
|
|
338
|
+
case 4:
|
|
339
|
+
_e.sent();
|
|
340
|
+
_e.label = 5;
|
|
341
|
+
case 5: return [3 /*break*/, 10];
|
|
342
|
+
case 6:
|
|
343
|
+
if (!(normalizedQual !== normalizedExpression)) return [3 /*break*/, 10];
|
|
344
|
+
if (!(operation === "INSERT")) return [3 /*break*/, 8];
|
|
326
345
|
return [4 /*yield*/, prisma.$queryRawUnsafe("\n ALTER POLICY ".concat(policyName, " ON \"public\".\"").concat(table, "\" TO ").concat(roleName, " WITH CHECK (").concat(expression, ");\n "))];
|
|
327
|
-
case
|
|
328
|
-
|
|
329
|
-
return [3 /*break*/,
|
|
330
|
-
case
|
|
331
|
-
case
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
case
|
|
346
|
+
case 7:
|
|
347
|
+
_e.sent();
|
|
348
|
+
return [3 /*break*/, 10];
|
|
349
|
+
case 8: return [4 /*yield*/, prisma.$queryRawUnsafe("\n ALTER POLICY ".concat(policyName, " ON \"public\".\"").concat(table, "\" TO ").concat(roleName, " USING (").concat(expression, ");\n "))];
|
|
350
|
+
case 9:
|
|
351
|
+
_e.sent();
|
|
352
|
+
_e.label = 10;
|
|
353
|
+
case 10: return [2 /*return*/];
|
|
335
354
|
}
|
|
336
355
|
});
|
|
337
356
|
}); };
|
|
338
|
-
var createRoles = function (_a) {
|
|
339
|
-
var
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
}
|
|
357
|
+
var createRoles = function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
|
|
358
|
+
var abilities, runtimeDataModel, models, diff, models_1, models_1_1, model, ability, operation, roles, pgRoles, pgPolicies, _c, _d, _e, _i, model, table, _loop_1, _f, _g, _h, _j, slug, _loop_2, _k, _l, _m, _o, key;
|
|
359
|
+
var e_5, _p;
|
|
360
|
+
var _q;
|
|
361
|
+
var prisma = _b.prisma, customAbilities = _b.customAbilities, getRoles = _b.getRoles;
|
|
362
|
+
return __generator(this, function (_r) {
|
|
363
|
+
switch (_r.label) {
|
|
364
|
+
case 0:
|
|
365
|
+
abilities = {};
|
|
366
|
+
runtimeDataModel = prisma
|
|
367
|
+
._runtimeDataModel;
|
|
368
|
+
models = Object.keys(runtimeDataModel.models).map(function (m) { return runtimeDataModel.models[m].dbName || m; });
|
|
369
|
+
if (customAbilities) {
|
|
370
|
+
diff = (0, difference_1.default)(Object.keys(customAbilities), models);
|
|
371
|
+
if (diff.length) {
|
|
372
|
+
throw new Error("Invalid models in custom abilities: ".concat(diff.join(", ")));
|
|
355
373
|
}
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
374
|
+
}
|
|
375
|
+
try {
|
|
376
|
+
for (models_1 = __values(models), models_1_1 = models_1.next(); !models_1_1.done; models_1_1 = models_1.next()) {
|
|
377
|
+
model = models_1_1.value;
|
|
378
|
+
abilities[model] = {
|
|
379
|
+
create: {
|
|
380
|
+
description: "Create ".concat(model),
|
|
381
|
+
expression: "true",
|
|
382
|
+
operation: "INSERT",
|
|
383
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
384
|
+
model: model,
|
|
385
|
+
slug: "create",
|
|
386
|
+
},
|
|
387
|
+
read: {
|
|
388
|
+
description: "Read ".concat(model),
|
|
389
|
+
expression: "true",
|
|
390
|
+
operation: "SELECT",
|
|
391
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
392
|
+
model: model,
|
|
393
|
+
slug: "read",
|
|
394
|
+
},
|
|
395
|
+
update: {
|
|
396
|
+
description: "Update ".concat(model),
|
|
397
|
+
expression: "true",
|
|
398
|
+
operation: "UPDATE",
|
|
399
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
400
|
+
model: model,
|
|
401
|
+
slug: "update",
|
|
402
|
+
},
|
|
403
|
+
delete: {
|
|
404
|
+
description: "Delete ".concat(model),
|
|
405
|
+
expression: "true",
|
|
406
|
+
operation: "DELETE",
|
|
407
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
408
|
+
model: model,
|
|
409
|
+
slug: "delete",
|
|
410
|
+
},
|
|
411
|
+
};
|
|
412
|
+
if (customAbilities === null || customAbilities === void 0 ? void 0 : customAbilities[model]) {
|
|
413
|
+
for (ability in customAbilities[model]) {
|
|
414
|
+
operation =
|
|
415
|
+
// biome-ignore lint/style/noNonNullAssertion: TODO fix this
|
|
416
|
+
(_q = customAbilities[model][ability]) === null || _q === void 0 ? void 0 : _q.operation;
|
|
417
|
+
if (!operation)
|
|
418
|
+
continue;
|
|
419
|
+
// biome-ignore lint/style/noNonNullAssertion: TODO fix this
|
|
420
|
+
abilities[model][ability] = __assign(__assign({}, customAbilities[model][ability]), { operation: operation,
|
|
421
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
422
|
+
model: model, slug: ability });
|
|
396
423
|
}
|
|
397
424
|
}
|
|
398
425
|
}
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
finally { if (e_5) throw e_5.error; }
|
|
405
|
-
}
|
|
406
|
-
roles = getRoles(abilities);
|
|
407
|
-
_b = abilities;
|
|
408
|
-
_c = [];
|
|
409
|
-
for (_d in _b)
|
|
410
|
-
_c.push(_d);
|
|
411
|
-
_i = 0;
|
|
412
|
-
_q.label = 1;
|
|
413
|
-
case 1:
|
|
414
|
-
if (!(_i < _c.length)) return [3 /*break*/, 8];
|
|
415
|
-
_d = _c[_i];
|
|
416
|
-
if (!(_d in _b)) return [3 /*break*/, 7];
|
|
417
|
-
model = _d;
|
|
418
|
-
table = model;
|
|
419
|
-
return [4 /*yield*/, prisma.$transaction([
|
|
420
|
-
takeLock(prisma),
|
|
421
|
-
prisma.$queryRawUnsafe("ALTER table \"".concat(table, "\" enable row level security;")),
|
|
422
|
-
])];
|
|
423
|
-
case 2:
|
|
424
|
-
_q.sent();
|
|
425
|
-
_e = abilities[model];
|
|
426
|
-
_f = [];
|
|
427
|
-
for (_g in _e)
|
|
428
|
-
_f.push(_g);
|
|
429
|
-
_h = 0;
|
|
430
|
-
_q.label = 3;
|
|
431
|
-
case 3:
|
|
432
|
-
if (!(_h < _f.length)) return [3 /*break*/, 7];
|
|
433
|
-
_g = _f[_h];
|
|
434
|
-
if (!(_g in _e)) return [3 /*break*/, 6];
|
|
435
|
-
slug = _g;
|
|
436
|
-
ability = abilities[model][slug];
|
|
437
|
-
if (!VALID_OPERATIONS.includes(ability.operation)) {
|
|
438
|
-
throw new Error("Invalid operation: ".concat(ability.operation));
|
|
426
|
+
}
|
|
427
|
+
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
428
|
+
finally {
|
|
429
|
+
try {
|
|
430
|
+
if (models_1_1 && !models_1_1.done && (_p = models_1.return)) _p.call(models_1);
|
|
439
431
|
}
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
432
|
+
finally { if (e_5) throw e_5.error; }
|
|
433
|
+
}
|
|
434
|
+
roles = getRoles(abilities);
|
|
435
|
+
return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\tselect * from pg_catalog.pg_roles\n\t\t")];
|
|
436
|
+
case 1:
|
|
437
|
+
pgRoles = _r.sent();
|
|
438
|
+
return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\tselect * from pg_catalog.pg_policies;\n\t")];
|
|
439
|
+
case 2:
|
|
440
|
+
pgPolicies = _r.sent();
|
|
441
|
+
_c = abilities;
|
|
442
|
+
_d = [];
|
|
443
|
+
for (_e in _c)
|
|
444
|
+
_d.push(_e);
|
|
445
|
+
_i = 0;
|
|
446
|
+
_r.label = 3;
|
|
447
|
+
case 3:
|
|
448
|
+
if (!(_i < _d.length)) return [3 /*break*/, 9];
|
|
449
|
+
_e = _d[_i];
|
|
450
|
+
if (!(_e in _c)) return [3 /*break*/, 8];
|
|
451
|
+
model = _e;
|
|
452
|
+
table = model;
|
|
453
|
+
return [4 /*yield*/, prisma.$transaction([
|
|
454
|
+
takeLock(prisma),
|
|
455
|
+
prisma.$queryRawUnsafe("ALTER table \"".concat(table, "\" enable row level security;")),
|
|
456
|
+
])];
|
|
457
|
+
case 4:
|
|
458
|
+
_r.sent();
|
|
459
|
+
_loop_1 = function (slug) {
|
|
460
|
+
var ability, roleName;
|
|
461
|
+
return __generator(this, function (_s) {
|
|
462
|
+
switch (_s.label) {
|
|
463
|
+
case 0:
|
|
464
|
+
ability =
|
|
465
|
+
// biome-ignore lint/style/noNonNullAssertion: TODO fix this
|
|
466
|
+
abilities[model][slug];
|
|
467
|
+
if (!VALID_OPERATIONS.includes(ability.operation)) {
|
|
468
|
+
throw new Error("Invalid operation: ".concat(ability.operation));
|
|
469
|
+
}
|
|
470
|
+
roleName = (0, exports.createAbilityName)(model, slug);
|
|
471
|
+
if (!pgRoles.find(function (role) { return role.rolname === roleName; })) return [3 /*break*/, 1];
|
|
472
|
+
debug("Role already exists", roleName);
|
|
473
|
+
return [3 /*break*/, 3];
|
|
474
|
+
case 1: return [4 /*yield*/, prisma.$transaction([
|
|
475
|
+
takeLock(prisma),
|
|
476
|
+
prisma.$queryRawUnsafe("\n\t\t\t\t\tdo\n\t\t\t\t\t$$\n\t\t\t\t\tbegin\n\t\t\t\t\tif not exists (select * from pg_catalog.pg_roles where rolname = '".concat(roleName, "') then \n\t\t\t\t\t\tcreate role ").concat(roleName, ";\n\t\t\t\t\tend if;\n\t\t\t\t\tend\n\t\t\t\t\t$$\n\t\t\t\t\t;\n\t\t\t\t")),
|
|
477
|
+
prisma.$queryRawUnsafe("\n\t\t\t\t\tGRANT ".concat(ability.operation, " ON \"").concat(table, "\" TO ").concat(roleName, ";\n\t\t\t\t")),
|
|
478
|
+
])];
|
|
479
|
+
case 2:
|
|
480
|
+
_s.sent();
|
|
481
|
+
_s.label = 3;
|
|
482
|
+
case 3:
|
|
483
|
+
if (!ability.expression) return [3 /*break*/, 5];
|
|
484
|
+
return [4 /*yield*/, setRLS(prisma, pgPolicies, table, roleName, ability.operation,
|
|
485
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
486
|
+
ability.expression)];
|
|
487
|
+
case 4:
|
|
488
|
+
_s.sent();
|
|
489
|
+
_s.label = 5;
|
|
490
|
+
case 5: return [2 /*return*/];
|
|
491
|
+
}
|
|
492
|
+
});
|
|
493
|
+
};
|
|
494
|
+
_f = abilities[model];
|
|
495
|
+
_g = [];
|
|
496
|
+
for (_h in _f)
|
|
497
|
+
_g.push(_h);
|
|
498
|
+
_j = 0;
|
|
499
|
+
_r.label = 5;
|
|
500
|
+
case 5:
|
|
501
|
+
if (!(_j < _g.length)) return [3 /*break*/, 8];
|
|
502
|
+
_h = _g[_j];
|
|
503
|
+
if (!(_h in _f)) return [3 /*break*/, 7];
|
|
504
|
+
slug = _h;
|
|
505
|
+
return [5 /*yield**/, _loop_1(slug)];
|
|
506
|
+
case 6:
|
|
507
|
+
_r.sent();
|
|
508
|
+
_r.label = 7;
|
|
509
|
+
case 7:
|
|
510
|
+
_j++;
|
|
511
|
+
return [3 /*break*/, 5];
|
|
512
|
+
case 8:
|
|
513
|
+
_i++;
|
|
514
|
+
return [3 /*break*/, 3];
|
|
515
|
+
case 9:
|
|
516
|
+
_loop_2 = function (key) {
|
|
517
|
+
var role, wildCardAbilities, roleAbilities, rlsRoles, userRoles, oldRoles;
|
|
518
|
+
return __generator(this, function (_t) {
|
|
519
|
+
switch (_t.label) {
|
|
520
|
+
case 0:
|
|
521
|
+
role = (0, exports.createRoleName)(key);
|
|
522
|
+
return [4 /*yield*/, prisma.$executeRawUnsafe("\n\t\t\tdo\n\t\t\t$$\n\t\t\tbegin\n\t\t\tif not exists (select * from pg_catalog.pg_roles where rolname = '".concat(role, "') then \n\t\t\t\tcreate role ").concat(role, ";\n\t\t\tend if;\n\t\t\tend\n\t\t\t$$\n\t\t\t;\n\t\t"))];
|
|
523
|
+
case 1:
|
|
524
|
+
_t.sent();
|
|
525
|
+
wildCardAbilities = (0, flatMap_1.default)(abilities, function (model, modelName) {
|
|
526
|
+
return (0, map_1.default)(model, function (_params, slug) {
|
|
527
|
+
return (0, exports.createAbilityName)(modelName, slug);
|
|
475
528
|
});
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
takeLock(prisma),
|
|
484
|
-
prisma.$executeRawUnsafe("GRANT ALL ON ALL TABLES IN SCHEMA public TO ".concat(role, ";")),
|
|
485
|
-
prisma.$executeRawUnsafe("\n\t\t\t\tGRANT ALL ON ALL SEQUENCES IN SCHEMA public TO ".concat(role, ";\n\t\t\t")),
|
|
486
|
-
prisma.$executeRawUnsafe("\n\t\t\t\tGRANT ALL ON SCHEMA public TO ".concat(role, ";\n\t\t\t")),
|
|
487
|
-
prisma.$queryRawUnsafe("GRANT ".concat(rlsRoles.join(", "), " TO ").concat(role)),
|
|
488
|
-
])];
|
|
489
|
-
case 2:
|
|
490
|
-
// Note: We need to GRANT all on schema public so that we can resolve relation queries with prisma, as they will sometimes use a join table.
|
|
491
|
-
// This is not ideal, but because we are using RLS, it's not a security risk. Any table with RLS also needs a corresponding policy for the role to have access.
|
|
492
|
-
_r.sent();
|
|
493
|
-
return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\tWITH RECURSIVE cte AS (\n\t\t\t\tSELECT oid FROM pg_roles where rolname = '".concat(role, "'\n\t\t\t\tUNION ALL\n\t\t\t\tSELECT m.roleid\n\t\t\t\tFROM cte\n\t\t\t\tJOIN pg_auth_members m ON m.member = cte.oid\n\t\t\t\t)\n\t\t\tSELECT oid, oid::regrole::text AS rolename FROM cte where oid::regrole::text != '").concat(role, "'; \n\t "))];
|
|
494
|
-
case 3:
|
|
495
|
-
userRoles = _r.sent();
|
|
496
|
-
oldRoles = userRoles.filter(function (_a) {
|
|
497
|
-
var rolename = _a.rolename;
|
|
498
|
-
return !rlsRoles.includes(rolename);
|
|
499
|
-
}).map(function (_a) {
|
|
500
|
-
var rolename = _a.rolename;
|
|
501
|
-
return rolename;
|
|
529
|
+
});
|
|
530
|
+
roleAbilities = roles[key];
|
|
531
|
+
rlsRoles = roleAbilities === "*"
|
|
532
|
+
? wildCardAbilities
|
|
533
|
+
: roleAbilities.map(function (ability) {
|
|
534
|
+
// biome-ignore lint/style/noNonNullAssertion: TODO fix this
|
|
535
|
+
return (0, exports.createAbilityName)(ability.model, ability.slug);
|
|
502
536
|
});
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
537
|
+
// Note: We need to GRANT all on schema public so that we can resolve relation queries with prisma, as they will sometimes use a join table.
|
|
538
|
+
// This is not ideal, but because we are using RLS, it's not a security risk. Any table with RLS also needs a corresponding policy for the role to have access.
|
|
539
|
+
return [4 /*yield*/, prisma.$transaction([
|
|
540
|
+
takeLock(prisma),
|
|
541
|
+
prisma.$executeRawUnsafe("GRANT ALL ON ALL TABLES IN SCHEMA public TO ".concat(role, ";")),
|
|
542
|
+
prisma.$executeRawUnsafe("\n\t\t\t\tGRANT ALL ON ALL SEQUENCES IN SCHEMA public TO ".concat(role, ";\n\t\t\t")),
|
|
543
|
+
prisma.$executeRawUnsafe("\n\t\t\t\tGRANT ALL ON SCHEMA public TO ".concat(role, ";\n\t\t\t")),
|
|
544
|
+
prisma.$queryRawUnsafe("GRANT ".concat(rlsRoles.join(", "), " TO ").concat(role)),
|
|
545
|
+
])];
|
|
546
|
+
case 2:
|
|
547
|
+
// Note: We need to GRANT all on schema public so that we can resolve relation queries with prisma, as they will sometimes use a join table.
|
|
548
|
+
// This is not ideal, but because we are using RLS, it's not a security risk. Any table with RLS also needs a corresponding policy for the role to have access.
|
|
549
|
+
_t.sent();
|
|
550
|
+
return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\tWITH RECURSIVE cte AS (\n\t\t\t\tSELECT oid FROM pg_roles where rolname = '".concat(role, "'\n\t\t\t\tUNION ALL\n\t\t\t\tSELECT m.roleid\n\t\t\t\tFROM cte\n\t\t\t\tJOIN pg_auth_members m ON m.member = cte.oid\n\t\t\t\t)\n\t\t\tSELECT oid, oid::regrole::text AS rolename FROM cte where oid::regrole::text != '").concat(role, "'; \n\t "))];
|
|
551
|
+
case 3:
|
|
552
|
+
userRoles = _t.sent();
|
|
553
|
+
oldRoles = userRoles
|
|
554
|
+
.filter(function (_a) {
|
|
555
|
+
var rolename = _a.rolename;
|
|
556
|
+
return !rlsRoles.includes(rolename);
|
|
557
|
+
})
|
|
558
|
+
.map(function (_a) {
|
|
559
|
+
var rolename = _a.rolename;
|
|
560
|
+
return rolename;
|
|
561
|
+
});
|
|
562
|
+
if (!oldRoles.length) return [3 /*break*/, 5];
|
|
563
|
+
// Now revoke old roles from the user role
|
|
564
|
+
return [4 /*yield*/, prisma.$executeRawUnsafe("REVOKE ".concat(oldRoles.join(", "), " FROM ").concat(role))];
|
|
565
|
+
case 4:
|
|
566
|
+
// Now revoke old roles from the user role
|
|
567
|
+
_t.sent();
|
|
568
|
+
_t.label = 5;
|
|
569
|
+
case 5: return [2 /*return*/];
|
|
570
|
+
}
|
|
571
|
+
});
|
|
572
|
+
};
|
|
573
|
+
_k = roles;
|
|
574
|
+
_l = [];
|
|
575
|
+
for (_m in _k)
|
|
576
|
+
_l.push(_m);
|
|
577
|
+
_o = 0;
|
|
578
|
+
_r.label = 10;
|
|
579
|
+
case 10:
|
|
580
|
+
if (!(_o < _l.length)) return [3 /*break*/, 13];
|
|
581
|
+
_m = _l[_o];
|
|
582
|
+
if (!(_m in _k)) return [3 /*break*/, 12];
|
|
583
|
+
key = _m;
|
|
584
|
+
return [5 /*yield**/, _loop_2(key)];
|
|
585
|
+
case 11:
|
|
586
|
+
_r.sent();
|
|
587
|
+
_r.label = 12;
|
|
588
|
+
case 12:
|
|
589
|
+
_o++;
|
|
590
|
+
return [3 /*break*/, 10];
|
|
591
|
+
case 13: return [2 /*return*/];
|
|
592
|
+
}
|
|
535
593
|
});
|
|
536
|
-
};
|
|
594
|
+
}); };
|
|
537
595
|
exports.createRoles = createRoles;
|
|
538
596
|
/**
|
|
539
597
|
* Creates an extended client that sets contextual parameters and user role on every query
|
|
540
598
|
**/
|
|
541
599
|
var setup = function (params) { return __awaiter(void 0, void 0, void 0, function () {
|
|
542
|
-
var prisma, customAbilities, getRoles, getContext, client;
|
|
600
|
+
var start, prisma, customAbilities, getRoles, getContext, client;
|
|
543
601
|
return __generator(this, function (_a) {
|
|
544
602
|
switch (_a.label) {
|
|
545
603
|
case 0:
|
|
604
|
+
start = performance.now();
|
|
546
605
|
prisma = params.prisma, customAbilities = params.customAbilities, getRoles = params.getRoles, getContext = params.getContext;
|
|
547
|
-
return [4 /*yield*/, (0, exports.createRoles)({
|
|
606
|
+
return [4 /*yield*/, (0, exports.createRoles)({
|
|
607
|
+
prisma: prisma,
|
|
608
|
+
customAbilities: customAbilities,
|
|
609
|
+
getRoles: getRoles,
|
|
610
|
+
})];
|
|
548
611
|
case 1:
|
|
549
612
|
_a.sent();
|
|
550
613
|
client = (0, exports.createClient)(prisma, getContext, params.options);
|
|
614
|
+
debug("Setup completed in", performance.now() - start, "ms");
|
|
551
615
|
return [2 /*return*/, client];
|
|
552
616
|
}
|
|
553
617
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cerebruminc/yates",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.4.0",
|
|
4
4
|
"description": "Role based access control for Prisma Apps",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"files": [
|
|
@@ -11,8 +11,9 @@
|
|
|
11
11
|
"scripts": {
|
|
12
12
|
"generate": "prisma generate",
|
|
13
13
|
"build": "rimraf dist && tsc -p tsconfig.build.json",
|
|
14
|
-
"test": "
|
|
15
|
-
"lint
|
|
14
|
+
"test": "npm run lint",
|
|
15
|
+
"lint": "biome check .",
|
|
16
|
+
"lint:fix": "biome check . --apply",
|
|
16
17
|
"test:types": "tsc --noEmit",
|
|
17
18
|
"test:integration": "jest --runInBand test/integration",
|
|
18
19
|
"test:compose:integration": "docker compose -f docker-compose.yml --profile with-sut up db sut --exit-code-from sut",
|
|
@@ -22,22 +23,23 @@
|
|
|
22
23
|
"author": "Cerebrum <hello@cerebrum.com> (https://cerebrum.com)",
|
|
23
24
|
"license": "MIT",
|
|
24
25
|
"devDependencies": {
|
|
26
|
+
"@biomejs/biome": "1.5.3",
|
|
25
27
|
"@prisma/client": "^5.0.0",
|
|
26
28
|
"@types/cls-hooked": "^4.3.3",
|
|
27
29
|
"@types/jest": "^29.2.6",
|
|
28
30
|
"@types/lodash": "^4.14.191",
|
|
29
31
|
"@types/uuid": "^9.0.0",
|
|
30
32
|
"cls-hooked": "^4.2.2",
|
|
31
|
-
"eslint": "^8.57.0",
|
|
32
33
|
"jest": "^29.3.1",
|
|
33
34
|
"prisma": "^5.0.0",
|
|
34
35
|
"rimraf": "^5.0.5",
|
|
35
36
|
"ts-jest": "^29.0.5",
|
|
36
37
|
"typescript": "^5.3.3",
|
|
37
|
-
"typescript-eslint": "^7.0.2",
|
|
38
38
|
"uuid": "^9.0.0"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
+
"@types/debug": "^4.1.12",
|
|
42
|
+
"debug": "^4.3.4",
|
|
41
43
|
"lodash": "^4.17.21",
|
|
42
44
|
"node-sql-parser": "^4.12.0",
|
|
43
45
|
"type-fest": "^4.10.3"
|
|
@@ -46,4 +48,4 @@
|
|
|
46
48
|
"@prisma/client": "^5.0.0",
|
|
47
49
|
"prisma": "^5.0.0"
|
|
48
50
|
}
|
|
49
|
-
}
|
|
51
|
+
}
|