@cerebruminc/yates 3.8.1 → 4.0.0-beta.dangerous.17be6b9

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 CHANGED
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## [4.0.0](https://github.com/cerebruminc/yates/compare/v3.8.1...v4.0.0) (2026-02-25)
4
+
5
+
6
+ ### ⚠ BREAKING CHANGES
7
+
8
+ * refactor permissions to query filters
9
+
10
+ ### Features
11
+
12
+ * refactor permissions to query filters ([06d1007](https://github.com/cerebruminc/yates/commit/06d10079c460e15a787516d9301daf28ce776c20))
13
+
3
14
  ## [3.8.1](https://github.com/cerebruminc/yates/compare/v3.8.0...v3.8.1) (2025-11-15)
4
15
 
5
16
 
package/dist/index.d.ts CHANGED
@@ -3,6 +3,23 @@ import { Expression, RuntimeDataModel } from "./expressions";
3
3
  declare const VALID_OPERATIONS: readonly ["SELECT", "UPDATE", "INSERT", "DELETE"];
4
4
  type Operation = (typeof VALID_OPERATIONS)[number];
5
5
  export type Models = Prisma.ModelName;
6
+ type PrismaExecutor = Pick<PrismaClient, "$executeRawUnsafe" | "$queryRawUnsafe" | "$queryRaw">;
7
+ export interface SetupManifestAbility {
8
+ expression: string | null;
9
+ model: string;
10
+ operation: Operation;
11
+ policyName: string;
12
+ slug: string;
13
+ }
14
+ export interface SetupManifestRole {
15
+ grants: string[] | "*";
16
+ roleName: string;
17
+ }
18
+ export interface SetupManifest {
19
+ abilities: SetupManifestAbility[];
20
+ databaseScope: string;
21
+ roles: SetupManifestRole[];
22
+ }
6
23
  interface ClientOptions {
7
24
  /** The maximum amount of time Yates will wait to acquire a transaction from the database. The default value is 30 seconds. */
8
25
  txMaxWait?: number;
@@ -76,9 +93,25 @@ export declare class Yates {
76
93
  createDatabaseScope: (databaseName: string) => string;
77
94
  getDatabaseScope: () => string;
78
95
  ensureDatabaseScope: () => Promise<string>;
79
- setupAbilityTable: () => Promise<[number, number, number]>;
96
+ setupAbilityTable: () => Promise<[number, number, number, number]>;
80
97
  createAbilityName: (model: string, ability: string) => string;
81
98
  createRoleName: (name: string) => string;
99
+ quoteIdentifier: (identifier: string) => string;
100
+ enableRowLevelSecurityIfNeeded: (prisma: Pick<PrismaClient, "$executeRawUnsafe" | "$queryRawUnsafe">, table: string) => Promise<void>;
101
+ createSetupManifestHash: (manifest: SetupManifest) => string;
102
+ createSetupManifest: (abilities: Partial<DefaultAbilities>, roles: {
103
+ [role: string]: "*" | AllAbilities<string, Prisma.ModelName>[];
104
+ }) => {
105
+ abilities: SetupManifestAbility[];
106
+ databaseScope: string;
107
+ roles: {
108
+ grants: string[] | "*";
109
+ roleName: string;
110
+ }[];
111
+ };
112
+ getSetupManifestId: () => string;
113
+ getStoredSetupManifestHash: (manifestId: string, prisma?: PrismaExecutor) => Promise<string>;
114
+ upsertSetupManifestHash: (manifestId: string, manifestHash: string, prisma?: PrismaExecutor) => Prisma.PrismaPromise<number>;
82
115
  getDefaultAbilities: (models: Models[]) => Partial<DefaultAbilities<string, Prisma.ModelName>>;
83
116
  getBatchId(query: any): string | undefined;
84
117
  buildKeysString(obj: object): string;
@@ -93,13 +126,21 @@ export declare class Yates {
93
126
  query: {};
94
127
  client: {};
95
128
  }>;
96
- setRLS: <ContextKeys extends string, YModel extends Prisma.ModelName>(prisma: PrismaClient, table: string, roleName: string, slug: string, ability: Ability<ContextKeys, YModel>) => Promise<void>;
129
+ setRLS: <ContextKeys extends string, YModel extends Prisma.ModelName>(prisma: PrismaExecutor, table: string, roleName: string, slug: string, ability: Ability<ContextKeys, YModel>) => Promise<void>;
97
130
  createRoles: <ContextKeys extends string, YModels extends Prisma.ModelName, K extends CustomAbilities<string, Prisma.ModelName> = CustomAbilities<string, Prisma.ModelName>, T = DefaultAbilities<ContextKeys, YModels> & K>({ customAbilities, getRoles, }: {
98
131
  customAbilities?: Partial<K> | undefined;
99
132
  getRoles: (abilities: T) => {
100
133
  [role: string]: "*" | AllAbilities<ContextKeys, YModels>[];
101
134
  };
102
135
  }) => Promise<void>;
136
+ reconcileRoles: <ContextKeys extends string, YModels extends Prisma.ModelName>({ abilities, defaultAbilities, prisma, roles, }: {
137
+ abilities: Partial<DefaultAbilities>;
138
+ defaultAbilities: Partial<DefaultAbilities>;
139
+ prisma: PrismaExecutor;
140
+ roles: {
141
+ [role: string]: "*" | AllAbilities<ContextKeys, YModels>[];
142
+ };
143
+ }) => Promise<void>;
103
144
  inspectDBRoles: (role: string) => Promise<{
104
145
  tablename: string;
105
146
  policyname: string;
package/dist/index.js CHANGED
@@ -73,17 +73,6 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
73
73
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
74
74
  }
75
75
  };
76
- var __values = (this && this.__values) || function(o) {
77
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
78
- if (m) return m.call(o);
79
- if (o && typeof o.length === "number") return {
80
- next: function () {
81
- if (o && i >= o.length) o = void 0;
82
- return { value: o && o[i++], done: !o };
83
- }
84
- };
85
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
86
- };
87
76
  var __read = (this && this.__read) || function (o, n) {
88
77
  var m = typeof Symbol === "function" && o[Symbol.iterator];
89
78
  if (!m) return o;
@@ -109,6 +98,17 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
109
98
  }
110
99
  return to.concat(ar || Array.prototype.slice.call(from));
111
100
  };
101
+ var __values = (this && this.__values) || function(o) {
102
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
103
+ if (m) return m.call(o);
104
+ if (o && typeof o.length === "number") return {
105
+ next: function () {
106
+ if (o && i >= o.length) o = void 0;
107
+ return { value: o && o[i++], done: !o };
108
+ }
109
+ };
110
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
111
+ };
112
112
  var __importDefault = (this && this.__importDefault) || function (mod) {
113
113
  return (mod && mod.__esModule) ? mod : { "default": mod };
114
114
  };
@@ -123,6 +123,7 @@ var map_1 = __importDefault(require("lodash/map"));
123
123
  var toPairs_1 = __importDefault(require("lodash/toPairs"));
124
124
  var expressions_1 = require("./expressions");
125
125
  var VALID_OPERATIONS = ["SELECT", "UPDATE", "INSERT", "DELETE"];
126
+ var SETUP_MANIFEST_VERSION = "1";
126
127
  var debug = (0, debug_1.default)("yates");
127
128
  /**
128
129
  * This function is used to take a lock that is automatically released at the end of the current transaction.
@@ -228,6 +229,7 @@ var Yates = /** @class */ (function () {
228
229
  takeLock(_this.prisma),
229
230
  _this.prisma.$executeRawUnsafe("\n\t\t\t\tCREATE SCHEMA IF NOT EXISTS _yates;\n\t\t\t"),
230
231
  _this.prisma.$executeRawUnsafe("\n\t\t\t\tCREATE TABLE IF NOT EXISTS _yates._yates_abilities (\n\t\t\t\t\tid SERIAL PRIMARY KEY,\n\t\t\t\t\tability_model TEXT NOT NULL,\n\t\t\t\t\tability_name TEXT NOT NULL,\n\t\t\t\t\tability_policy_name TEXT NOT NULL UNIQUE,\n\t\t\t\t\tability_description TEXT NOT NULL,\n\t\t\t\t\tability_operation TEXT NOT NULL,\n\t\t\t\t\tability_expression TEXT NOT NULL,\n\t\t\t\t\tcreated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n\t\t\t\t\tupdated_at TIMESTAMP\n\t\t\t\t);\n\t\t\t"),
232
+ _this.prisma.$executeRawUnsafe("\n\t\t\t\tCREATE TABLE IF NOT EXISTS _yates._yates_schema_syncs (\n\t\t\t\t\tid TEXT PRIMARY KEY,\n\t\t\t\t\tmanifest_hash TEXT NOT NULL,\n\t\t\t\t\tyates_version TEXT,\n\t\t\t\t\tapp_name TEXT,\n\t\t\t\t\tapplied_at TIMESTAMPTZ NOT NULL DEFAULT now()\n\t\t\t\t);\n\t\t\t"),
231
233
  ]);
232
234
  };
233
235
  this.createAbilityName = function (model, ability) {
@@ -238,8 +240,132 @@ var Yates = /** @class */ (function () {
238
240
  var scope = _this.getDatabaseScope();
239
241
  return (0, exports.sanitizeSlug)(hashWithPrefix("yates_role_", "".concat(scope, "_").concat(name)));
240
242
  };
243
+ this.quoteIdentifier = function (identifier) {
244
+ return "\"".concat(identifier.replace(/"/g, '""'), "\"");
245
+ };
246
+ this.enableRowLevelSecurityIfNeeded = function (prisma, table) { return __awaiter(_this, void 0, void 0, function () {
247
+ var rlsState;
248
+ var _a;
249
+ return __generator(this, function (_b) {
250
+ switch (_b.label) {
251
+ case 0: return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\t\tSELECT c.relrowsecurity\n\t\t\t\tFROM pg_catalog.pg_class c\n\t\t\t\tJOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace\n\t\t\t\tWHERE n.nspname = 'public'\n\t\t\t\tAND c.relname = $1\n\t\t\t\tAND c.relkind IN ('r', 'p')\n\t\t\t\tLIMIT 1;\n\t\t\t", table)];
252
+ case 1:
253
+ rlsState = _b.sent();
254
+ if ((_a = rlsState[0]) === null || _a === void 0 ? void 0 : _a.relrowsecurity) {
255
+ debug("Row level security already enabled for", table);
256
+ return [2 /*return*/];
257
+ }
258
+ debug("Enabling row level security for", table);
259
+ return [4 /*yield*/, prisma.$executeRawUnsafe("ALTER table ".concat(this.quoteIdentifier(table), " enable row level security;"))];
260
+ case 2:
261
+ _b.sent();
262
+ return [2 /*return*/];
263
+ }
264
+ });
265
+ }); };
266
+ this.createSetupManifestHash = function (manifest) {
267
+ var normalizedManifest = {
268
+ abilities: __spreadArray([], __read(manifest.abilities), false).sort(function (a, b) {
269
+ return "".concat(a.model, ":").concat(a.slug, ":").concat(a.operation, ":").concat(a.policyName).localeCompare("".concat(b.model, ":").concat(b.slug, ":").concat(b.operation, ":").concat(b.policyName));
270
+ }),
271
+ databaseScope: manifest.databaseScope,
272
+ roles: __spreadArray([], __read(manifest.roles), false).map(function (role) { return (__assign(__assign({}, role), { grants: Array.isArray(role.grants)
273
+ ? __spreadArray([], __read(role.grants), false).sort()
274
+ : role.grants })); })
275
+ .sort(function (a, b) { return a.roleName.localeCompare(b.roleName); }),
276
+ version: SETUP_MANIFEST_VERSION,
277
+ };
278
+ var hash = crypto.createHash("sha256");
279
+ hash.update(JSON.stringify(normalizedManifest));
280
+ return hash.digest("hex");
281
+ };
282
+ this.createSetupManifest = function (abilities, roles) {
283
+ var e_1, _a, e_2, _b;
284
+ var _c, _d;
285
+ var manifestAbilities = [];
286
+ try {
287
+ for (var _e = __values(Object.keys(abilities).sort()), _f = _e.next(); !_f.done; _f = _e.next()) {
288
+ var model = _f.value;
289
+ var modelAbilities = abilities[model];
290
+ if (!modelAbilities)
291
+ continue;
292
+ try {
293
+ for (var _g = (e_2 = void 0, __values(Object.keys(modelAbilities).sort())), _h = _g.next(); !_h.done; _h = _g.next()) {
294
+ var slug = _h.value;
295
+ var ability = modelAbilities[slug];
296
+ if (!ability)
297
+ continue;
298
+ manifestAbilities.push({
299
+ expression: (_d = (_c = ability.expression) === null || _c === void 0 ? void 0 : _c.toString()) !== null && _d !== void 0 ? _d : null,
300
+ model: model,
301
+ operation: ability.operation,
302
+ policyName: _this.createAbilityName(model, slug),
303
+ slug: slug,
304
+ });
305
+ }
306
+ }
307
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
308
+ finally {
309
+ try {
310
+ if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
311
+ }
312
+ finally { if (e_2) throw e_2.error; }
313
+ }
314
+ }
315
+ }
316
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
317
+ finally {
318
+ try {
319
+ if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
320
+ }
321
+ finally { if (e_1) throw e_1.error; }
322
+ }
323
+ var manifestRoles = Object.keys(roles)
324
+ .sort()
325
+ .map(function (roleName) {
326
+ var roleAbilities = roles[roleName];
327
+ var grants = Array.isArray(roleAbilities)
328
+ ? roleAbilities.map(function (ability) {
329
+ if (!ability.model || !ability.slug) {
330
+ throw new Error("Ability for role ".concat(roleName, " is missing model or slug"));
331
+ }
332
+ return _this.createAbilityName(ability.model, ability.slug);
333
+ })
334
+ : "*";
335
+ return { grants: grants, roleName: roleName };
336
+ });
337
+ return {
338
+ abilities: manifestAbilities,
339
+ databaseScope: _this.getDatabaseScope(),
340
+ roles: manifestRoles,
341
+ };
342
+ };
343
+ this.getSetupManifestId = function () { return "".concat(_this.getDatabaseScope(), ":public"); };
344
+ this.getStoredSetupManifestHash = function (manifestId_1) {
345
+ var args_1 = [];
346
+ for (var _i = 1; _i < arguments.length; _i++) {
347
+ args_1[_i - 1] = arguments[_i];
348
+ }
349
+ return __awaiter(_this, __spreadArray([manifestId_1], __read(args_1), false), void 0, function (manifestId, prisma) {
350
+ var rows;
351
+ var _a, _b;
352
+ if (prisma === void 0) { prisma = this.prisma; }
353
+ return __generator(this, function (_c) {
354
+ switch (_c.label) {
355
+ case 0: return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\t\tSELECT manifest_hash\n\t\t\t\tFROM _yates._yates_schema_syncs\n\t\t\t\tWHERE id = $1\n\t\t\t\tLIMIT 1;\n\t\t\t", manifestId)];
356
+ case 1:
357
+ rows = _c.sent();
358
+ return [2 /*return*/, (_b = (_a = rows[0]) === null || _a === void 0 ? void 0 : _a.manifest_hash) !== null && _b !== void 0 ? _b : null];
359
+ }
360
+ });
361
+ });
362
+ };
363
+ this.upsertSetupManifestHash = function (manifestId, manifestHash, prisma) {
364
+ if (prisma === void 0) { prisma = _this.prisma; }
365
+ return prisma.$executeRawUnsafe("\n\t\t\t\tINSERT INTO _yates._yates_schema_syncs (id, manifest_hash, yates_version, app_name, applied_at)\n\t\t\t\tVALUES ($1, $2, $3, $4, now())\n\t\t\t\tON CONFLICT (id) DO UPDATE\n\t\t\t\tSET manifest_hash = EXCLUDED.manifest_hash,\n\t\t\t\t\tyates_version = EXCLUDED.yates_version,\n\t\t\t\t\tapp_name = EXCLUDED.app_name,\n\t\t\t\t\tapplied_at = now();\n\t\t\t", manifestId, manifestHash, SETUP_MANIFEST_VERSION, "yates");
366
+ };
241
367
  this.getDefaultAbilities = function (models) {
242
- var e_1, _a;
368
+ var e_3, _a;
243
369
  var abilities = {};
244
370
  try {
245
371
  for (var models_1 = __values(models), models_1_1 = models_1.next(); !models_1_1.done; models_1_1 = models_1.next()) {
@@ -276,12 +402,12 @@ var Yates = /** @class */ (function () {
276
402
  };
277
403
  }
278
404
  }
279
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
405
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
280
406
  finally {
281
407
  try {
282
408
  if (models_1_1 && !models_1_1.done && (_a = models_1.return)) _a.call(models_1);
283
409
  }
284
- finally { if (e_1) throw e_1.error; }
410
+ finally { if (e_3) throw e_3.error; }
285
411
  }
286
412
  return abilities;
287
413
  };
@@ -314,7 +440,7 @@ var Yates = /** @class */ (function () {
314
440
  // This function is called once per tick, and processes all the batches that have been created during that tick.
315
441
  // Each batch represents a unique role + context combination, and contains all the requests that need to be executed with that role + context.
316
442
  var dispatchBatches = function () {
317
- var e_2, _a;
443
+ var e_4, _a;
318
444
  var _loop_1 = function (key, batch) {
319
445
  delete batches[key];
320
446
  // Because batch transactions inside a prisma client query extension can run out of order if used with async middleware,
@@ -323,8 +449,8 @@ var Yates = /** @class */ (function () {
323
449
  // See https://github.com/prisma/prisma/issues/18276
324
450
  prisma
325
451
  .$transaction(function (tx) { return __awaiter(_this, void 0, void 0, function () {
326
- var _a, _b, _c, key_1, value, e_3_1, txId, results;
327
- var e_3, _d;
452
+ var _a, _b, _c, key_1, value, e_5_1, txId, results;
453
+ var e_5, _d;
328
454
  return __generator(this, function (_e) {
329
455
  switch (_e.label) {
330
456
  case 0:
@@ -350,14 +476,14 @@ var Yates = /** @class */ (function () {
350
476
  return [3 /*break*/, 3];
351
477
  case 6: return [3 /*break*/, 9];
352
478
  case 7:
353
- e_3_1 = _e.sent();
354
- e_3 = { error: e_3_1 };
479
+ e_5_1 = _e.sent();
480
+ e_5 = { error: e_5_1 };
355
481
  return [3 /*break*/, 9];
356
482
  case 8:
357
483
  try {
358
484
  if (_b && !_b.done && (_d = _a.return)) _d.call(_a);
359
485
  }
360
- finally { if (e_3) throw e_3.error; }
486
+ finally { if (e_5) throw e_5.error; }
361
487
  return [7 /*endfinally*/];
362
488
  case 9:
363
489
  txId = tx[Symbol.for("prisma.client.transaction.id")];
@@ -382,19 +508,19 @@ var Yates = /** @class */ (function () {
382
508
  });
383
509
  })
384
510
  .catch(function (e) {
385
- var e_4, _a;
511
+ var e_6, _a;
386
512
  try {
387
- for (var _b = (e_4 = void 0, __values(batch.requests)), _c = _b.next(); !_c.done; _c = _b.next()) {
513
+ for (var _b = (e_6 = void 0, __values(batch.requests)), _c = _b.next(); !_c.done; _c = _b.next()) {
388
514
  var request = _c.value;
389
515
  request.reject(e);
390
516
  }
391
517
  }
392
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
518
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
393
519
  finally {
394
520
  try {
395
521
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
396
522
  }
397
- finally { if (e_4) throw e_4.error; }
523
+ finally { if (e_6) throw e_6.error; }
398
524
  }
399
525
  delete batches[key];
400
526
  });
@@ -405,12 +531,12 @@ var Yates = /** @class */ (function () {
405
531
  _loop_1(key, batch);
406
532
  }
407
533
  }
408
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
534
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
409
535
  finally {
410
536
  try {
411
537
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
412
538
  }
413
- finally { if (e_2) throw e_2.error; }
539
+ finally { if (e_4) throw e_4.error; }
414
540
  }
415
541
  };
416
542
  var createRoleName = _this.createRoleName.bind(_this);
@@ -421,7 +547,7 @@ var Yates = /** @class */ (function () {
421
547
  $allOperations: function (params) {
422
548
  return __awaiter(this, void 0, void 0, function () {
423
549
  var model, args, query, operation, ctx, role, context, pgRole, _a, _b, k, _c, _d, v, txId, hash, __internalParams;
424
- var e_5, _e, e_6, _f;
550
+ var e_7, _e, e_8, _f;
425
551
  return __generator(this, function (_g) {
426
552
  model = params.model, args = params.args, query = params.query, operation = params.operation;
427
553
  if (!model) {
@@ -450,31 +576,31 @@ var Yates = /** @class */ (function () {
450
576
  }
451
577
  if (Array.isArray(context[k])) {
452
578
  try {
453
- for (_c = (e_6 = void 0, __values(context[k])), _d = _c.next(); !_d.done; _d = _c.next()) {
579
+ for (_c = (e_8 = void 0, __values(context[k])), _d = _c.next(); !_d.done; _d = _c.next()) {
454
580
  v = _d.value;
455
581
  if (typeof v !== "string") {
456
582
  throw new Error("Context variable \"".concat(k, "\" must be an array of strings. Got ").concat(typeof v));
457
583
  }
458
584
  }
459
585
  }
460
- catch (e_6_1) { e_6 = { error: e_6_1 }; }
586
+ catch (e_8_1) { e_8 = { error: e_8_1 }; }
461
587
  finally {
462
588
  try {
463
589
  if (_d && !_d.done && (_f = _c.return)) _f.call(_c);
464
590
  }
465
- finally { if (e_6) throw e_6.error; }
591
+ finally { if (e_8) throw e_8.error; }
466
592
  }
467
593
  // Cast to a JSON string so that it can be used in RLS expressions
468
594
  context[k] = JSON.stringify(context[k]);
469
595
  }
470
596
  }
471
597
  }
472
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
598
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
473
599
  finally {
474
600
  try {
475
601
  if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
476
602
  }
477
- finally { if (e_5) throw e_5.error; }
603
+ finally { if (e_7) throw e_7.error; }
478
604
  }
479
605
  }
480
606
  txId = hashWithPrefix("yates_tx_", JSON.stringify(ctx));
@@ -522,8 +648,7 @@ var Yates = /** @class */ (function () {
522
648
  return client;
523
649
  };
524
650
  this.setRLS = function (prisma, table, roleName, slug, ability) { return __awaiter(_this, void 0, void 0, function () {
525
- var operation, rawExpression, description;
526
- var _this = this;
651
+ var operation, rawExpression, description, policyName, existingAbilities, existingAbility, shouldUpdateAbilityTable, expression, expression;
527
652
  return __generator(this, function (_a) {
528
653
  switch (_a.label) {
529
654
  case 0:
@@ -531,94 +656,77 @@ var Yates = /** @class */ (function () {
531
656
  if (!rawExpression) {
532
657
  throw new Error("Expression must be defined for RLS abilities");
533
658
  }
534
- // Take a lock and run the RLS setup in a transaction to prevent conflicts
535
- // in a multi-server environment
536
- return [4 /*yield*/, prisma.$transaction(function (tx) { return __awaiter(_this, void 0, void 0, function () {
537
- var policyName, existingAbilities, existingAbility, shouldUpdateAbilityTable, expression, expression;
538
- return __generator(this, function (_a) {
539
- switch (_a.label) {
540
- case 0: return [4 /*yield*/, takeLock(tx)];
541
- case 1:
542
- _a.sent();
543
- policyName = roleName;
544
- return [4 /*yield*/, tx.$queryRaw(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n\t\t\t\tselect * from _yates._yates_abilities where ability_model = ", " and ability_policy_name = ", "\n\t\t\t"], ["\n\t\t\t\tselect * from _yates._yates_abilities where ability_model = ", " and ability_policy_name = ", "\n\t\t\t"])), table, policyName)];
545
- case 2:
546
- existingAbilities = _a.sent();
547
- existingAbility = existingAbilities[0];
548
- shouldUpdateAbilityTable = false;
549
- if (!!existingAbility) return [3 /*break*/, 8];
550
- debug("Creating RLS policy for", roleName, "on", table, "for", operation);
551
- return [4 /*yield*/, (0, expressions_1.expressionToSQL)(rawExpression, table)];
552
- case 3:
553
- expression = _a.sent();
554
- if (!(operation === "INSERT")) return [3 /*break*/, 5];
555
- return [4 /*yield*/, tx.$queryRawUnsafe("\n\t\t\t\t\tCREATE POLICY ".concat(policyName, " ON \"public\".\"").concat(table, "\" FOR ").concat(operation, " TO ").concat(roleName, " WITH CHECK (").concat(expression, ");\n\t\t\t\t"))];
556
- case 4:
557
- _a.sent();
558
- return [3 /*break*/, 7];
559
- case 5: return [4 /*yield*/, tx.$queryRawUnsafe("\n\t\t\t\t\tCREATE POLICY ".concat(policyName, " ON \"public\".\"").concat(table, "\" FOR ").concat(operation, " TO ").concat(roleName, " USING (").concat(expression, ");\n\t\t\t\t"))];
560
- case 6:
561
- _a.sent();
562
- _a.label = 7;
563
- case 7:
564
- shouldUpdateAbilityTable = true;
565
- return [3 /*break*/, 14];
566
- case 8:
567
- if (!(existingAbility.ability_expression !== rawExpression.toString())) return [3 /*break*/, 14];
568
- debug("Updating RLS policy for", roleName, "on", table, "for", operation);
569
- return [4 /*yield*/, (0, expressions_1.expressionToSQL)(rawExpression, table)];
570
- case 9:
571
- expression = _a.sent();
572
- if (!(operation === "INSERT")) return [3 /*break*/, 11];
573
- return [4 /*yield*/, tx.$queryRawUnsafe("\n\t\t\t\t\tALTER POLICY ".concat(policyName, " ON \"public\".\"").concat(table, "\" TO ").concat(roleName, " WITH CHECK (").concat(expression, ");\n\t\t\t\t"))];
574
- case 10:
575
- _a.sent();
576
- return [3 /*break*/, 13];
577
- case 11: return [4 /*yield*/, tx.$queryRawUnsafe("\n\t\t\t\t\tALTER POLICY ".concat(policyName, " ON \"public\".\"").concat(table, "\" TO ").concat(roleName, " USING (").concat(expression, ");\n\t\t\t\t"))];
578
- case 12:
579
- _a.sent();
580
- _a.label = 13;
581
- case 13:
582
- shouldUpdateAbilityTable = true;
583
- _a.label = 14;
584
- case 14:
585
- if (!shouldUpdateAbilityTable) return [3 /*break*/, 16];
586
- return [4 /*yield*/, upsertAbility(tx, {
587
- ability_model: table,
588
- ability_name: slug,
589
- ability_policy_name: policyName,
590
- ability_description: description !== null && description !== void 0 ? description : "",
591
- ability_operation: operation,
592
- // We store the string representation of the expression so that
593
- // we can compare it later without having to recompute the SQL
594
- ability_expression: rawExpression.toString(),
595
- })];
596
- case 15:
597
- _a.sent();
598
- _a.label = 16;
599
- case 16: return [2 /*return*/];
600
- }
601
- });
602
- }); })];
659
+ policyName = roleName;
660
+ return [4 /*yield*/, prisma.$queryRaw(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n\t\t\t\tselect * from _yates._yates_abilities where ability_model = ", " and ability_policy_name = ", "\n\t\t\t"], ["\n\t\t\t\tselect * from _yates._yates_abilities where ability_model = ", " and ability_policy_name = ", "\n\t\t\t"])), table, policyName)];
603
661
  case 1:
604
- // Take a lock and run the RLS setup in a transaction to prevent conflicts
605
- // in a multi-server environment
662
+ existingAbilities = _a.sent();
663
+ existingAbility = existingAbilities[0];
664
+ shouldUpdateAbilityTable = false;
665
+ if (!!existingAbility) return [3 /*break*/, 7];
666
+ debug("Creating RLS policy for", roleName, "on", table, "for", operation);
667
+ return [4 /*yield*/, (0, expressions_1.expressionToSQL)(rawExpression, table)];
668
+ case 2:
669
+ expression = _a.sent();
670
+ if (!(operation === "INSERT")) return [3 /*break*/, 4];
671
+ return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\t\t\tCREATE POLICY ".concat(policyName, " ON \"public\".\"").concat(table, "\" FOR ").concat(operation, " TO ").concat(roleName, " WITH CHECK (").concat(expression, ");\n\t\t\t\t"))];
672
+ case 3:
606
673
  _a.sent();
607
- return [2 /*return*/];
674
+ return [3 /*break*/, 6];
675
+ case 4: return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\t\t\tCREATE POLICY ".concat(policyName, " ON \"public\".\"").concat(table, "\" FOR ").concat(operation, " TO ").concat(roleName, " USING (").concat(expression, ");\n\t\t\t\t"))];
676
+ case 5:
677
+ _a.sent();
678
+ _a.label = 6;
679
+ case 6:
680
+ shouldUpdateAbilityTable = true;
681
+ return [3 /*break*/, 13];
682
+ case 7:
683
+ if (!(existingAbility.ability_expression !== rawExpression.toString())) return [3 /*break*/, 13];
684
+ debug("Updating RLS policy for", roleName, "on", table, "for", operation);
685
+ return [4 /*yield*/, (0, expressions_1.expressionToSQL)(rawExpression, table)];
686
+ case 8:
687
+ expression = _a.sent();
688
+ if (!(operation === "INSERT")) return [3 /*break*/, 10];
689
+ return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\t\t\tALTER POLICY ".concat(policyName, " ON \"public\".\"").concat(table, "\" TO ").concat(roleName, " WITH CHECK (").concat(expression, ");\n\t\t\t\t"))];
690
+ case 9:
691
+ _a.sent();
692
+ return [3 /*break*/, 12];
693
+ case 10: return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\t\t\tALTER POLICY ".concat(policyName, " ON \"public\".\"").concat(table, "\" TO ").concat(roleName, " USING (").concat(expression, ");\n\t\t\t\t"))];
694
+ case 11:
695
+ _a.sent();
696
+ _a.label = 12;
697
+ case 12:
698
+ shouldUpdateAbilityTable = true;
699
+ _a.label = 13;
700
+ case 13:
701
+ if (!shouldUpdateAbilityTable) return [3 /*break*/, 15];
702
+ return [4 /*yield*/, upsertAbility(prisma, {
703
+ ability_model: table,
704
+ ability_name: slug,
705
+ ability_policy_name: policyName,
706
+ ability_description: description !== null && description !== void 0 ? description : "",
707
+ ability_operation: operation,
708
+ // We store the string representation of the expression so that
709
+ // we can compare it later without having to recompute the SQL
710
+ ability_expression: rawExpression.toString(),
711
+ })];
712
+ case 14:
713
+ _a.sent();
714
+ _a.label = 15;
715
+ case 15: return [2 /*return*/];
608
716
  }
609
717
  });
610
718
  }); };
611
719
  this.createRoles = function (_a) { return __awaiter(_this, [_a], void 0, function (_b) {
612
- var runtimeDataModel, models, diff, defaultAbilities, abilities, models_2, models_2_1, model, ability, operation, roles, pgRoles, existingAbilities, pgPolicies, migratedAbilities, _c, _d, _e, _i, model, table, _loop_2, this_1, _f, _g, _h, _j, slug, _loop_3, this_2, _k, _l, _m, _o, key;
613
- var e_7, _p;
720
+ var runtimeDataModel, models, diff, defaultAbilities, abilities, models_2, models_2_1, model, ability, operation, roles, setupManifest, setupManifestHash, setupManifestId;
721
+ var e_9, _c;
614
722
  var _this = this;
615
- var _q;
723
+ var _d;
616
724
  var customAbilities = _b.customAbilities, getRoles = _b.getRoles;
617
- return __generator(this, function (_r) {
618
- switch (_r.label) {
725
+ return __generator(this, function (_e) {
726
+ switch (_e.label) {
619
727
  case 0: return [4 /*yield*/, this.ensureDatabaseScope()];
620
728
  case 1:
621
- _r.sent();
729
+ _e.sent();
622
730
  runtimeDataModel = this.inspectRunTimeDataModel();
623
731
  models = Object.keys(runtimeDataModel.models).map(function (m) { return runtimeDataModel.models[m].dbName || m; });
624
732
  if (customAbilities) {
@@ -636,7 +744,7 @@ var Yates = /** @class */ (function () {
636
744
  for (ability in customAbilities[model]) {
637
745
  operation =
638
746
  // biome-ignore lint/style/noNonNullAssertion: TODO fix this
639
- (_q = customAbilities[model][ability]) === null || _q === void 0 ? void 0 : _q.operation;
747
+ (_d = customAbilities[model][ability]) === null || _d === void 0 ? void 0 : _d.operation;
640
748
  if (!operation)
641
749
  continue;
642
750
  // biome-ignore lint/style/noNonNullAssertion: TODO fix this
@@ -645,26 +753,80 @@ var Yates = /** @class */ (function () {
645
753
  }
646
754
  }
647
755
  }
648
- catch (e_7_1) { e_7 = { error: e_7_1 }; }
756
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
649
757
  finally {
650
758
  try {
651
- if (models_2_1 && !models_2_1.done && (_p = models_2.return)) _p.call(models_2);
759
+ if (models_2_1 && !models_2_1.done && (_c = models_2.return)) _c.call(models_2);
652
760
  }
653
- finally { if (e_7) throw e_7.error; }
761
+ finally { if (e_9) throw e_9.error; }
654
762
  }
655
763
  roles = getRoles(abilities);
656
- return [4 /*yield*/, this.prisma.$queryRawUnsafe("\n\t\t\tselect * from pg_catalog.pg_roles where rolname like 'yates%'\n\t\t")];
764
+ setupManifest = this.createSetupManifest(abilities, roles);
765
+ setupManifestHash = this.createSetupManifestHash(setupManifest);
766
+ setupManifestId = this.getSetupManifestId();
767
+ return [4 /*yield*/, this.getStoredSetupManifestHash(setupManifestId)];
657
768
  case 2:
658
- pgRoles = _r.sent();
659
- return [4 /*yield*/, this.prisma.$queryRawUnsafe("\n\t\t\tselect * from _yates._yates_abilities;\n\t\t")];
769
+ if ((_e.sent()) ===
770
+ setupManifestHash) {
771
+ debug("Yates setup manifest unchanged; skipping role reconciliation");
772
+ return [2 /*return*/];
773
+ }
774
+ return [4 /*yield*/, this.prisma.$transaction(function (tx) { return __awaiter(_this, void 0, void 0, function () {
775
+ var prisma;
776
+ return __generator(this, function (_a) {
777
+ switch (_a.label) {
778
+ case 0:
779
+ prisma = tx;
780
+ return [4 /*yield*/, takeLock(prisma)];
781
+ case 1:
782
+ _a.sent();
783
+ return [4 /*yield*/, this.getStoredSetupManifestHash(setupManifestId, prisma)];
784
+ case 2:
785
+ if ((_a.sent()) ===
786
+ setupManifestHash) {
787
+ debug("Yates setup manifest unchanged after acquiring lock; skipping role reconciliation");
788
+ return [2 /*return*/];
789
+ }
790
+ return [4 /*yield*/, this.reconcileRoles({
791
+ abilities: abilities,
792
+ defaultAbilities: defaultAbilities,
793
+ prisma: prisma,
794
+ roles: roles,
795
+ })];
796
+ case 3:
797
+ _a.sent();
798
+ return [4 /*yield*/, this.upsertSetupManifestHash(setupManifestId, setupManifestHash, prisma)];
799
+ case 4:
800
+ _a.sent();
801
+ return [2 /*return*/];
802
+ }
803
+ });
804
+ }); })];
660
805
  case 3:
661
- existingAbilities = _r.sent();
662
- if (!(existingAbilities.length === 0)) return [3 /*break*/, 6];
806
+ _e.sent();
807
+ return [2 /*return*/];
808
+ }
809
+ });
810
+ }); };
811
+ this.reconcileRoles = function (_a) { return __awaiter(_this, [_a], void 0, function (_b) {
812
+ var pgRoles, existingAbilities, pgPolicies, migratedAbilities, migratedAbilities_1, migratedAbilities_1_1, migratedAbility, e_10_1, _c, _d, _e, _i, model, table, _loop_2, this_1, _f, _g, _h, _j, slug, _loop_3, this_2, _k, _l, _m, _o, key;
813
+ var e_10, _p;
814
+ var _this = this;
815
+ var abilities = _b.abilities, defaultAbilities = _b.defaultAbilities, prisma = _b.prisma, roles = _b.roles;
816
+ return __generator(this, function (_q) {
817
+ switch (_q.label) {
818
+ case 0: return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\tselect * from pg_catalog.pg_roles where rolname like 'yates%'\n\t\t")];
819
+ case 1:
820
+ pgRoles = _q.sent();
821
+ return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\tselect * from _yates._yates_abilities;\n\t\t")];
822
+ case 2:
823
+ existingAbilities = _q.sent();
824
+ if (!(existingAbilities.length === 0)) return [3 /*break*/, 12];
663
825
  debug('No existing abilities found, importing from "pg_policies" table');
664
- return [4 /*yield*/, this.prisma.$queryRawUnsafe("\n\t\t\t\tselect * from pg_catalog.pg_policies where policyname like 'yates%'\n\t\t\t")];
665
- case 4:
666
- pgPolicies = _r.sent();
667
- if (!pgPolicies.length) return [3 /*break*/, 6];
826
+ return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\t\tselect * from pg_catalog.pg_policies where policyname like 'yates%'\n\t\t\t")];
827
+ case 3:
828
+ pgPolicies = _q.sent();
829
+ if (!pgPolicies.length) return [3 /*break*/, 12];
668
830
  migratedAbilities = pgPolicies.map(function (policy) {
669
831
  var _a, _b;
670
832
  return ({
@@ -676,36 +838,55 @@ var Yates = /** @class */ (function () {
676
838
  ability_expression: (_b = (_a = policy.qual) !== null && _a !== void 0 ? _a : policy.with_check) !== null && _b !== void 0 ? _b : "",
677
839
  });
678
840
  });
679
- return [4 /*yield*/, this.prisma.$transaction(__spreadArray([
680
- takeLock(this.prisma)
681
- ], __read(migratedAbilities.map(function (ma) { return upsertAbility(_this.prisma, ma); })), false))];
841
+ _q.label = 4;
842
+ case 4:
843
+ _q.trys.push([4, 9, 10, 11]);
844
+ migratedAbilities_1 = __values(migratedAbilities), migratedAbilities_1_1 = migratedAbilities_1.next();
845
+ _q.label = 5;
682
846
  case 5:
683
- _r.sent();
684
- existingAbilities.push.apply(existingAbilities, __spreadArray([], __read(migratedAbilities), false));
685
- _r.label = 6;
847
+ if (!!migratedAbilities_1_1.done) return [3 /*break*/, 8];
848
+ migratedAbility = migratedAbilities_1_1.value;
849
+ return [4 /*yield*/, upsertAbility(prisma, migratedAbility)];
686
850
  case 6:
851
+ _q.sent();
852
+ _q.label = 7;
853
+ case 7:
854
+ migratedAbilities_1_1 = migratedAbilities_1.next();
855
+ return [3 /*break*/, 5];
856
+ case 8: return [3 /*break*/, 11];
857
+ case 9:
858
+ e_10_1 = _q.sent();
859
+ e_10 = { error: e_10_1 };
860
+ return [3 /*break*/, 11];
861
+ case 10:
862
+ try {
863
+ if (migratedAbilities_1_1 && !migratedAbilities_1_1.done && (_p = migratedAbilities_1.return)) _p.call(migratedAbilities_1);
864
+ }
865
+ finally { if (e_10) throw e_10.error; }
866
+ return [7 /*endfinally*/];
867
+ case 11:
868
+ existingAbilities.push.apply(existingAbilities, __spreadArray([], __read(migratedAbilities), false));
869
+ _q.label = 12;
870
+ case 12:
687
871
  _c = abilities;
688
872
  _d = [];
689
873
  for (_e in _c)
690
874
  _d.push(_e);
691
875
  _i = 0;
692
- _r.label = 7;
693
- case 7:
694
- if (!(_i < _d.length)) return [3 /*break*/, 13];
876
+ _q.label = 13;
877
+ case 13:
878
+ if (!(_i < _d.length)) return [3 /*break*/, 19];
695
879
  _e = _d[_i];
696
- if (!(_e in _c)) return [3 /*break*/, 12];
880
+ if (!(_e in _c)) return [3 /*break*/, 18];
697
881
  model = _e;
698
882
  table = model;
699
- return [4 /*yield*/, this.prisma.$transaction([
700
- takeLock(this.prisma),
701
- this.prisma.$queryRawUnsafe("ALTER table \"".concat(table, "\" enable row level security;")),
702
- ])];
703
- case 8:
704
- _r.sent();
883
+ return [4 /*yield*/, this.enableRowLevelSecurityIfNeeded(prisma, table)];
884
+ case 14:
885
+ _q.sent();
705
886
  _loop_2 = function (slug) {
706
887
  var ability, roleName;
707
- return __generator(this, function (_s) {
708
- switch (_s.label) {
888
+ return __generator(this, function (_r) {
889
+ switch (_r.label) {
709
890
  case 0:
710
891
  ability =
711
892
  // biome-ignore lint/style/noNonNullAssertion: TODO fix this
@@ -716,22 +897,21 @@ var Yates = /** @class */ (function () {
716
897
  roleName = this_1.createAbilityName(model, slug);
717
898
  if (!pgRoles.find(function (role) { return role.rolname === roleName; })) return [3 /*break*/, 1];
718
899
  debug("Role already exists", roleName, model, slug);
719
- return [3 /*break*/, 3];
720
- case 1: return [4 /*yield*/, this_1.prisma.$transaction([
721
- takeLock(this_1.prisma),
722
- this_1.prisma.$queryRawUnsafe("\n\t\t\t\t\t\tdo\n\t\t\t\t\t\t$$\n\t\t\t\t\t\tbegin\n\t\t\t\t\t\tif not exists (select * from pg_catalog.pg_roles where rolname = '".concat(roleName, "') then \n\t\t\t\t\t\t\tcreate role ").concat(roleName, ";\n\t\t\t\t\t\tend if;\n\t\t\t\t\t\tend\n\t\t\t\t\t\t$$\n\t\t\t\t\t\t;\n\t\t\t\t\t")),
723
- this_1.prisma.$queryRawUnsafe("\n\t\t\t\t\t\tGRANT ".concat(ability.operation, " ON \"").concat(table, "\" TO ").concat(roleName, ";\n\t\t\t\t\t")),
724
- ])];
900
+ return [3 /*break*/, 4];
901
+ case 1: return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\t\t\t\tdo\n\t\t\t\t\t\t$$\n\t\t\t\t\t\tbegin\n\t\t\t\t\t\tif not exists (select * from pg_catalog.pg_roles where rolname = '".concat(roleName, "') then \n\t\t\t\t\t\t\tcreate role ").concat(roleName, ";\n\t\t\t\t\t\tend if;\n\t\t\t\t\t\tend\n\t\t\t\t\t\t$$\n\t\t\t\t\t\t;\n\t\t\t\t\t"))];
725
902
  case 2:
726
- _s.sent();
727
- _s.label = 3;
903
+ _r.sent();
904
+ return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\t\t\t\tGRANT ".concat(ability.operation, " ON \"").concat(table, "\" TO ").concat(roleName, ";\n\t\t\t\t\t"))];
728
905
  case 3:
729
- if (!ability.expression) return [3 /*break*/, 5];
730
- return [4 /*yield*/, this_1.setRLS(this_1.prisma, table, roleName, slug, ability)];
906
+ _r.sent();
907
+ _r.label = 4;
731
908
  case 4:
732
- _s.sent();
733
- _s.label = 5;
734
- case 5: return [2 /*return*/];
909
+ if (!ability.expression) return [3 /*break*/, 6];
910
+ return [4 /*yield*/, this_1.setRLS(prisma, table, roleName, slug, ability)];
911
+ case 5:
912
+ _r.sent();
913
+ _r.label = 6;
914
+ case 6: return [2 /*return*/];
735
915
  }
736
916
  });
737
917
  };
@@ -741,30 +921,31 @@ var Yates = /** @class */ (function () {
741
921
  for (_h in _f)
742
922
  _g.push(_h);
743
923
  _j = 0;
744
- _r.label = 9;
745
- case 9:
746
- if (!(_j < _g.length)) return [3 /*break*/, 12];
924
+ _q.label = 15;
925
+ case 15:
926
+ if (!(_j < _g.length)) return [3 /*break*/, 18];
747
927
  _h = _g[_j];
748
- if (!(_h in _f)) return [3 /*break*/, 11];
928
+ if (!(_h in _f)) return [3 /*break*/, 17];
749
929
  slug = _h;
750
930
  return [5 /*yield**/, _loop_2(slug)];
751
- case 10:
752
- _r.sent();
753
- _r.label = 11;
754
- case 11:
931
+ case 16:
932
+ _q.sent();
933
+ _q.label = 17;
934
+ case 17:
755
935
  _j++;
756
- return [3 /*break*/, 9];
757
- case 12:
936
+ return [3 /*break*/, 15];
937
+ case 18:
758
938
  _i++;
759
- return [3 /*break*/, 7];
760
- case 13:
939
+ return [3 /*break*/, 13];
940
+ case 19:
761
941
  _loop_3 = function (key) {
762
- var role, wildCardAbilities, roleAbilities, rlsRoles, userRoles, oldRoles, policies;
942
+ var role, wildCardAbilities, roleAbilities, rlsRoles, userRoles, oldRoles, policies, policies_1, policies_1_1, oldPolicy, e_11_1;
943
+ var e_11, _s;
763
944
  return __generator(this, function (_t) {
764
945
  switch (_t.label) {
765
946
  case 0:
766
947
  role = this_2.createRoleName(key);
767
- return [4 /*yield*/, this_2.prisma.$executeRawUnsafe("\n\t\t\t\tdo\n\t\t\t\t$$\n\t\t\t\tbegin\n\t\t\t\tif not exists (select * from pg_catalog.pg_roles where rolname = '".concat(role, "') then \n\t\t\t\t\tcreate role ").concat(role, ";\n\t\t\t\tend if;\n\t\t\t\tend\n\t\t\t\t$$\n\t\t\t\t;\n\t\t\t"))];
948
+ return [4 /*yield*/, prisma.$executeRawUnsafe("\n\t\t\t\tdo\n\t\t\t\t$$\n\t\t\t\tbegin\n\t\t\t\tif not exists (select * from pg_catalog.pg_roles where rolname = '".concat(role, "') then \n\t\t\t\t\tcreate role ").concat(role, ";\n\t\t\t\tend if;\n\t\t\t\tend\n\t\t\t\t$$\n\t\t\t\t;\n\t\t\t"))];
768
949
  case 1:
769
950
  _t.sent();
770
951
  wildCardAbilities = (0, flatMap_1.default)(defaultAbilities, function (model, modelName) {
@@ -782,19 +963,22 @@ var Yates = /** @class */ (function () {
782
963
  debug("Setting up role", key, role, "with abilities", rlsRoles.join(", "));
783
964
  // 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.
784
965
  // 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.
785
- return [4 /*yield*/, this_2.prisma.$transaction([
786
- takeLock(this_2.prisma),
787
- this_2.prisma.$executeRawUnsafe("GRANT ALL ON ALL TABLES IN SCHEMA public TO ".concat(role, ";")),
788
- this_2.prisma.$executeRawUnsafe("\n\t\t\t\t\tGRANT ALL ON ALL SEQUENCES IN SCHEMA public TO ".concat(role, ";\n\t\t\t\t")),
789
- this_2.prisma.$executeRawUnsafe("\n\t\t\t\t\tGRANT ALL ON SCHEMA public TO ".concat(role, ";\n\t\t\t\t")),
790
- this_2.prisma.$queryRawUnsafe("GRANT ".concat(rlsRoles.join(", "), " TO ").concat(role)),
791
- ])];
966
+ return [4 /*yield*/, prisma.$executeRawUnsafe("GRANT ALL ON ALL TABLES IN SCHEMA public TO ".concat(role, ";"))];
792
967
  case 2:
793
968
  // 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.
794
969
  // 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.
795
970
  _t.sent();
796
- return [4 /*yield*/, this_2.prisma.$queryRawUnsafe("\n\t\t\t\tWITH RECURSIVE cte AS (\n\t\t\t\t\tSELECT oid FROM pg_roles where rolname = '".concat(role, "'\n\t\t\t\t\tUNION ALL\n\t\t\t\t\tSELECT m.roleid\n\t\t\t\t\tFROM cte\n\t\t\t\t\tJOIN pg_auth_members m ON m.member = cte.oid\n\t\t\t\t\t)\n\t\t\t\tSELECT oid, oid::regrole::text AS rolename FROM cte where oid::regrole::text != '").concat(role, "'; \n\t\t"))];
971
+ return [4 /*yield*/, prisma.$executeRawUnsafe("\n\t\t\t\t\tGRANT ALL ON ALL SEQUENCES IN SCHEMA public TO ".concat(role, ";\n\t\t\t\t"))];
797
972
  case 3:
973
+ _t.sent();
974
+ return [4 /*yield*/, prisma.$executeRawUnsafe("\n\t\t\t\t\tGRANT ALL ON SCHEMA public TO ".concat(role, ";\n\t\t\t\t"))];
975
+ case 4:
976
+ _t.sent();
977
+ return [4 /*yield*/, prisma.$queryRawUnsafe("GRANT ".concat(rlsRoles.join(", "), " TO ").concat(role))];
978
+ case 5:
979
+ _t.sent();
980
+ return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\t\tWITH RECURSIVE cte AS (\n\t\t\t\t\tSELECT oid FROM pg_roles where rolname = '".concat(role, "'\n\t\t\t\t\tUNION ALL\n\t\t\t\t\tSELECT m.roleid\n\t\t\t\t\tFROM cte\n\t\t\t\t\tJOIN pg_auth_members m ON m.member = cte.oid\n\t\t\t\t\t)\n\t\t\t\tSELECT oid, oid::regrole::text AS rolename FROM cte where oid::regrole::text != '").concat(role, "'; \n\t\t"))];
981
+ case 6:
798
982
  userRoles = _t.sent();
799
983
  oldRoles = userRoles
800
984
  .filter(function (_a) {
@@ -805,32 +989,52 @@ var Yates = /** @class */ (function () {
805
989
  var rolename = _a.rolename;
806
990
  return rolename;
807
991
  });
808
- if (!oldRoles.length) return [3 /*break*/, 8];
992
+ if (!oldRoles.length) return [3 /*break*/, 18];
809
993
  // Now revoke old roles from the user role
810
994
  debug("Revoking old roles", key, role, oldRoles.join(", "));
811
- return [4 /*yield*/, this_2.prisma.$executeRawUnsafe("REVOKE ".concat(oldRoles.join(", "), " FROM ").concat(role))];
812
- case 4:
995
+ return [4 /*yield*/, prisma.$executeRawUnsafe("REVOKE ".concat(oldRoles.join(", "), " FROM ").concat(role))];
996
+ case 7:
813
997
  _t.sent();
814
- return [4 /*yield*/, this_2.prisma.$queryRawUnsafe("SELECT * FROM pg_catalog.pg_policies WHERE policyname IN (".concat(oldRoles
998
+ return [4 /*yield*/, prisma.$queryRawUnsafe("SELECT * FROM pg_catalog.pg_policies WHERE policyname IN (".concat(oldRoles
815
999
  .map(function (or) { return "'".concat(or, "'"); })
816
1000
  .join(", "), ")"))];
817
- case 5:
1001
+ case 8:
818
1002
  policies = _t.sent();
819
- return [4 /*yield*/, this_2.prisma.$transaction(__spreadArray([
820
- takeLock(this_2.prisma)
821
- ], __read(policies.map(function (oldPolicy) {
822
- return _this.prisma.$executeRawUnsafe("DROP POLICY ".concat(oldPolicy.policyname, " ON \"").concat(oldPolicy.tablename, "\""));
823
- })), false))];
824
- case 6:
1003
+ _t.label = 9;
1004
+ case 9:
1005
+ _t.trys.push([9, 14, 15, 16]);
1006
+ policies_1 = (e_11 = void 0, __values(policies)), policies_1_1 = policies_1.next();
1007
+ _t.label = 10;
1008
+ case 10:
1009
+ if (!!policies_1_1.done) return [3 /*break*/, 13];
1010
+ oldPolicy = policies_1_1.value;
1011
+ return [4 /*yield*/, prisma.$executeRawUnsafe("DROP POLICY ".concat(oldPolicy.policyname, " ON \"").concat(oldPolicy.tablename, "\""))];
1012
+ case 11:
825
1013
  _t.sent();
1014
+ _t.label = 12;
1015
+ case 12:
1016
+ policies_1_1 = policies_1.next();
1017
+ return [3 /*break*/, 10];
1018
+ case 13: return [3 /*break*/, 16];
1019
+ case 14:
1020
+ e_11_1 = _t.sent();
1021
+ e_11 = { error: e_11_1 };
1022
+ return [3 /*break*/, 16];
1023
+ case 15:
1024
+ try {
1025
+ if (policies_1_1 && !policies_1_1.done && (_s = policies_1.return)) _s.call(policies_1);
1026
+ }
1027
+ finally { if (e_11) throw e_11.error; }
1028
+ return [7 /*endfinally*/];
1029
+ case 16:
826
1030
  debug("Revoked old rows from ability table", oldRoles.join(", "));
827
- return [4 /*yield*/, this_2.prisma.$executeRawUnsafe("DELETE FROM _yates._yates_abilities WHERE ability_policy_name IN (".concat(oldRoles
1031
+ return [4 /*yield*/, prisma.$executeRawUnsafe("DELETE FROM _yates._yates_abilities WHERE ability_policy_name IN (".concat(oldRoles
828
1032
  .map(function (or) { return "'".concat(or, "'"); })
829
1033
  .join(", "), ")"))];
830
- case 7:
1034
+ case 17:
831
1035
  _t.sent();
832
- _t.label = 8;
833
- case 8: return [2 /*return*/];
1036
+ _t.label = 18;
1037
+ case 18: return [2 /*return*/];
834
1038
  }
835
1039
  });
836
1040
  };
@@ -840,20 +1044,20 @@ var Yates = /** @class */ (function () {
840
1044
  for (_m in _k)
841
1045
  _l.push(_m);
842
1046
  _o = 0;
843
- _r.label = 14;
844
- case 14:
845
- if (!(_o < _l.length)) return [3 /*break*/, 17];
1047
+ _q.label = 20;
1048
+ case 20:
1049
+ if (!(_o < _l.length)) return [3 /*break*/, 23];
846
1050
  _m = _l[_o];
847
- if (!(_m in _k)) return [3 /*break*/, 16];
1051
+ if (!(_m in _k)) return [3 /*break*/, 22];
848
1052
  key = _m;
849
1053
  return [5 /*yield**/, _loop_3(key)];
850
- case 15:
851
- _r.sent();
852
- _r.label = 16;
853
- case 16:
1054
+ case 21:
1055
+ _q.sent();
1056
+ _q.label = 22;
1057
+ case 22:
854
1058
  _o++;
855
- return [3 /*break*/, 14];
856
- case 17: return [2 /*return*/];
1059
+ return [3 /*break*/, 20];
1060
+ case 23: return [2 /*return*/];
857
1061
  }
858
1062
  });
859
1063
  }); };
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.8.1",
3
+ "version": "4.0.0-beta.dangerous.17be6b9",
4
4
  "description": "Role based access control for Prisma Apps",
5
5
  "main": "dist/index.js",
6
6
  "files": [
@@ -48,4 +48,4 @@
48
48
  "@prisma/client": "^5.11.0",
49
49
  "prisma": "^5.11.0"
50
50
  }
51
- }
51
+ }