@nextage/era-lib 1.0.219 → 1.0.220
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/build/utils/scope.d.ts +21 -0
- package/build/utils/scope.d.ts.map +1 -1
- package/build/utils/scope.js +27 -0
- package/build/utils/scope.js.map +1 -1
- package/package.json +1 -1
package/build/utils/scope.d.ts
CHANGED
|
@@ -135,4 +135,25 @@ export declare function reachableRoles(user?: BaseUser): string[];
|
|
|
135
135
|
* @returns `undefined` for no constraint, otherwise the exact set of reachable ids
|
|
136
136
|
*/
|
|
137
137
|
export declare function reachableOrgIds(user?: BaseUser): string[] | undefined;
|
|
138
|
+
/**
|
|
139
|
+
* Every organization the user reaches where one of `roles` holds, for the LIST case of a capability.
|
|
140
|
+
*
|
|
141
|
+
* `hasOrgRole` answers about ONE organization named by the request; this answers "on which ones
|
|
142
|
+
* does the capability hold at all?", which is what a list scoped to a capability needs - the users
|
|
143
|
+
* a caller administers, the invitations a caller manages. It is `reachableOrgIds` narrowed by
|
|
144
|
+
* `hasOrgRole`, so a list never shows an organization the point check would then deny, and the
|
|
145
|
+
* role that decides on each organization is its effective one: a grant decides on what it grants.
|
|
146
|
+
*
|
|
147
|
+
* Same three outcomes as `reachableOrgIds`, and the caller MUST tell them apart:
|
|
148
|
+
*
|
|
149
|
+
* `undefined` -> no constraint: a cross-tenant user holding one of `roles`, which then holds on
|
|
150
|
+
* every organization (its effective roles are its own everywhere)
|
|
151
|
+
* `string[]` -> exactly these ids, never any other
|
|
152
|
+
* `[]` -> the capability holds nowhere; the caller must yield an EMPTY result, never all
|
|
153
|
+
*
|
|
154
|
+
* @param user the authenticated user (`NxContext.user`)
|
|
155
|
+
* @param roles the roles that grant the capability (any of them is enough)
|
|
156
|
+
* @returns `undefined` for no constraint, otherwise the exact set of ids where the capability holds
|
|
157
|
+
*/
|
|
158
|
+
export declare function orgIdsWithRole(user: BaseUser | undefined, roles: readonly string[]): string[] | undefined;
|
|
138
159
|
//# sourceMappingURL=scope.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/utils/scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;+FAa+F;AAE/F,OAAO,EAAY,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAM1D,OAAO,EAAE,QAAQ,EAAE,MAAgB,oBAAoB,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAqBhF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,CAQxE;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAWxE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAGnH;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,CAQvH;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,EAAE,CAOxD;AAcD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,EAAE,GAAG,SAAS,CAcrE"}
|
|
1
|
+
{"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/utils/scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;+FAa+F;AAE/F,OAAO,EAAY,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAM1D,OAAO,EAAE,QAAQ,EAAE,MAAgB,oBAAoB,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAqBhF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,CAQxE;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAWxE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAGnH;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,CAQvH;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,EAAE,CAOxD;AAcD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,EAAE,GAAG,SAAS,CAcrE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,SAAS,CAQzG"}
|
package/build/utils/scope.js
CHANGED
|
@@ -21,6 +21,7 @@ exports.hasOrgRole = hasOrgRole;
|
|
|
21
21
|
exports.assertOrgRole = assertOrgRole;
|
|
22
22
|
exports.reachableRoles = reachableRoles;
|
|
23
23
|
exports.reachableOrgIds = reachableOrgIds;
|
|
24
|
+
exports.orgIdsWithRole = orgIdsWithRole;
|
|
24
25
|
const nx_frame_be_1 = require("@nextage/nx-frame-be");
|
|
25
26
|
const constants_1 = require("../constants");
|
|
26
27
|
const constants_2 = require("../constants");
|
|
@@ -203,4 +204,30 @@ function reachableOrgIds(user) {
|
|
|
203
204
|
user.grants?.forEach(g => g.id && ids.add(String(g.id)));
|
|
204
205
|
return [...ids];
|
|
205
206
|
}
|
|
207
|
+
/**
|
|
208
|
+
* Every organization the user reaches where one of `roles` holds, for the LIST case of a capability.
|
|
209
|
+
*
|
|
210
|
+
* `hasOrgRole` answers about ONE organization named by the request; this answers "on which ones
|
|
211
|
+
* does the capability hold at all?", which is what a list scoped to a capability needs - the users
|
|
212
|
+
* a caller administers, the invitations a caller manages. It is `reachableOrgIds` narrowed by
|
|
213
|
+
* `hasOrgRole`, so a list never shows an organization the point check would then deny, and the
|
|
214
|
+
* role that decides on each organization is its effective one: a grant decides on what it grants.
|
|
215
|
+
*
|
|
216
|
+
* Same three outcomes as `reachableOrgIds`, and the caller MUST tell them apart:
|
|
217
|
+
*
|
|
218
|
+
* `undefined` -> no constraint: a cross-tenant user holding one of `roles`, which then holds on
|
|
219
|
+
* every organization (its effective roles are its own everywhere)
|
|
220
|
+
* `string[]` -> exactly these ids, never any other
|
|
221
|
+
* `[]` -> the capability holds nowhere; the caller must yield an EMPTY result, never all
|
|
222
|
+
*
|
|
223
|
+
* @param user the authenticated user (`NxContext.user`)
|
|
224
|
+
* @param roles the roles that grant the capability (any of them is enough)
|
|
225
|
+
* @returns `undefined` for no constraint, otherwise the exact set of ids where the capability holds
|
|
226
|
+
*/
|
|
227
|
+
function orgIdsWithRole(user, roles) {
|
|
228
|
+
const reachable = reachableOrgIds(user);
|
|
229
|
+
if (!reachable)
|
|
230
|
+
return (user?.roles ?? []).some(r => roles.includes(r)) ? undefined : [];
|
|
231
|
+
return reachable.filter(id => hasOrgRole(user, id, roles));
|
|
232
|
+
}
|
|
206
233
|
//# sourceMappingURL=scope.js.map
|
package/build/utils/scope.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/utils/scope.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;+FAa+F;;AAiC/F,0CAqBC;AAaD,wCAQC;AA0BD,wCAWC;AAaD,gCAGC;AAcD,sCAQC;AAcD,wCAOC;AAmCD,0CAcC;
|
|
1
|
+
{"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/utils/scope.ts"],"names":[],"mappings":"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"}
|