@iushev/react-rbac 1.0.35 → 1.0.37
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/.vscode/settings.json +1 -1
- package/eslint.config.mjs +57 -0
- package/lib/RbacCheckAccess.d.ts +1 -1
- package/lib/RbacCheckAccess.d.ts.map +1 -1
- package/lib/RbacCheckAccess.js +2 -2
- package/lib/RbacContext.js +20 -10
- package/package.json +21 -21
- package/src/RbacCheckAccess.ts +2 -2
- package/src/RbacContext.tsx +3 -3
- package/.eslintignore +0 -2
- package/.eslintrc.js +0 -20
package/.vscode/settings.json
CHANGED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import typescriptEslint from "@typescript-eslint/eslint-plugin";
|
|
2
|
+
import prettier from "eslint-plugin-prettier";
|
|
3
|
+
import globals from "globals";
|
|
4
|
+
import tsParser from "@typescript-eslint/parser";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import { fileURLToPath } from "node:url";
|
|
7
|
+
import js from "@eslint/js";
|
|
8
|
+
import { FlatCompat } from "@eslint/eslintrc";
|
|
9
|
+
|
|
10
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
11
|
+
const __dirname = path.dirname(__filename);
|
|
12
|
+
const compat = new FlatCompat({
|
|
13
|
+
baseDirectory: __dirname,
|
|
14
|
+
recommendedConfig: js.configs.recommended,
|
|
15
|
+
allConfig: js.configs.all,
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
export default [
|
|
19
|
+
{
|
|
20
|
+
ignores: ["**/lib/", "**/node_modules/"],
|
|
21
|
+
},
|
|
22
|
+
...compat.extends("eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:prettier/recommended"),
|
|
23
|
+
{
|
|
24
|
+
plugins: {
|
|
25
|
+
"@typescript-eslint": typescriptEslint,
|
|
26
|
+
prettier,
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
languageOptions: {
|
|
30
|
+
globals: {
|
|
31
|
+
...globals.browser,
|
|
32
|
+
module: false,
|
|
33
|
+
},
|
|
34
|
+
|
|
35
|
+
parser: tsParser,
|
|
36
|
+
ecmaVersion: 12,
|
|
37
|
+
sourceType: "module",
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
rules: {
|
|
41
|
+
"@typescript-eslint/no-namespace": "off",
|
|
42
|
+
"@typescript-eslint/no-explicit-any": "off",
|
|
43
|
+
"@typescript-eslint/no-unused-vars": [
|
|
44
|
+
"error",
|
|
45
|
+
{
|
|
46
|
+
args: "all",
|
|
47
|
+
argsIgnorePattern: "^_",
|
|
48
|
+
caughtErrors: "all",
|
|
49
|
+
caughtErrorsIgnorePattern: "^_",
|
|
50
|
+
destructuredArrayIgnorePattern: "^_",
|
|
51
|
+
varsIgnorePattern: "^_",
|
|
52
|
+
ignoreRestSiblings: true,
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
];
|
package/lib/RbacCheckAccess.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export type RbacCheckAccessOptions = BaseCheckAccessOptions & {
|
|
|
5
5
|
authorization: () => string;
|
|
6
6
|
};
|
|
7
7
|
export default class RbacCheckAccess extends BaseCheckAccess {
|
|
8
|
-
private axiosInstance;
|
|
8
|
+
private readonly axiosInstance;
|
|
9
9
|
protected assignments: Map<string, Map<string, Assignment>>;
|
|
10
10
|
constructor(options: RbacCheckAccessOptions);
|
|
11
11
|
checkAccess(username: string, itemName: string, params: RuleParams): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RbacCheckAccess.d.ts","sourceRoot":"","sources":["../src/RbacCheckAccess.ts"],"names":[],"mappings":"AAAA,OAAc,EAAiB,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAGjE,OAAO,EACL,UAAU,EACV,eAAe,EACf,sBAAsB,EAOtB,UAAU,EACX,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,sBAAsB,GAAG,sBAAsB,GAAG;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,eAAe;IAC1D,OAAO,CAAC,aAAa,CAAgB;
|
|
1
|
+
{"version":3,"file":"RbacCheckAccess.d.ts","sourceRoot":"","sources":["../src/RbacCheckAccess.ts"],"names":[],"mappings":"AAAA,OAAc,EAAiB,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAGjE,OAAO,EACL,UAAU,EACV,eAAe,EACf,sBAAsB,EAOtB,UAAU,EACX,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,sBAAsB,GAAG,sBAAsB,GAAG;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,eAAe;IAC1D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAE9C,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAa;gBAE5D,OAAO,EAAE,sBAAsB;IAkB9B,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAQrF,IAAI,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB7D,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,cAAc;IA4BtB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,kBAAkB;CAa3B"}
|
package/lib/RbacCheckAccess.js
CHANGED
|
@@ -37,8 +37,8 @@ class RbacCheckAccess extends rbac_1.BaseCheckAccess {
|
|
|
37
37
|
const _super = Object.create(null, {
|
|
38
38
|
checkAccess: { get: () => super.checkAccess }
|
|
39
39
|
});
|
|
40
|
-
var _a;
|
|
41
40
|
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
+
var _a;
|
|
42
42
|
if (this.items.size === 0) {
|
|
43
43
|
yield this.load();
|
|
44
44
|
}
|
|
@@ -46,8 +46,8 @@ class RbacCheckAccess extends rbac_1.BaseCheckAccess {
|
|
|
46
46
|
});
|
|
47
47
|
}
|
|
48
48
|
load(config) {
|
|
49
|
-
var _a;
|
|
50
49
|
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
+
var _a;
|
|
51
51
|
let _rbac;
|
|
52
52
|
try {
|
|
53
53
|
console.log("Load RBAC");
|
package/lib/RbacContext.js
CHANGED
|
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
36
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
37
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -43,7 +53,7 @@ const RbacContext = react_1.default.createContext({
|
|
|
43
53
|
rbac: null,
|
|
44
54
|
checkAccess: () => __awaiter(void 0, void 0, void 0, function* () { return true; }),
|
|
45
55
|
});
|
|
46
|
-
const RbacProvider = ({ username, rbacUrl, token, isSuperuser, isGuest, ruleClasses, children, }) => {
|
|
56
|
+
const RbacProvider = ({ username, rbacUrl, token, isSuperuser, isGuest, ruleClasses: _ruleClasses, children, }) => {
|
|
47
57
|
const [rbac, setRbac] = (0, react_1.useState)(null);
|
|
48
58
|
(0, react_1.useEffect)(() => {
|
|
49
59
|
if (!token) {
|
|
@@ -91,7 +101,7 @@ const RbacProvider = ({ username, rbacUrl, token, isSuperuser, isGuest, ruleClas
|
|
|
91
101
|
}
|
|
92
102
|
return match();
|
|
93
103
|
}, []);
|
|
94
|
-
const checkAccess = (0, react_1.useCallback)(({ roles, allow = true, match, params = {} })
|
|
104
|
+
const checkAccess = (0, react_1.useCallback)((_a) => __awaiter(void 0, [_a], void 0, function* ({ roles, allow = true, match, params = {} }) {
|
|
95
105
|
return isSuperuser || ((yield matchRole(roles, params)) && matchCustom(match) && allow);
|
|
96
106
|
}), [isSuperuser, matchCustom, matchRole]);
|
|
97
107
|
const value = (0, react_1.useMemo)(() => {
|
|
@@ -100,7 +110,7 @@ const RbacProvider = ({ username, rbacUrl, token, isSuperuser, isGuest, ruleClas
|
|
|
100
110
|
checkAccess,
|
|
101
111
|
};
|
|
102
112
|
}, [rbac, checkAccess]);
|
|
103
|
-
return (0, jsx_runtime_1.jsx)(RbacContext.Provider,
|
|
113
|
+
return (0, jsx_runtime_1.jsx)(RbacContext.Provider, { value: value, children: children });
|
|
104
114
|
};
|
|
105
115
|
exports.RbacProvider = RbacProvider;
|
|
106
116
|
exports.RbacConsumer = RbacContext.Consumer;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@iushev/react-rbac",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.37",
|
|
4
4
|
"private": false,
|
|
5
5
|
"author": "Ivaylo Ushev",
|
|
6
6
|
"description": "",
|
|
@@ -14,33 +14,33 @@
|
|
|
14
14
|
"test": "jest --runInBand",
|
|
15
15
|
"test:watch": "jest --watchAll --runInBand",
|
|
16
16
|
"coverage": "jest --coverage --runInBand",
|
|
17
|
-
"lint": "eslint
|
|
17
|
+
"lint": "eslint src",
|
|
18
18
|
"preversion": "rimraf ./lib && npm run build"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"http-status-codes": "^2.
|
|
21
|
+
"http-status-codes": "^2.3.0"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@types/react": "^
|
|
25
|
-
"@types/react-dom": "^
|
|
26
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
27
|
-
"@typescript-eslint/parser": "^
|
|
28
|
-
"eslint": "^
|
|
29
|
-
"eslint-config-prettier": "^
|
|
30
|
-
"eslint-plugin-prettier": "^
|
|
31
|
-
"eslint-plugin-react": "^7.
|
|
32
|
-
"eslint-plugin-react-hooks": "^
|
|
33
|
-
"jest": "^29.
|
|
34
|
-
"prettier": "^
|
|
35
|
-
"rimraf": "^
|
|
36
|
-
"ts-jest": "^29.
|
|
37
|
-
"typescript": "^
|
|
24
|
+
"@types/react": "^19.0.2",
|
|
25
|
+
"@types/react-dom": "^19.0.2",
|
|
26
|
+
"@typescript-eslint/eslint-plugin": "^8.18.1",
|
|
27
|
+
"@typescript-eslint/parser": "^8.18.1",
|
|
28
|
+
"eslint": "^9.17.0",
|
|
29
|
+
"eslint-config-prettier": "^9.1.0",
|
|
30
|
+
"eslint-plugin-prettier": "^5.2.1",
|
|
31
|
+
"eslint-plugin-react": "^7.37.2",
|
|
32
|
+
"eslint-plugin-react-hooks": "^5.1.0",
|
|
33
|
+
"jest": "^29.7.0",
|
|
34
|
+
"prettier": "^3.4.2",
|
|
35
|
+
"rimraf": "^6.0.1",
|
|
36
|
+
"ts-jest": "^29.2.5",
|
|
37
|
+
"typescript": "^5.7.2"
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
40
|
-
"@iushev/rbac": "^1.0.
|
|
41
|
-
"axios": "^1.
|
|
42
|
-
"react": "^
|
|
43
|
-
"react-dom": "^
|
|
40
|
+
"@iushev/rbac": "^1.0.47",
|
|
41
|
+
"axios": "^1.7.9",
|
|
42
|
+
"react": "^17.0.0 || ^18.0.0 || ^19.0.0",
|
|
43
|
+
"react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
|
|
44
44
|
},
|
|
45
45
|
"publishConfig": {
|
|
46
46
|
"access": "public"
|
package/src/RbacCheckAccess.ts
CHANGED
|
@@ -20,7 +20,7 @@ export type RbacCheckAccessOptions = BaseCheckAccessOptions & {
|
|
|
20
20
|
};
|
|
21
21
|
|
|
22
22
|
export default class RbacCheckAccess extends BaseCheckAccess {
|
|
23
|
-
private axiosInstance: AxiosInstance;
|
|
23
|
+
private readonly axiosInstance: AxiosInstance;
|
|
24
24
|
|
|
25
25
|
protected assignments: Map<string, Map<string, Assignment>> = new Map();
|
|
26
26
|
|
|
@@ -84,7 +84,7 @@ export default class RbacCheckAccess extends BaseCheckAccess {
|
|
|
84
84
|
name,
|
|
85
85
|
description: item.description ?? null,
|
|
86
86
|
ruleName: item.ruleName ?? null,
|
|
87
|
-
})
|
|
87
|
+
}),
|
|
88
88
|
);
|
|
89
89
|
return prevValue;
|
|
90
90
|
}, new Map());
|
package/src/RbacContext.tsx
CHANGED
|
@@ -38,7 +38,7 @@ export const RbacProvider: React.FC<RbacProviderProps> = ({
|
|
|
38
38
|
token,
|
|
39
39
|
isSuperuser,
|
|
40
40
|
isGuest,
|
|
41
|
-
ruleClasses,
|
|
41
|
+
ruleClasses: _ruleClasses,
|
|
42
42
|
children,
|
|
43
43
|
}) => {
|
|
44
44
|
const [rbac, setRbac] = useState<RbacCheckAccess | null>(null);
|
|
@@ -84,7 +84,7 @@ export const RbacProvider: React.FC<RbacProviderProps> = ({
|
|
|
84
84
|
|
|
85
85
|
return false;
|
|
86
86
|
},
|
|
87
|
-
[isGuest, rbac, username]
|
|
87
|
+
[isGuest, rbac, username],
|
|
88
88
|
);
|
|
89
89
|
|
|
90
90
|
const matchCustom = useCallback((match?: MatchFunction) => {
|
|
@@ -98,7 +98,7 @@ export const RbacProvider: React.FC<RbacProviderProps> = ({
|
|
|
98
98
|
async ({ roles, allow = true, match, params = {} }: CheckAccessOptions) => {
|
|
99
99
|
return isSuperuser || ((await matchRole(roles, params)) && matchCustom(match) && allow);
|
|
100
100
|
},
|
|
101
|
-
[isSuperuser, matchCustom, matchRole]
|
|
101
|
+
[isSuperuser, matchCustom, matchRole],
|
|
102
102
|
);
|
|
103
103
|
|
|
104
104
|
const value = useMemo(() => {
|
package/.eslintignore
DELETED
package/.eslintrc.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
env: {
|
|
3
|
-
browser: true,
|
|
4
|
-
es2021: true,
|
|
5
|
-
},
|
|
6
|
-
extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:prettier/recommended"],
|
|
7
|
-
parser: "@typescript-eslint/parser",
|
|
8
|
-
parserOptions: {
|
|
9
|
-
ecmaVersion: 12,
|
|
10
|
-
sourceType: "module",
|
|
11
|
-
},
|
|
12
|
-
plugins: ["@typescript-eslint", "prettier"],
|
|
13
|
-
globals: {
|
|
14
|
-
module: false,
|
|
15
|
-
},
|
|
16
|
-
rules: {
|
|
17
|
-
"@typescript-eslint/no-namespace": "off",
|
|
18
|
-
"@typescript-eslint/no-explicit-any": "off",
|
|
19
|
-
},
|
|
20
|
-
};
|