@spinajs/rbac 2.0.515 → 2.0.517

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,eAAe,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAc,YAAY,EAAkB,MAAM,aAAa,CAAC;AAIvE,OAAO,WAAW,CAAC;AACnB,OAAO,eAAe,CAAC;AACvB,OAAO,cAAc,CAAC;AACtB,OAAO,yBAAyB,CAAC;AACjC,OAAO,oBAAoB,CAAC;AAC5B,OAAO,gBAAgB,CAAC;AAKxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iDAAiD,CAAC;AAChE,cAAc,sDAAsD,CAAC;AACrE,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AAGjC,QAAA,MAAQ,UAAU,sBAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;AAErC,qBACa,gBAAiB,SAAQ,YAAY;IACzC,SAAS,IAAI,IAAI,CAuEvB;CACF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,eAAe,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAI9C,OAAO,EAAc,YAAY,EAAkB,MAAM,aAAa,CAAC;AAMvE,OAAO,WAAW,CAAC;AACnB,OAAO,eAAe,CAAC;AACvB,OAAO,cAAc,CAAC;AACtB,OAAO,yBAAyB,CAAC;AACjC,OAAO,oBAAoB,CAAC;AAC5B,OAAO,gBAAgB,CAAC;AAKxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iDAAiD,CAAC;AAChE,cAAc,sDAAsD,CAAC;AACrE,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AAGjC,QAAA,MAAQ,UAAU,sBAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;AAErC,qBACa,gBAAiB,SAAQ,YAAY;IACzC,SAAS,IAAI,IAAI,CAyFvB;CACF"}
package/lib/cjs/index.js CHANGED
@@ -27,6 +27,7 @@ exports.RbacBootstrapper = exports.Permission = exports.AccessControl = void 0;
27
27
  const accesscontrol_1 = __importDefault(require("accesscontrol"));
28
28
  const accesscontrol_2 = require("accesscontrol");
29
29
  Object.defineProperty(exports, "AccessControl", { enumerable: true, get: function () { return accesscontrol_2.AccessControl; } });
30
+ const async_hooks_1 = require("async_hooks");
30
31
  const di_1 = require("@spinajs/di");
31
32
  const configuration_1 = require("@spinajs/configuration");
32
33
  const log_1 = require("@spinajs/log");
@@ -112,11 +113,27 @@ let RbacBootstrapper = class RbacBootstrapper extends di_1.Bootstrapper {
112
113
  });
113
114
  }).as('RbacGuestUserFactory');
114
115
  di_1.DI.register(async (_) => {
115
- // Deliberately the base User class: the system account must resolve on EVERY
116
- // code path (_user_or_system runs inside scoped request contexts), so this
117
- // lookup must never be row-scoped by an application's model override.
118
- const system = await User_js_1.User.select().where('Role', ['system']).where('Login', '__system__').firstOrFail();
119
- return system;
116
+ /**
117
+ * The system account must resolve on EVERY code path — `_user_or_system` runs inside
118
+ * scoped request contexts — so the lookup must never be row-scoped by an application's
119
+ * `RbacUserModel` override. It used to buy that by querying the BASE `User` class, at
120
+ * the cost of returning an instance of a class the application does not use: this
121
+ * factory's result is written straight into `storage.User` by machine-token policies,
122
+ * so an application model's own members ( a pool/segment accessor, say ) were missing
123
+ * on exactly those requests, while present on every other one.
124
+ *
125
+ * `SkipModelPermissionCheck` states the intent directly instead — the rbac query
126
+ * middleware reads it and applies no hook — so the query stays unscoped AND the
127
+ * caller gets the model the rest of the system hands it. The rest of the store is
128
+ * preserved: this runs inside a live request context and must not drop its user,
129
+ * active role or token info.
130
+ */
131
+ const store = di_1.DI.get(async_hooks_1.AsyncLocalStorage);
132
+ const lookup = () => (0, model_token_js_1.userModel)().select().where('Role', ['system']).where('Login', '__system__').firstOrFail();
133
+ if (!store) {
134
+ return await lookup();
135
+ }
136
+ return await store.run({ ...(store.getStore() ?? {}), SkipModelPermissionCheck: true }, lookup);
120
137
  }).as('RbacSystemUserFactory');
