@redhat-cloud-services/frontend-components-utilities 3.6.0 → 3.7.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/RBAC/RBAC.d.ts CHANGED
@@ -13,8 +13,8 @@ export interface RBAC {
13
13
  permissions: Access[];
14
14
  }
15
15
  export declare function getRBAC(applicationName?: string, disableCache?: boolean): Promise<RBAC>;
16
- export declare function doesHavePermissions(userPermissions: (Access | string)[], permissionList: (Access | string)[]): boolean;
17
- export declare function hasAllPermissions(userPermissions: (Access | string)[], permissionList: (Access | string)[]): boolean;
16
+ export declare function doesHavePermissions(userPermissions: (Access | string)[], permissionList: (Access | string)[], checkResourceDefinitions: boolean): boolean;
17
+ export declare function hasAllPermissions(userPermissions: (Access | string)[], permissionList: (Access | string)[], checkResourceDefinitions: boolean): boolean;
18
18
  export interface UsePermissionsState extends RBAC {
19
19
  isLoading: boolean;
20
20
  hasAccess?: boolean;
@@ -23,7 +23,7 @@ export interface UsePermissionsContextState {
23
23
  isLoading?: boolean;
24
24
  isOrgAdmin: boolean;
25
25
  permissions: (string | Access)[];
26
- hasAccess?: (requiredPermissions: string[], checkAll?: boolean) => boolean;
26
+ hasAccess?: (requiredPermissions: (Access | string)[], checkAll?: boolean) => boolean;
27
27
  }
28
28
  export declare const initialPermissions: UsePermissionsContextState;
29
29
  export declare const RBACContext: import("react").Context<UsePermissionsContextState>;
package/RBAC/RBAC.js CHANGED
@@ -35,9 +35,19 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
35
35
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
36
  }
37
37
  };
38
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
39
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
40
+ if (ar || !(i in from)) {
41
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
42
+ ar[i] = from[i];
43
+ }
44
+ }
45
+ return to.concat(ar || Array.prototype.slice.call(from));
46
+ };
38
47
  Object.defineProperty(exports, "__esModule", { value: true });
39
48
  exports.RBACContext = exports.initialPermissions = exports.hasAllPermissions = exports.doesHavePermissions = exports.getRBAC = void 0;
40
49
  var react_1 = require("react");
