@ra-libs/react-rbac
Version:
React admin RBAC front components and utils
26 lines • 1.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CASLProvider = CASLProvider;
const tslib_1 = require("tslib");
const ability_1 = require("@casl/ability");
const react_1 = tslib_1.__importStar(require("react"));
const Ability_1 = require("./Ability");
const Can_1 = require("./Can");
const CASLContext_1 = require("./CASLContext");
const utils_1 = require("./utils");
function CASLProvider(props) {
const { children } = props;
const [permissions, setPermissions] = (0, react_1.useState)([]);
const [rules, setRules] = (0, react_1.useState)([]);
const [ability, setAbility] = (0, react_1.useState)(new ability_1.Ability());
(0, react_1.useEffect)(() => {
const rules = (0, utils_1.createRules)(permissions);
setRules(rules);
}, [permissions]);
(0, react_1.useEffect)(() => {
setAbility((0, utils_1.createAbility)(rules));
}, [rules]);
return (react_1.default.createElement(CASLContext_1.CASLContext.Provider, { value: { ability, setPermissions, permissions, Can: Can_1.Can } },
react_1.default.createElement(Ability_1.AbilityProvider, null, children)));
}
//# sourceMappingURL=CASLProvider.js.map