121
138
  di_1.DI.register(async (_, role) => {
122
139
  return new ((0, model_token_js_1.userModel)())({
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,eAAe,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAc,YAAY,EAAkB,MAAM,aAAa,CAAC;AAIvE,OAAO,WAAW,CAAC;AACnB,OAAO,eAAe,CAAC;AACvB,OAAO,cAAc,CAAC;AACtB,OAAO,yBAAyB,CAAC;AACjC,OAAO,oBAAoB,CAAC;AAC5B,OAAO,gBAAgB,CAAC;AAKxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iDAAiD,CAAC;AAChE,cAAc,sDAAsD,CAAC;AACrE,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AAGjC,QAAA,MAAQ,UAAU,sBAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;AAErC,qBACa,gBAAiB,SAAQ,YAAY;IACzC,SAAS,IAAI,IAAI,CAuEvB;CACF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,eAAe,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAI9C,OAAO,EAAc,YAAY,EAAkB,MAAM,aAAa,CAAC;AAMvE,OAAO,WAAW,CAAC;AACnB,OAAO,eAAe,CAAC;AACvB,OAAO,cAAc,CAAC;AACtB,OAAO,yBAAyB,CAAC;AACjC,OAAO,oBAAoB,CAAC;AAC5B,OAAO,gBAAgB,CAAC;AAKxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iDAAiD,CAAC;AAChE,cAAc,sDAAsD,CAAC;AACrE,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AAGjC,QAAA,MAAQ,UAAU,sBAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;AAErC,qBACa,gBAAiB,SAAQ,YAAY;IACzC,SAAS,IAAI,IAAI,CAyFvB;CACF"}
package/lib/mjs/index.js CHANGED
@@ -6,6 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import ac from 'accesscontrol';
8
8
  import { AccessControl } from 'accesscontrol';
9
+ import { AsyncLocalStorage } from 'async_hooks';
9
10
  import { Injectable, Bootstrapper, DI } from '@spinajs/di';
10
11
  import { Configuration } from '@spinajs/configuration';
11
12
  import { Log } from '@spinajs/log';
@@ -91,11 +92,27 @@ let RbacBootstrapper = class RbacBootstrapper extends Bootstrapper {
91
92
  });
92
93
  }).as('RbacGuestUserFactory');
93
94
  DI.register(async (_) => {
94
- // Deliberately the base User class: the system account must resolve on EVERY
95
- // code path (_user_or_system runs inside scoped request contexts), so this
96
- // lookup must never be row-scoped by an application's model override.
97
- const system = await User.select().where('Role', ['system']).where('Login', '__system__').firstOrFail();
98
- return system;
95
+ /**
96
+ * The system account must resolve on EVERY code path — `_user_or_system` runs inside
97
+ * scoped request contexts — so the lookup must never be row-scoped by an application's
98
+ * `RbacUserModel` override. It used to buy that by querying the BASE `User` class, at
99
+ * the cost of returning an instance of a class the application does not use: this
100
+ * factory's result is written straight into `storage.User` by machine-token policies,
101
+ * so an application model's own members ( a pool/segment accessor, say ) were missing
102
+ * on exactly those requests, while present on every other one.
103
+ *
104
+ * `SkipModelPermissionCheck` states the intent directly instead — the rbac query
105
+ * middleware reads it and applies no hook — so the query stays unscoped AND the
106
+ * caller gets the model the rest of the system hands it. The rest of the store is
107
+ * preserved: this runs inside a live request context and must not drop its user,
108
+ * active role or token info.
109
+ */
110
+ const store = DI.get(AsyncLocalStorage);
111
+ const lookup = () => userModel().select().where('Role', ['system']).where('Login', '__system__').firstOrFail();
112
+ if (!store) {
113
+ return await lookup();
114
+ }
115
+ return await store.run({ ...(store.getStore() ?? {}), SkipModelPermissionCheck: true }, lookup);
99
116
  }).as('RbacSystemUserFactory');
100
117
  DI.register(async (_, role) => {
101
118
  return new (userModel())({
@@ -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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"}