50
+ var rbac_client_1 = require("@redhat-cloud-services/rbac-client");
41
51
  function getRBAC(applicationName, disableCache) {
42
52
  var _a, _b, _c, _d, _e;
43
53
  if (applicationName === void 0) { applicationName = ''; }
@@ -66,34 +76,62 @@ exports.getRBAC = getRBAC;
66
76
  function isAccessType(permission) {
67
77
  return typeof permission === 'object';
68
78
  }
69
- function doesHavePermissions(userPermissions, permissionList) {
79
+ function extractResourceDefinitionValues(rds) {
80
+ return rds.reduce(function (acc, cur) {
81
+ var _a = cur.attributeFilter, key = _a.key, operation = _a.operation, value = _a.value;
82
+ if (operation === rbac_client_1.ResourceDefinitionFilterOperationEnum.In) {
83
+ return __spreadArray(__spreadArray([], acc, true), value.split(',').map(function (value) { return "".concat(key, ":").concat(value); }), true);
84
+ }
85
+ if (operation === rbac_client_1.ResourceDefinitionFilterOperationEnum.Equal) {
86
+ return __spreadArray(__spreadArray([], acc, true), ["".concat(key, ":").concat(value)], false);
87
+ }
88
+ throw new TypeError('Resource definition operation has incorrect format.');
89
+ }, []);
90
+ }
91
+ function verifyResourceDefinitions(userRds, requestedRds) {
92
+ var userValues = extractResourceDefinitionValues(userRds), requestedValues = extractResourceDefinitionValues(requestedRds);
93
+ return requestedValues.every(function (value) { return userValues.includes(value); });
94
+ }
95
+ function checkRequestedPermission(userPermissions, requestedPermission, checkResourceDefinitions) {
96
+ return userPermissions.some(function (userPermission) {
97
+ var requestedPermissionArray = (isAccessType(requestedPermission) ? requestedPermission.permission : requestedPermission).split(':');
98
+ var userPermissionArray = (isAccessType(userPermission) ? userPermission.permission : userPermission).split(':');
99
+ var matchesPermission = userPermissionArray.slice(0).reduce(function (acc, curr, index, array) {
100
+ if (acc === false) {
101
+ array.splice(index);
102
+ return acc;
103
+ }
104
+ return curr === '*' || curr === (requestedPermissionArray === null || requestedPermissionArray === void 0 ? void 0 : requestedPermissionArray[index]);
105
+ }, true);
106
+ if (checkResourceDefinitions === true && matchesPermission === true) {
107
+ if (isAccessType(userPermission)) {
108
+ if (userPermission.resourceDefinitions === undefined || userPermission.resourceDefinitions.length === 0) {
109
+ return true;
110
+ }
111
+ if (!isAccessType(requestedPermission) ||
112
+ userPermission.resourceDefinitions === undefined ||
113
+ requestedPermission.resourceDefinitions.length === 0) {
114
+ return false;
115
+ }
116
+ return verifyResourceDefinitions(userPermission.resourceDefinitions, requestedPermission.resourceDefinitions);
117
+ }
118
+ return true;
119
+ }
120
+ return matchesPermission;
121
+ });
122
+ }
123
+ function doesHavePermissions(userPermissions, permissionList, checkResourceDefinitions) {
70
124
  if (!userPermissions) {
71
125
  return false;
72
126
  }
73
- return userPermissions.some(function (access) {
74
- return permissionList.includes(isAccessType(access) ? access === null || access === void 0 ? void 0 : access.permission : access);
75
- });
127
+ return permissionList.some(function (permission) { return checkRequestedPermission(userPermissions, permission, checkResourceDefinitions); });
76
128
  }
77
129
  exports.doesHavePermissions = doesHavePermissions;
78
- function hasAllPermissions(userPermissions, permissionList) {
130
+ function hasAllPermissions(userPermissions, permissionList, checkResourceDefinitions) {
79
131
  if (!userPermissions) {
80
132
  return false;
81
133
  }
82
- return permissionList.every(function (permission) {
83
- return userPermissions.some(function (access) {
84
- var _a;
85
- var accessArray = ((_a = (isAccessType(access) ? access === null || access === void 0 ? void 0 : access.permission : access)) === null || _a === void 0 ? void 0 : _a.split(':')) || [];
86
- var permissionArray = permission.split(':');
87
- var hasAccess = accessArray.slice(0).reduce(function (acc, curr, index, array) {
88
- if (acc === false) {
89
- array.splice(index);
90
- return acc;
91
- }
92
- return curr === '*' || curr === (permissionArray === null || permissionArray === void 0 ? void 0 : permissionArray[index]);
93
- }, true);
94
- return hasAccess || accessArray.join(':') === permission;
95
- });
96
- });
134
+ return permissionList.every(function (permission) { return checkRequestedPermission(userPermissions, permission, checkResourceDefinitions); });
97
135
  }
98
136
  exports.hasAllPermissions = hasAllPermissions;
99
137
  exports.initialPermissions = {
package/RBAC/RBAC.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"RBAC.js","sourceRoot":"","sources":["../src/RBAC/RBAC.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RBAC.js","sourceRoot":"","sources":["../src/RBAC/RBAC.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { UsePermissionsState } from '../RBAC';
2
- export declare function usePermissions(appName: string, permissionsList: string[], disableCache?: boolean, checkAll?: boolean): UsePermissionsState;
3
- export declare const usePermissionsWithContext: (requiredPermissions: string[], checkAll?: boolean) => {
2
+ import { Access } from '@redhat-cloud-services/rbac-client';
3
+ export declare function usePermissions(appName: string, permissionsList: (Access | string)[], disableCache?: boolean, checkAll?: boolean, checkResourceDefinitions?: boolean): UsePermissionsState;
4
+ export declare const usePermissionsWithContext: (requiredPermissions: (Access | string)[], checkAll?: boolean) => {
4
5
  hasAccess: boolean;
5
6
  isLoading?: boolean | undefined;
6
7
  isOrgAdmin: boolean;
7
- permissions: (string | import("@redhat-cloud-services/rbac-client").Access)[];
8
+ permissions: (string | Access)[];
8
9
  };
9
10
  export default usePermissions;
@@ -61,8 +61,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
61
61
  exports.usePermissionsWithContext = exports.usePermissions = void 0;
62
62
  var react_1 = require("react");
63
63
  var RBAC_1 = require("../RBAC");
64
- function usePermissions(appName, permissionsList, disableCache, checkAll) {
64
+ function usePermissions(appName, permissionsList, disableCache, checkAll, checkResourceDefinitions) {
65
65
  var _this = this;
66
+ if (checkResourceDefinitions === void 0) { checkResourceDefinitions = false; }
66
67
  var _a = (0, react_1.useState)({
67
68
  isLoading: true,
68
69
  hasAccess: false,
@@ -84,7 +85,9 @@ function usePermissions(appName, permissionsList, disableCache, checkAll) {
84
85
  isLoading: false,
85
86
  isOrgAdmin: isOrgAdmin,
86
87
  permissions: userPermissions,
87
- hasAccess: checkAll ? (0, RBAC_1.hasAllPermissions)(userPermissions, permissionsList) : (0, RBAC_1.doesHavePermissions)(userPermissions, permissionsList),
88
+ hasAccess: checkAll
89
+ ? (0, RBAC_1.hasAllPermissions)(userPermissions, permissionsList, checkResourceDefinitions)
90
+ : (0, RBAC_1.doesHavePermissions)(userPermissions, permissionsList, checkResourceDefinitions),
88
91
  });
89
92
  return [2];
90
93
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RBACHook.js","sourceRoot":"","sources":["../src/RBACHook/RBACHook.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAwD;AACxD,gCAA4G;AAE5G,SAAgB,cAAc,CAAC,OAAe,EAAE,eAAyB,EAAE,YAAsB,EAAE,QAAkB;IAArH,iBA2BC;IA1BO,IAAA,KAAgC,IAAA,gBAAQ,EAAsB;QAClE,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,EAAE;KAChB,CAAC,EALK,WAAW,QAAA,EAAE,cAAc,QAKhC,CAAC;IACH,IAAA,iBAAS,EAAC;QACR,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,cAAc,CAAC,UAAC,IAAI,IAAK,OAAA,uBAAM,IAAI,KAAE,SAAS,EAAE,IAAI,IAAG,EAA9B,CAA8B,CAAC,CAAC;QACzD,CAAC;;;;4BACsD,WAAM,IAAA,cAAO,EAAC,OAAO,EAAE,YAAY,CAAC,EAAA;;wBAAnF,KAA+C,SAAoC,EAAjF,UAAU,gBAAA,EAAe,eAAe,iBAAA;wBAChD,CAAC,MAAM;4BACL,cAAc,CAAC;gCACb,SAAS,EAAE,KAAK;gCAChB,UAAU,YAAA;gCACV,WAAW,EAAE,eAAe;gCAC5B,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAA,wBAAiB,EAAC,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,IAAA,0BAAmB,EAAC,eAAe,EAAE,eAAe,CAAC;6BAClI,CAAC,CAAC;;;;aACN,CAAC,EAAE,CAAC;QAEL,OAAO;YACL,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAE5B,OAAO,WAAW,CAAC;AACrB,CAAC;AA3BD,wCA2BC;AAEM,IAAM,yBAAyB,GAAG,UAAC,mBAA6B,EAAE,QAAkB;IACzF,IAAM,KAAoC,IAAA,kBAAU,EAAC,kBAAW,CAAC,EAAzD,SAAS,eAAA,EAAK,eAAe,cAA/B,aAAiC,CAA0B,CAAC;IAElE,6BACK,eAAe,KAClB,SAAS,EAAE,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAG,mBAAmB,EAAE,QAAQ,CAAC,KAAI,KAAK,IAC9D;AACJ,CAAC,CAAC;AAPW,QAAA,yBAAyB,6BAOpC;AAEF,kBAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"RBACHook.js","sourceRoot":"","sources":["../src/RBACHook/RBACHook.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAwD;AACxD,gCAA4G;AAG5G,SAAgB,cAAc,CAC5B,OAAe,EACf,eAAoC,EACpC,YAAsB,EACtB,QAAkB,EAClB,wBAAgC;IALlC,iBAmCC;IA9BC,yCAAA,EAAA,gCAAgC;IAE1B,IAAA,KAAgC,IAAA,gBAAQ,EAAsB;QAClE,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,EAAE;KAChB,CAAC,EALK,WAAW,QAAA,EAAE,cAAc,QAKhC,CAAC;IACH,IAAA,iBAAS,EAAC;QACR,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,cAAc,CAAC,UAAC,IAAI,IAAK,OAAA,uBAAM,IAAI,KAAE,SAAS,EAAE,IAAI,IAAG,EAA9B,CAA8B,CAAC,CAAC;QACzD,CAAC;;;;4BACsD,WAAM,IAAA,cAAO,EAAC,OAAO,EAAE,YAAY,CAAC,EAAA;;wBAAnF,KAA+C,SAAoC,EAAjF,UAAU,gBAAA,EAAe,eAAe,iBAAA;wBAChD,CAAC,MAAM;4BACL,cAAc,CAAC;gCACb,SAAS,EAAE,KAAK;gCAChB,UAAU,YAAA;gCACV,WAAW,EAAE,eAAe;gCAC5B,SAAS,EAAE,QAAQ;oCACjB,CAAC,CAAC,IAAA,wBAAiB,EAAC,eAAe,EAAE,eAAe,EAAE,wBAAwB,CAAC;oCAC/E,CAAC,CAAC,IAAA,0BAAmB,EAAC,eAAe,EAAE,eAAe,EAAE,wBAAwB,CAAC;6BACpF,CAAC,CAAC;;;;aACN,CAAC,EAAE,CAAC;QAEL,OAAO;YACL,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAE5B,OAAO,WAAW,CAAC;AACrB,CAAC;AAnCD,wCAmCC;AAEM,IAAM,yBAAyB,GAAG,UAAC,mBAAwC,EAAE,QAAkB;IACpG,IAAM,KAAoC,IAAA,kBAAU,EAAC,kBAAW,CAAC,EAAzD,SAAS,eAAA,EAAK,eAAe,cAA/B,aAAiC,CAA0B,CAAC;IAElE,6BACK,eAAe,KAClB,SAAS,EAAE,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAG,mBAAmB,EAAE,QAAQ,CAAC,KAAI,KAAK,IAC9D;AACJ,CAAC,CAAC;AAPW,QAAA,yBAAyB,6BAOpC;AAEF,kBAAe,cAAc,CAAC"}
package/README.md CHANGED
@@ -80,6 +80,7 @@ import parseCvssScore from '@redhat-cloud-services/frontend-components-utilities
80
80
  * [routerParams](doc/routerParams.md)
81
81
  * [debounce](doc/debounce.md)
82
82
  * [cypress](doc/Cypress.md)
83
+ * [RBAC](doc/RBAC.md)
83
84
 
84
85
  Additionaly it exports these utilities
85
86
  * AsyncComponent - class to load component via async calls
package/esm/RBAC/RBAC.js CHANGED
@@ -34,7 +34,17 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
34
34
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
35
  }
36
36
  };
37
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
38
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
39
+ if (ar || !(i in from)) {
40
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
41
+ ar[i] = from[i];
42
+ }
43
+ }
44
+ return to.concat(ar || Array.prototype.slice.call(from));
45
+ };
37
46
  import { createContext } from 'react';
47
+ import { ResourceDefinitionFilterOperationEnum } from '@redhat-cloud-services/rbac-client';
38
48
  export function getRBAC(applicationName, disableCache) {
39
49
  var _a, _b, _c, _d, _e;
40
50
  if (applicationName === void 0) { applicationName = ''; }
@@ -62,33 +72,61 @@ export function getRBAC(applicationName, disableCache) {
62
72
  function isAccessType(permission) {
63
73
  return typeof permission === 'object';
64
74
  }
65
- export function doesHavePermissions(userPermissions, permissionList) {
75
+ function extractResourceDefinitionValues(rds) {
76
+ return rds.reduce(function (acc, cur) {
77
+ var _a = cur.attributeFilter, key = _a.key, operation = _a.operation, value = _a.value;
78
+ if (operation === ResourceDefinitionFilterOperationEnum.In) {
79
+ return __spreadArray(__spreadArray([], acc, true), value.split(',').map(function (value) { return "".concat(key, ":").concat(value); }), true);
80
+ }
81
+ if (operation === ResourceDefinitionFilterOperationEnum.Equal) {
82
+ return __spreadArray(__spreadArray([], acc, true), ["".concat(key, ":").concat(value)], false);
83
+ }
84
+ throw new TypeError('Resource definition operation has incorrect format.');
85
+ }, []);
86
+ }
87
+ function verifyResourceDefinitions(userRds, requestedRds) {
88
+ var userValues = extractResourceDefinitionValues(userRds), requestedValues = extractResourceDefinitionValues(requestedRds);
89
+ return requestedValues.every(function (value) { return userValues.includes(value); });
90
+ }
91
+ function checkRequestedPermission(userPermissions, requestedPermission, checkResourceDefinitions) {
92
+ return userPermissions.some(function (userPermission) {
93
+ var requestedPermissionArray = (isAccessType(requestedPermission) ? requestedPermission.permission : requestedPermission).split(':');
94
+ var userPermissionArray = (isAccessType(userPermission) ? userPermission.permission : userPermission).split(':');
95
+ var matchesPermission = userPermissionArray.slice(0).reduce(function (acc, curr, index, array) {
96
+ if (acc === false) {
97
+ array.splice(index);
98
+ return acc;
99
+ }
100
+ return curr === '*' || curr === (requestedPermissionArray === null || requestedPermissionArray === void 0 ? void 0 : requestedPermissionArray[index]);
101
+ }, true);
102
+ if (checkResourceDefinitions === true && matchesPermission === true) {
103
+ if (isAccessType(userPermission)) {
104
+ if (userPermission.resourceDefinitions === undefined || userPermission.resourceDefinitions.length === 0) {
105
+ return true;
106
+ }
107
+ if (!isAccessType(requestedPermission) ||
108
+ userPermission.resourceDefinitions === undefined ||
109
+ requestedPermission.resourceDefinitions.length === 0) {
110
+ return false;
111
+ }
112
+ return verifyResourceDefinitions(userPermission.resourceDefinitions, requestedPermission.resourceDefinitions);
113
+ }
114
+ return true;
115
+ }
116
+ return matchesPermission;
117
+ });
118
+ }
119
+ export function doesHavePermissions(userPermissions, permissionList, checkResourceDefinitions) {
66
120
  if (!userPermissions) {
67
121
  return false;
68
122
  }
69
- return userPermissions.some(function (access) {
70
- return permissionList.includes(isAccessType(access) ? access === null || access === void 0 ? void 0 : access.permission : access);
71
- });
123
+ return permissionList.some(function (permission) { return checkRequestedPermission(userPermissions, permission, checkResourceDefinitions); });
72
124
  }
73
- export function hasAllPermissions(userPermissions, permissionList) {
125
+ export function hasAllPermissions(userPermissions, permissionList, checkResourceDefinitions) {
74
126
  if (!userPermissions) {
75
127
  return false;
76
128
  }
77
- return permissionList.every(function (permission) {
78
- return userPermissions.some(function (access) {
79
- var _a;
80
- var accessArray = ((_a = (isAccessType(access) ? access === null || access === void 0 ? void 0 : access.permission : access)) === null || _a === void 0 ? void 0 : _a.split(':')) || [];
81
- var permissionArray = permission.split(':');
82
- var hasAccess = accessArray.slice(0).reduce(function (acc, curr, index, array) {
83
- if (acc === false) {
84
- array.splice(index);
85
- return acc;
86
- }
87
- return curr === '*' || curr === (permissionArray === null || permissionArray === void 0 ? void 0 : permissionArray[index]);
88
- }, true);
89
- return hasAccess || accessArray.join(':') === permission;
90
- });
91
- });
129
+ return permissionList.every(function (permission) { return checkRequestedPermission(userPermissions, permission, checkResourceDefinitions); });
92
130
  }
93
131
  export var initialPermissions = {
94
132
  isLoading: true,
@@ -1 +1 @@
1
- {"version":3,"file":"RBAC.js","sourceRoot":"","sources":["../../src/RBAC/RBAC.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RBAC.js","sourceRoot":"","sources":["../../src/RBAC/RBAC.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAA8B,qCAAqC,EAAE,MAAM,oCAAoC,CAAC;AAgBvH,MAAM,UAAgB,OAAO,CAAC,eAAoB,EAAE,YAAoB;;IAA1C,gCAAA,EAAA,oBAAoB;IAAE,6BAAA,EAAA,oBAAoB;;;;;;;oBAChE,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;oBACpB,WAAM,CAAA,MAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,0CAAE,IAAI,0CAAE,OAAO,EAAE,CAAA,EAAA;;oBAA9C,IAAI,GAAG,SAAuC;;wBAGlD,UAAU,EAAE,CAAA,MAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,0CAAE,IAAI,0CAAE,YAAY,KAAI,KAAK;;oBACzC,WAAM,CAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,0CAAE,kBAAkB,CAAC,eAAe,EAAE,YAAY,CAAC,CAAA,EAAA;wBAHzF,YAGE,cAAW,GAAE,CAAC,SAAyE,CAAC,IAAI,IAAI;6BAChG;;;;CACH;AAED,SAAS,YAAY,CAAC,UAA2B;IAC/C,OAAO,OAAO,UAAU,KAAK,QAAQ,CAAC;AACxC,CAAC;AAED,SAAS,+BAA+B,CAAC,GAAyB;IAChE,OAAO,GAAG,CAAC,MAAM,CAAC,UAAC,GAAa,EAAE,GAAuB;QACjD,IAAA,KAA4B,GAAG,CAAC,eAAe,EAA7C,GAAG,SAAA,EAAE,SAAS,eAAA,EAAE,KAAK,WAAwB,CAAC;QAEtD,IAAI,SAAS,KAAK,qCAAqC,CAAC,EAAE,EAAE;YAC1D,uCAAW,GAAG,SAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA,UAAG,GAAG,cAAI,KAAK,CAAE,EAAjB,CAAiB,CAAC,QAAE;SACxE;QAED,IAAI,SAAS,KAAK,qCAAqC,CAAC,KAAK,EAAE;YAC7D,uCAAW,GAAG,UAAE,UAAG,GAAG,cAAI,KAAK,CAAE,UAAE;SACpC;QAED,MAAM,IAAI,SAAS,CAAC,qDAAqD,CAAC,CAAC;IAC7E,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AAED,SAAS,yBAAyB,CAAC,OAA6B,EAAE,YAAkC;IAClG,IAAM,UAAU,GAAG,+BAA+B,CAAC,OAAO,CAAC,EACzD,eAAe,GAAG,+BAA+B,CAAC,YAAY,CAAC,CAAC;IAElE,OAAO,eAAe,CAAC,KAAK,CAAC,UAAC,KAAK,IAAK,OAAA,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAA1B,CAA0B,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,wBAAwB,CAC/B,eAAoC,EACpC,mBAAoC,EACpC,wBAAiC;IAEjC,OAAO,eAAe,CAAC,IAAI,CAAC,UAAC,cAA+B;QAC1D,IAAM,wBAAwB,GAAG,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvI,IAAM,mBAAmB,GAAG,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEnH,IAAM,iBAAiB,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK;YACpF,IAAI,GAAG,KAAK,KAAK,EAAE;gBACjB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACpB,OAAO,GAAG,CAAC;aACZ;YAED,OAAO,IAAI,KAAK,GAAG,IAAI,IAAI,MAAK,wBAAwB,aAAxB,wBAAwB,uBAAxB,wBAAwB,CAAG,KAAK,CAAC,CAAA,CAAC;QACpE,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,IAAI,wBAAwB,KAAK,IAAI,IAAI,iBAAiB,KAAK,IAAI,EAAE;YACnE,IAAI,YAAY,CAAC,cAAc,CAAC,EAAE;gBAChC,IAAI,cAAc,CAAC,mBAAmB,KAAK,SAAS,IAAI,cAAc,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE;oBACvG,OAAO,IAAI,CAAC;iBACb;gBAED,IACE,CAAC,YAAY,CAAC,mBAAmB,CAAC;oBAClC,cAAc,CAAC,mBAAmB,KAAK,SAAS;oBAChD,mBAAmB,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC,EACpD;oBACA,OAAO,KAAK,CAAC;iBACd;gBAED,OAAO,yBAAyB,CAAC,cAAc,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;aAC/G;YAED,OAAO,IAAI,CAAC;SACb;QAED,OAAO,iBAAiB,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC;AAGD,MAAM,UAAU,mBAAmB,CACjC,eAAoC,EACpC,cAAmC,EACnC,wBAAiC;IAEjC,IAAI,CAAC,eAAe,EAAE;QACpB,OAAO,KAAK,CAAC;KACd;IAED,OAAO,cAAc,CAAC,IAAI,CAAC,UAAC,UAAU,IAAK,OAAA,wBAAwB,CAAC,eAAe,EAAE,UAAU,EAAE,wBAAwB,CAAC,EAA/E,CAA+E,CAAC,CAAC;AAC9H,CAAC;AAGD,MAAM,UAAU,iBAAiB,CAC/B,eAAoC,EACpC,cAAmC,EACnC,wBAAiC;IAEjC,IAAI,CAAC,eAAe,EAAE;QACpB,OAAO,KAAK,CAAC;KACd;IAED,OAAO,cAAc,CAAC,KAAK,CAAC,UAAC,UAAU,IAAK,OAAA,wBAAwB,CAAC,eAAe,EAAE,UAAU,EAAE,wBAAwB,CAAC,EAA/E,CAA+E,CAAC,CAAC;AAC/H,CAAC;AAcD,MAAM,CAAC,IAAM,kBAAkB,GAA+B;IAC5D,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,KAAK;IACjB,WAAW,EAAE,EAAE;CAChB,CAAC;AAEF,MAAM,CAAC,IAAM,WAAW,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAAC;AAE7D,eAAe,OAAO,CAAC"}
@@ -58,8 +58,9 @@ var __rest = (this && this.__rest) || function (s, e) {
58
58
  };
59
59
  import { useContext, useEffect, useState } from 'react';
60
60
  import { RBACContext, doesHavePermissions, getRBAC, hasAllPermissions } from '../RBAC';
61
- export function usePermissions(appName, permissionsList, disableCache, checkAll) {
61
+ export function usePermissions(appName, permissionsList, disableCache, checkAll, checkResourceDefinitions) {
62
62
  var _this = this;
63
+ if (checkResourceDefinitions === void 0) { checkResourceDefinitions = false; }
63
64
  var _a = useState({
64
65
  isLoading: true,
65
66
  hasAccess: false,
@@ -81,7 +82,9 @@ export function usePermissions(appName, permissionsList, disableCache, checkAll)
81
82
  isLoading: false,
82
83
  isOrgAdmin: isOrgAdmin,
83
84
  permissions: userPermissions,
84
- hasAccess: checkAll ? hasAllPermissions(userPermissions, permissionsList) : doesHavePermissions(userPermissions, permissionsList),
85
+ hasAccess: checkAll
86
+ ? hasAllPermissions(userPermissions, permissionsList, checkResourceDefinitions)
87
+ : doesHavePermissions(userPermissions, permissionsList, checkResourceDefinitions),
85
88
  });
86
89
  return [2];
87
90
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RBACHook.js","sourceRoot":"","sources":["../../src/RBACHook/RBACHook.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,EAAE,WAAW,EAAuB,mBAAmB,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5G,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,eAAyB,EAAE,YAAsB,EAAE,QAAkB;IAArH,iBA2BC;IA1BO,IAAA,KAAgC,QAAQ,CAAsB;QAClE,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,EAAE;KAChB,CAAC,EALK,WAAW,QAAA,EAAE,cAAc,QAKhC,CAAC;IACH,SAAS,CAAC;QACR,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,cAAc,CAAC,UAAC,IAAI,IAAK,OAAA,uBAAM,IAAI,KAAE,SAAS,EAAE,IAAI,IAAG,EAA9B,CAA8B,CAAC,CAAC;QACzD,CAAC;;;;4BACsD,WAAM,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,EAAA;;wBAAnF,KAA+C,SAAoC,EAAjF,UAAU,gBAAA,EAAe,eAAe,iBAAA;wBAChD,CAAC,MAAM;4BACL,cAAc,CAAC;gCACb,SAAS,EAAE,KAAK;gCAChB,UAAU,YAAA;gCACV,WAAW,EAAE,eAAe;gCAC5B,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,eAAe,EAAE,eAAe,CAAC;6BAClI,CAAC,CAAC;;;;aACN,CAAC,EAAE,CAAC;QAEL,OAAO;YACL,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAE5B,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,IAAM,yBAAyB,GAAG,UAAC,mBAA6B,EAAE,QAAkB;IACzF,IAAM,KAAoC,UAAU,CAAC,WAAW,CAAC,EAAzD,SAAS,eAAA,EAAK,eAAe,cAA/B,aAAiC,CAA0B,CAAC;IAElE,6BACK,eAAe,KAClB,SAAS,EAAE,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAG,mBAAmB,EAAE,QAAQ,CAAC,KAAI,KAAK,IAC9D;AACJ,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"RBACHook.js","sourceRoot":"","sources":["../../src/RBACHook/RBACHook.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,EAAE,WAAW,EAAuB,mBAAmB,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAG5G,MAAM,UAAU,cAAc,CAC5B,OAAe,EACf,eAAoC,EACpC,YAAsB,EACtB,QAAkB,EAClB,wBAAgC;IALlC,iBAmCC;IA9BC,yCAAA,EAAA,gCAAgC;IAE1B,IAAA,KAAgC,QAAQ,CAAsB;QAClE,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,EAAE;KAChB,CAAC,EALK,WAAW,QAAA,EAAE,cAAc,QAKhC,CAAC;IACH,SAAS,CAAC;QACR,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,cAAc,CAAC,UAAC,IAAI,IAAK,OAAA,uBAAM,IAAI,KAAE,SAAS,EAAE,IAAI,IAAG,EAA9B,CAA8B,CAAC,CAAC;QACzD,CAAC;;;;4BACsD,WAAM,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,EAAA;;wBAAnF,KAA+C,SAAoC,EAAjF,UAAU,gBAAA,EAAe,eAAe,iBAAA;wBAChD,CAAC,MAAM;4BACL,cAAc,CAAC;gCACb,SAAS,EAAE,KAAK;gCAChB,UAAU,YAAA;gCACV,WAAW,EAAE,eAAe;gCAC5B,SAAS,EAAE,QAAQ;oCACjB,CAAC,CAAC,iBAAiB,CAAC,eAAe,EAAE,eAAe,EAAE,wBAAwB,CAAC;oCAC/E,CAAC,CAAC,mBAAmB,CAAC,eAAe,EAAE,eAAe,EAAE,wBAAwB,CAAC;6BACpF,CAAC,CAAC;;;;aACN,CAAC,EAAE,CAAC;QAEL,OAAO;YACL,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAE5B,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,IAAM,yBAAyB,GAAG,UAAC,mBAAwC,EAAE,QAAkB;IACpG,IAAM,KAAoC,UAAU,CAAC,WAAW,CAAC,EAAzD,SAAS,eAAA,EAAK,eAAe,cAA/B,aAAiC,CAA0B,CAAC;IAElE,6BACK,eAAe,KAClB,SAAS,EAAE,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAG,mBAAmB,EAAE,QAAQ,CAAC,KAAI,KAAK,IAC9D;AACJ,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redhat-cloud-services/frontend-components-utilities",
3
- "version": "3.6.0",
3
+ "version": "3.7.0",
4
4
  "description": "Util functions for RedHat Cloud Services project.",
5
5
  "main": "index.js",
6
6
  "module": "esm/index.js",