infinity-forge
Version:
31 lines • 1.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.usePermission = usePermission;
exports.Permission = Permission;
var jsx_runtime_1 = require("react/jsx-runtime");
var context_1 = require("../../context.js");
function usePermission(props) {
var _a, _b, _c;
var _d = (0, context_1.useAuthAdmin)(), user = _d.user, roleUser = _d.roleUser;
var userRoles = Array.isArray(user === null || user === void 0 ? void 0 : user.roles) && (user === null || user === void 0 ? void 0 : user.roles.length) > 0 ? user === null || user === void 0 ? void 0 : user.roles : [roleUser];
var hasRolesProps = Array.isArray(props === null || props === void 0 ? void 0 : props.roles) && ((_a = props === null || props === void 0 ? void 0 : props.roles) === null || _a === void 0 ? void 0 : _a.length);
var hasClaimsProps = Array.isArray(props === null || props === void 0 ? void 0 : props.claims) && ((_b = props.claims) === null || _b === void 0 ? void 0 : _b.length);
var hasRole = hasRolesProps ? (_c = userRoles === null || userRoles === void 0 ? void 0 : userRoles.some(function (role) { return props.roles.includes(role); })) !== null && _c !== void 0 ? _c : false : true;
var hasClaim = hasClaimsProps ? props.claims.some(function (c) { return user === null || user === void 0 ? void 0 : user.claims.includes(c); }) : true;
var hasAccess = hasRolesProps && hasClaimsProps
? hasRole && hasClaim
: hasRolesProps
? hasRole
: hasClaimsProps
? hasClaim
: true;
return { hasAccess: hasAccess };
}
function Permission(props) {
var hasAccess = usePermission(props).hasAccess;
if (!hasAccess) {
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
}
return props.children;
}
//# sourceMappingURL=index.js.map