import { Badge, Container, Heading, Text } from "@medusajs/ui" import { useTranslation } from "react-i18next" import { useRequiredPermissions } from "../../../providers/permissions-provider" import { useFeatureFlag } from "../../../providers/feature-flag-provider" /** * Reads the permission requirements that descendant components (typically * `PermissionGuard`, `RoutePermissionGuard`, or `PermissionsRequirement`) * have registered with the nearest `PermissionsRequirementsProvider`, and * renders them as a labelled summary. When no requirements are registered, * it renders a "no permissions required" state so the panel is informative * either way. */ export const RequiredPermissionsSection = () => { const { t } = useTranslation() const isRbacEnabled = useFeatureFlag("rbac") const requirements = useRequiredPermissions() if (!isRbacEnabled) { return null } if (!requirements.length) { return ( {t("permissions.requiredPermissions.title")} {t("permissions.requiredPermissions.none")} ) } return (
{t("permissions.requiredPermissions.title")} {requirements.length}
{requirements.map((requirement) => { const key = [ requirement.requireAll ? "all" : "any", requirement.permissions.join("|"), requirement.source || "", ].join("::") return (
{requirement.requireAll ? t("permissions.requiredPermissions.allOf") : t("permissions.requiredPermissions.anyOf")}
{requirement.permissions.map((permission) => ( {permission} ))}
{requirement.source && ( {t("permissions.requiredPermissions.source", { source: requirement.source, })} )}
) })}
) }