UNPKG

react-antd-admin-panel

Version:

Modern TypeScript-first React admin panel builder with Ant Design 6

66 lines (65 loc) 2.56 kB
"use strict"; const React = require("react"); const MainContext = require("./MainContext-DBk-_ISe.cjs"); function useAccess() { const user = MainContext.useUser(); const hasRole = React.useCallback((role) => { return (user == null ? void 0 : user.role) === role; }, [user == null ? void 0 : user.role]); const hasAnyRole = React.useCallback((roles) => { if (!(user == null ? void 0 : user.role)) return false; return roles.includes(user.role); }, [user == null ? void 0 : user.role]); const hasPermission = React.useCallback((permission) => { var _a; return ((_a = user == null ? void 0 : user.permissions) == null ? void 0 : _a.includes(permission)) ?? false; }, [user == null ? void 0 : user.permissions]); const hasAllPermissions = React.useCallback((permissions) => { if (!(user == null ? void 0 : user.permissions)) return false; return permissions.every((p) => user.permissions.includes(p)); }, [user == null ? void 0 : user.permissions]); const hasAnyPermission = React.useCallback((permissions) => { if (!(user == null ? void 0 : user.permissions)) return false; return permissions.some((p) => user.permissions.includes(p)); }, [user == null ? void 0 : user.permissions]); const hasFeature = React.useCallback((feature, level = 1) => { if (!(user == null ? void 0 : user.features)) return false; const userLevel = user.features[feature]; if (userLevel === void 0) return false; return userLevel >= level; }, [user == null ? void 0 : user.features]); const canAccess = React.useCallback((check) => { if (!user) return false; if ("feature" in check) { return hasFeature(check.feature, check.level); } if ("role" in check) { return hasRole(check.role); } if ("roles" in check) { return hasAnyRole(check.roles); } if ("permission" in check) { return hasPermission(check.permission); } if ("permissions" in check) { return hasAllPermissions(check.permissions); } return false; }, [user, hasFeature, hasRole, hasAnyRole, hasPermission, hasAllPermissions]); const isAuthenticated = React.useMemo(() => user !== null, [user]); const currentRole = React.useMemo(() => user == null ? void 0 : user.role, [user == null ? void 0 : user.role]); return { canAccess, hasRole, hasAnyRole, hasPermission, hasAllPermissions, hasAnyPermission, hasFeature, isAuthenticated, currentRole }; } exports.useAccess = useAccess; //# sourceMappingURL=useAccess-Bu6PpWEB.cjs.map