@e-llm-studio/instant-learning 1.3.0-alpha.20 → 1.3.0-alpha.21
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/README.md +8 -0
- package/dist/cjs/features/LearningManagement/store/usePermissionsStore.js +1 -1
- package/dist/features/LearningManagement/store/usePermissionsStore.js +1 -1
- package/dist/types/src/features/LearningManagement/store/usePermissionsStore.d.ts +2 -1
- package/dist/types/src/features/LearningManagement/store/usePermissionsStore.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
|
|
4
4
|
## Changelog
|
|
5
5
|
|
|
6
|
+
### 1.3.0-alpha.21 - 2026, June 8th
|
|
7
|
+
**Permissions — Union-based access resolution**
|
|
8
|
+
|
|
9
|
+
- **Union model**: When a user holds multiple roles on the same resource (e.g. inherited group role + direct assignment), permissions from all roles are merged. If any role grants a permission, the user has it.
|
|
10
|
+
- **Removed**: `ROLE_HIERARCHY`, `getRolePrecedence()`, `resolveHighestRolePerResource()`, and the `resolvedData` store field are all gone.
|
|
11
|
+
- **`hasPermission()`** and **`hasApplicationAccess()`** now run against the raw `accessData` via a new internal `getUnionPermissionsForResource()` helper that builds a `Set` of all permissions across matching records.
|
|
12
|
+
- `fetchPermissions()` no longer calls the resolver — stores raw API response only.
|
|
13
|
+
|
|
6
14
|
### 1.3.0-alpha.20 - 2026, June 8th
|
|
7
15
|
**TeachMe Popup — LHS Customisation via `dtt()`**
|
|
8
16
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("tslib"),r=require("zustand"),s=require("../apis/scopeApis.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("tslib"),r=require("zustand"),s=require("../apis/scopeApis.js"),i=require("./useEnvStore.js"),n=function(e,r){return!!r&&function(e){return e?"string"==typeof e?[e]:[e._id,e.id,e.resourceId,e.resource_id].filter(function(e){return"string"==typeof e&&e.length>0}):[]}(e).includes(r)},t=function(e,r){for(var s,i,t=new Set,a=0,o=e;a<o.length;a++){var u=o[a];if(n(u.resourceId,r))for(var c=0,l=null!==(i=null===(s=u.role)||void 0===s?void 0:s.permissions)&&void 0!==i?i:[];c<l.length;c++){var d=l[c];t.add(d.name)}}return t},a=r.create(function(r,n){return{accessData:[],isLoading:!1,error:null,fetchPermissions:function(i,n){return e.__awaiter(void 0,void 0,void 0,function(){var t,a,o;return e.__generator(this,function(e){switch(e.label){case 0:if(!i)return[2];r({isLoading:!0,error:null}),e.label=1;case 1:return e.trys.push([1,3,,4]),[4,s.appsecApi.get("/users/me",{params:{appId:i,resourceId:n}})];case 2:return t=e.sent(),r({accessData:(null===(o=t.data)||void 0===o?void 0:o.data)||[],isLoading:!1}),[3,4];case 3:return a=e.sent(),console.error("Failed to fetch permissions:",a),r({error:a.message||"Failed to fetch permissions",isLoading:!1}),[3,4];case 4:return[2]}})})},hasPermission:function(e,r){var s,a=n().accessData,o=null===(s=i.default.getState().rbacConfig)||void 0===s?void 0:s.applicationResourceId;if(o&&t(a,o).has(e))return!0;if(r&&t(a,r).has(e))return!0;return!1},hasGlobalPermission:function(e,r){return!!r&&(n().hasApplicationAccess(r)||n().hasPermission(e,r))},hasApplicationAccess:function(e){if(!e)return!1;var r=n().accessData;return t(r,e).has("ilotj.scope.access.application.user.add")},reset:function(){return r({accessData:[],isLoading:!1,error:null})}}});exports.usePermissionsStore=a;
|
|
2
2
|
//# sourceMappingURL=usePermissionsStore.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__awaiter as r,__generator as e}from"tslib";import{create as
|
|
1
|
+
import{__awaiter as r,__generator as e}from"tslib";import{create as s}from"zustand";import{appsecApi as n}from"../apis/scopeApis.js";import i from"./useEnvStore.js";var t=function(r,e){return!!e&&function(r){return r?"string"==typeof r?[r]:[r._id,r.id,r.resourceId,r.resource_id].filter(function(r){return"string"==typeof r&&r.length>0}):[]}(r).includes(e)},o=function(r,e){for(var s,n,i=new Set,o=0,a=r;o<a.length;o++){var c=a[o];if(t(c.resourceId,e))for(var u=0,l=null!==(n=null===(s=c.role)||void 0===s?void 0:s.permissions)&&void 0!==n?n:[];u<l.length;u++){var d=l[u];i.add(d.name)}}return i},a=s(function(s,t){return{accessData:[],isLoading:!1,error:null,fetchPermissions:function(i,t){return r(void 0,void 0,void 0,function(){var r,o,a;return e(this,function(e){switch(e.label){case 0:if(!i)return[2];s({isLoading:!0,error:null}),e.label=1;case 1:return e.trys.push([1,3,,4]),[4,n.get("/users/me",{params:{appId:i,resourceId:t}})];case 2:return r=e.sent(),s({accessData:(null===(a=r.data)||void 0===a?void 0:a.data)||[],isLoading:!1}),[3,4];case 3:return o=e.sent(),console.error("Failed to fetch permissions:",o),s({error:o.message||"Failed to fetch permissions",isLoading:!1}),[3,4];case 4:return[2]}})})},hasPermission:function(r,e){var s,n=t().accessData,a=null===(s=i.getState().rbacConfig)||void 0===s?void 0:s.applicationResourceId;if(a&&o(n,a).has(r))return!0;if(e&&o(n,e).has(r))return!0;return!1},hasGlobalPermission:function(r,e){return!!e&&(t().hasApplicationAccess(e)||t().hasPermission(r,e))},hasApplicationAccess:function(r){if(!r)return!1;var e=t().accessData;return o(e,r).has("ilotj.scope.access.application.user.add")},reset:function(){return s({accessData:[],isLoading:!1,error:null})}}});export{a as usePermissionsStore};
|
|
2
2
|
//# sourceMappingURL=usePermissionsStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePermissionsStore.d.ts","sourceRoot":"","sources":["../../../../../../src/features/LearningManagement/store/usePermissionsStore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"usePermissionsStore.d.ts","sourceRoot":"","sources":["../../../../../../src/features/LearningManagement/store/usePermissionsStore.ts"],"names":[],"mappings":"AAMA,UAAU,UAAU;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,IAAI;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED,UAAU,UAAU;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,GAAG,CAAC;IAChB,YAAY,EAAE,GAAG,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;CACtB;AA0CD,UAAU,gBAAgB;IACxB,UAAU,EAAE,UAAU,EAAE,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,aAAa,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IACxE,mBAAmB,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7E,oBAAoB,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IACvD,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,eAAO,MAAM,mBAAmB,+EAqD7B,CAAC"}
|