@iushev/react-rbac 1.0.38 → 1.0.39
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/lib/RbacContext.d.ts +3 -3
- package/lib/RbacContext.d.ts.map +1 -1
- package/lib/RbacContext.js +31 -27
- package/package.json +1 -1
- package/src/RbacContext.tsx +30 -25
package/lib/RbacContext.d.ts
CHANGED
|
@@ -13,7 +13,8 @@ export type RbacContextProps = {
|
|
|
13
13
|
rbac: RbacCheckAccess | null;
|
|
14
14
|
checkAccess: (options: CheckAccessOptions) => Promise<boolean>;
|
|
15
15
|
};
|
|
16
|
-
declare const RbacContext: React.Context<RbacContextProps>;
|
|
16
|
+
declare const RbacContext: React.Context<RbacContextProps | null>;
|
|
17
|
+
export declare const useRbac: () => RbacContextProps;
|
|
17
18
|
export type RbacProviderProps = {
|
|
18
19
|
username: string;
|
|
19
20
|
rbacUrl: string;
|
|
@@ -24,7 +25,6 @@ export type RbacProviderProps = {
|
|
|
24
25
|
children: React.ReactNode;
|
|
25
26
|
};
|
|
26
27
|
export declare const RbacProvider: React.FC<RbacProviderProps>;
|
|
27
|
-
export declare const RbacConsumer: React.Consumer<RbacContextProps>;
|
|
28
|
-
export declare const useRbac: () => RbacContextProps;
|
|
28
|
+
export declare const RbacConsumer: React.Consumer<RbacContextProps | null>;
|
|
29
29
|
export default RbacContext;
|
|
30
30
|
//# sourceMappingURL=RbacContext.d.ts.map
|
package/lib/RbacContext.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RbacContext.d.ts","sourceRoot":"","sources":["../src/RbacContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgE,MAAM,OAAO,CAAC;AAErF,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,MAAM,MAAM,kBAAkB,GAAG,MAAM,UAAU,CAAC;AAClD,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC;AAC1C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,UAAU,GAAG,kBAAkB,CAAC;IACzC,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,eAAe,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAChE,CAAC;AAEF,QAAA,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"RbacContext.d.ts","sourceRoot":"","sources":["../src/RbacContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgE,MAAM,OAAO,CAAC;AAErF,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,MAAM,MAAM,kBAAkB,GAAG,MAAM,UAAU,CAAC;AAClD,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC;AAC1C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,UAAU,GAAG,kBAAkB,CAAC;IACzC,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,eAAe,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAChE,CAAC;AAEF,QAAA,MAAM,WAAW,wCAAqD,CAAC;AAEvE,eAAO,MAAM,OAAO,QAAO,gBAM1B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAqFpD,CAAC;AAEF,eAAO,MAAM,YAAY,yCAAuB,CAAC;AAEjD,eAAe,WAAW,CAAC"}
|
package/lib/RbacContext.js
CHANGED
|
@@ -45,30 +45,42 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
45
45
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
46
46
|
};
|
|
47
47
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
-
exports.
|
|
48
|
+
exports.RbacConsumer = exports.RbacProvider = exports.useRbac = void 0;
|
|
49
49
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
50
50
|
const react_1 = __importStar(require("react"));
|
|
51
51
|
const RbacCheckAccess_1 = __importDefault(require("./RbacCheckAccess"));
|
|
52
|
-
const RbacContext = react_1.default.createContext(
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
52
|
+
const RbacContext = react_1.default.createContext(null);
|
|
53
|
+
const useRbac = () => {
|
|
54
|
+
const ctx = (0, react_1.useContext)(RbacContext);
|
|
55
|
+
if (!ctx) {
|
|
56
|
+
throw new Error("useRbac must be rendered under RbacProvider");
|
|
57
|
+
}
|
|
58
|
+
return ctx;
|
|
59
|
+
};
|
|
60
|
+
exports.useRbac = useRbac;
|
|
61
|
+
const RbacProvider = ({ username, rbacUrl, token, isSuperuser, isGuest, ruleClasses, children, }) => {
|
|
57
62
|
const [rbac, setRbac] = (0, react_1.useState)(null);
|
|
58
63
|
(0, react_1.useEffect)(() => {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
64
|
+
const initRbac = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
65
|
+
if (!token) {
|
|
66
|
+
setRbac(null);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
const _rbac = new RbacCheckAccess_1.default({
|
|
70
|
+
path: rbacUrl,
|
|
71
|
+
authorization: () => {
|
|
72
|
+
return token;
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
ruleClasses.forEach((RuleClass, ruleName) => {
|
|
76
|
+
_rbac.ruleClasses.set(ruleName, RuleClass);
|
|
77
|
+
});
|
|
78
|
+
yield _rbac.load();
|
|
79
|
+
setRbac(_rbac);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
initRbac();
|
|
83
|
+
}, [rbacUrl, token, ruleClasses]);
|
|
72
84
|
const matchRole = (0, react_1.useCallback)((roles, params) => __awaiter(void 0, void 0, void 0, function* () {
|
|
73
85
|
if (!roles || roles.length === 0) {
|
|
74
86
|
return true;
|
|
@@ -114,12 +126,4 @@ const RbacProvider = ({ username, rbacUrl, token, isSuperuser, isGuest, ruleClas
|
|
|
114
126
|
};
|
|
115
127
|
exports.RbacProvider = RbacProvider;
|
|
116
128
|
exports.RbacConsumer = RbacContext.Consumer;
|
|
117
|
-
const useRbac = () => {
|
|
118
|
-
const ctx = (0, react_1.useContext)(RbacContext);
|
|
119
|
-
if (!ctx) {
|
|
120
|
-
throw new Error("useRbac must be rendered under RbacProvider");
|
|
121
|
-
}
|
|
122
|
-
return ctx;
|
|
123
|
-
};
|
|
124
|
-
exports.useRbac = useRbac;
|
|
125
129
|
exports.default = RbacContext;
|
package/package.json
CHANGED
package/src/RbacContext.tsx
CHANGED
|
@@ -17,10 +17,15 @@ export type RbacContextProps = {
|
|
|
17
17
|
checkAccess: (options: CheckAccessOptions) => Promise<boolean>;
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
const RbacContext = React.createContext<RbacContextProps>(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
const RbacContext = React.createContext<RbacContextProps | null>(null);
|
|
21
|
+
|
|
22
|
+
export const useRbac = (): RbacContextProps => {
|
|
23
|
+
const ctx = useContext(RbacContext);
|
|
24
|
+
if (!ctx) {
|
|
25
|
+
throw new Error("useRbac must be rendered under RbacProvider");
|
|
26
|
+
}
|
|
27
|
+
return ctx;
|
|
28
|
+
};
|
|
24
29
|
|
|
25
30
|
export type RbacProviderProps = {
|
|
26
31
|
username: string;
|
|
@@ -38,24 +43,32 @@ export const RbacProvider: React.FC<RbacProviderProps> = ({
|
|
|
38
43
|
token,
|
|
39
44
|
isSuperuser,
|
|
40
45
|
isGuest,
|
|
41
|
-
ruleClasses
|
|
46
|
+
ruleClasses,
|
|
42
47
|
children,
|
|
43
48
|
}) => {
|
|
44
49
|
const [rbac, setRbac] = useState<RbacCheckAccess | null>(null);
|
|
45
50
|
|
|
46
51
|
useEffect(() => {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
52
|
+
const initRbac = async () => {
|
|
53
|
+
if (!token) {
|
|
54
|
+
setRbac(null);
|
|
55
|
+
} else {
|
|
56
|
+
const _rbac = new RbacCheckAccess({
|
|
57
|
+
path: rbacUrl,
|
|
58
|
+
authorization: () => {
|
|
59
|
+
return token;
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
ruleClasses.forEach((RuleClass, ruleName) => {
|
|
63
|
+
_rbac.ruleClasses.set(ruleName, RuleClass);
|
|
64
|
+
});
|
|
65
|
+
await _rbac.load();
|
|
66
|
+
setRbac(_rbac);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
initRbac();
|
|
71
|
+
}, [rbacUrl, token, ruleClasses]);
|
|
59
72
|
|
|
60
73
|
const matchRole = useCallback(
|
|
61
74
|
async (roles: string[], params: RuleParams | RuleParamsFunction) => {
|
|
@@ -113,12 +126,4 @@ export const RbacProvider: React.FC<RbacProviderProps> = ({
|
|
|
113
126
|
|
|
114
127
|
export const RbacConsumer = RbacContext.Consumer;
|
|
115
128
|
|
|
116
|
-
export const useRbac = (): RbacContextProps => {
|
|
117
|
-
const ctx = useContext(RbacContext);
|
|
118
|
-
if (!ctx) {
|
|
119
|
-
throw new Error("useRbac must be rendered under RbacProvider");
|
|
120
|
-
}
|
|
121
|
-
return ctx;
|
|
122
|
-
};
|
|
123
|
-
|
|
124
129
|
export default RbacContext;
|