react-antd-admin-panel
Version:
Modern TypeScript-first React admin panel builder with Ant Design 6
40 lines (39 loc) • 1.07 kB
JavaScript
import { jsx, Fragment } from "react/jsx-runtime";
import { u as useAccess } from "./useAccess-DsPOTmRD.js";
function AccessGuard({
children,
fallback = null,
role,
roles,
permission,
permissions,
feature,
level = 1,
requireAuth
}) {
const access = useAccess();
const needsAuth = requireAuth ?? (role !== void 0 || roles !== void 0 || permission !== void 0 || permissions !== void 0 || feature !== void 0);
if (needsAuth && !access.isAuthenticated) {
return fallback;
}
if (role !== void 0 && !access.hasRole(role)) {
return fallback;
}
if (roles !== void 0 && !access.hasAnyRole(roles)) {
return fallback;
}
if (permission !== void 0 && !access.hasPermission(permission)) {
return fallback;
}
if (permissions !== void 0 && !access.hasAllPermissions(permissions)) {
return fallback;
}
if (feature !== void 0 && !access.hasFeature(feature, level)) {
return fallback;
}
return /* @__PURE__ */ jsx(Fragment, { children });
}
export {
AccessGuard as A
};
//# sourceMappingURL=Protected-x1KgaSB5.js.map