@strapi/admin 5.49.0 → 5.50.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/admin/src/components/ConfirmDialog.js +2 -2
- package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
- package/dist/admin/admin/src/components/ContentBox.js +3 -3
- package/dist/admin/admin/src/components/ContentBox.js.map +1 -1
- package/dist/admin/admin/src/components/DescriptionComponentRenderer.js +8 -8
- package/dist/admin/admin/src/components/DescriptionComponentRenderer.js.map +1 -1
- package/dist/admin/admin/src/components/DescriptionComponentRenderer.mjs +8 -8
- package/dist/admin/admin/src/components/DescriptionComponentRenderer.mjs.map +1 -1
- package/dist/admin/admin/src/components/ErrorElement.js +100 -5
- package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
- package/dist/admin/admin/src/components/ErrorElement.mjs +99 -4
- package/dist/admin/admin/src/components/ErrorElement.mjs.map +1 -1
- package/dist/admin/admin/src/components/Form.js +41 -27
- package/dist/admin/admin/src/components/Form.js.map +1 -1
- package/dist/admin/admin/src/components/Form.mjs +41 -27
- package/dist/admin/admin/src/components/Form.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Boolean.js +3 -2
- package/dist/admin/admin/src/components/FormInputs/Boolean.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Boolean.mjs +3 -2
- package/dist/admin/admin/src/components/FormInputs/Boolean.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Date.js +1 -1
- package/dist/admin/admin/src/components/FormInputs/Date.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Date.mjs +1 -1
- package/dist/admin/admin/src/components/FormInputs/Date.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Email.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Email.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.js +4 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs +4 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Json.js +2 -1
- package/dist/admin/admin/src/components/FormInputs/Json.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Json.mjs +2 -1
- package/dist/admin/admin/src/components/FormInputs/Json.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Password.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Password.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Renderer.js +18 -26
- package/dist/admin/admin/src/components/FormInputs/Renderer.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Renderer.mjs +20 -28
- package/dist/admin/admin/src/components/FormInputs/Renderer.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/String.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/String.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Textarea.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Textarea.mjs.map +1 -1
- package/dist/admin/admin/src/components/GapDropZone.js +2 -2
- package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
- package/dist/admin/admin/src/components/GradientBadge.js +3 -3
- package/dist/admin/admin/src/components/GradientBadge.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.js +8 -8
- package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js +4 -4
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.js +2 -2
- package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/ActionLayout.js +2 -2
- package/dist/admin/admin/src/components/Layouts/ActionLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/GridLayout.js +2 -2
- package/dist/admin/admin/src/components/Layouts/GridLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/Layout.js +4 -4
- package/dist/admin/admin/src/components/Layouts/Layout.js.map +1 -1
- package/dist/admin/admin/src/components/LazyOutlet.js +57 -0
- package/dist/admin/admin/src/components/LazyOutlet.js.map +1 -0
- package/dist/admin/admin/src/components/LazyOutlet.mjs +35 -0
- package/dist/admin/admin/src/components/LazyOutlet.mjs.map +1 -0
- package/dist/admin/admin/src/components/LeftMenu.js +3 -3
- package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNav.js +2 -2
- package/dist/admin/admin/src/components/MainNav/MainNav.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.js +4 -4
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavBrand.js +2 -2
- package/dist/admin/admin/src/components/MainNav/NavBrand.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js +3 -3
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavLink.js +8 -8
- package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavUser.js +17 -7
- package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavUser.mjs +10 -0
- package/dist/admin/admin/src/components/MainNav/NavUser.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.js +3 -3
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.js.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.js +2 -2
- package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
- package/dist/admin/admin/src/components/RelativeTime.js +3 -2
- package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
- package/dist/admin/admin/src/components/RelativeTime.mjs +3 -2
- package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
- package/dist/admin/admin/src/components/ResizeIndicator.js +6 -6
- package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
- package/dist/admin/admin/src/components/SubNav.js +11 -9
- package/dist/admin/admin/src/components/SubNav.js.map +1 -1
- package/dist/admin/admin/src/components/SubNav.mjs +4 -2
- package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
- package/dist/admin/admin/src/components/Table.js +9 -5
- package/dist/admin/admin/src/components/Table.js.map +1 -1
- package/dist/admin/admin/src/components/Table.mjs +6 -2
- package/dist/admin/admin/src/components/Table.mjs.map +1 -1
- package/dist/admin/admin/src/components/Theme.js +2 -2
- package/dist/admin/admin/src/components/Theme.js.map +1 -1
- package/dist/admin/admin/src/components/UnauthenticatedLogo.js +2 -2
- package/dist/admin/admin/src/components/UnauthenticatedLogo.js.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.js +3 -3
- package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
- package/dist/admin/admin/src/components/WidgetRoot.js +4 -7
- package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
- package/dist/admin/admin/src/components/WidgetRoot.mjs +1 -1
- package/dist/admin/admin/src/components/WidgetRoot.mjs.map +1 -1
- package/dist/admin/admin/src/components/Widgets.js +5 -5
- package/dist/admin/admin/src/components/Widgets.js.map +1 -1
- package/dist/admin/admin/src/core/apis/Plugin.js.map +1 -1
- package/dist/admin/admin/src/core/apis/Plugin.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.js +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.mjs +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/router.js +19 -17
- package/dist/admin/admin/src/core/apis/router.js.map +1 -1
- package/dist/admin/admin/src/core/apis/router.mjs +19 -17
- package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
- package/dist/admin/admin/src/core/store/configure.js.map +1 -1
- package/dist/admin/admin/src/core/store/configure.mjs.map +1 -1
- package/dist/admin/admin/src/core/utils/createHook.js.map +1 -1
- package/dist/admin/admin/src/core/utils/createHook.mjs.map +1 -1
- package/dist/admin/admin/src/features/Tracking.js +3 -1
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs +3 -1
- package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
- package/dist/admin/admin/src/features/Widgets.js.map +1 -1
- package/dist/admin/admin/src/features/Widgets.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useMediaQuery.js +4 -4
- package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -1
- package/dist/admin/admin/src/hooks/useMenu.js +5 -3
- package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
- package/dist/admin/admin/src/hooks/useMenu.mjs +5 -3
- package/dist/admin/admin/src/hooks/useMenu.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useQueryParams.js +0 -1
- package/dist/admin/admin/src/hooks/useQueryParams.js.map +1 -1
- package/dist/admin/admin/src/hooks/useQueryParams.mjs +0 -1
- package/dist/admin/admin/src/hooks/useQueryParams.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useThrottledCallback.js.map +1 -1
- package/dist/admin/admin/src/hooks/useThrottledCallback.mjs.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +5 -3
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +5 -3
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js +3 -3
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/AuthPage.js +3 -2
- package/dist/admin/admin/src/pages/Auth/AuthPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/AuthPage.mjs +3 -2
- package/dist/admin/admin/src/pages/Auth/AuthPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.js +17 -9
- package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.mjs +15 -7
- package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.js +2 -2
- package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js +3 -6
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs +1 -1
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js +4 -8
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js +4 -8
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/SessionsPage.js +318 -0
- package/dist/admin/admin/src/pages/SessionsPage.js.map +1 -0
- package/dist/admin/admin/src/pages/SessionsPage.mjs +296 -0
- package/dist/admin/admin/src/pages/SessionsPage.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Settings/Layout.js +4 -1
- package/dist/admin/admin/src/pages/Settings/Layout.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/Layout.mjs +5 -2
- package/dist/admin/admin/src/pages/Settings/Layout.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +2 -2
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +2 -2
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +2 -2
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js +2 -2
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +4 -4
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +1 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +1 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +9 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs +7 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js +7 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs +7 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +44 -10
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs +34 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js +3 -3
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +5 -5
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +38 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs +38 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +3 -3
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js +18 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs +18 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.js +59 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.js.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.mjs +52 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js +3 -3
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs.map +1 -1
- package/dist/admin/admin/src/router.js +9 -0
- package/dist/admin/admin/src/router.js.map +1 -1
- package/dist/admin/admin/src/router.mjs +9 -0
- package/dist/admin/admin/src/router.mjs.map +1 -1
- package/dist/admin/admin/src/services/auth.js +43 -2
- package/dist/admin/admin/src/services/auth.js.map +1 -1
- package/dist/admin/admin/src/services/auth.mjs +41 -3
- package/dist/admin/admin/src/services/auth.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +22 -0
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +22 -0
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/ja.json.js +726 -237
- package/dist/admin/admin/src/translations/ja.json.js.map +1 -1
- package/dist/admin/admin/src/translations/ja.json.mjs +723 -238
- package/dist/admin/admin/src/translations/ja.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/languageNativeNames.js +1 -0
- package/dist/admin/admin/src/translations/languageNativeNames.js.map +1 -1
- package/dist/admin/admin/src/translations/languageNativeNames.mjs +1 -0
- package/dist/admin/admin/src/translations/languageNativeNames.mjs.map +1 -1
- package/dist/admin/admin/src/translations/pl.json.js +22 -0
- package/dist/admin/admin/src/translations/pl.json.js.map +1 -1
- package/dist/admin/admin/src/translations/pl.json.mjs +22 -0
- package/dist/admin/admin/src/translations/pl.json.mjs.map +1 -1
- package/dist/admin/admin/src/utils/arrays.js.map +1 -1
- package/dist/admin/admin/src/utils/arrays.mjs.map +1 -1
- package/dist/admin/admin/src/utils/baseQuery.js +1 -1
- package/dist/admin/admin/src/utils/baseQuery.js.map +1 -1
- package/dist/admin/admin/src/utils/baseQuery.mjs +1 -1
- package/dist/admin/admin/src/utils/baseQuery.mjs.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
- package/dist/admin/admin/src/utils/objects.js +43 -11
- package/dist/admin/admin/src/utils/objects.js.map +1 -1
- package/dist/admin/admin/src/utils/objects.mjs +43 -11
- package/dist/admin/admin/src/utils/objects.mjs.map +1 -1
- package/dist/admin/admin/src/utils/once.js.map +1 -1
- package/dist/admin/admin/src/utils/once.mjs.map +1 -1
- package/dist/admin/admin/src/utils/retryDynamicImport.js +85 -0
- package/dist/admin/admin/src/utils/retryDynamicImport.js.map +1 -0
- package/dist/admin/admin/src/utils/retryDynamicImport.mjs +80 -0
- package/dist/admin/admin/src/utils/retryDynamicImport.mjs.map +1 -0
- package/dist/admin/admin/src/utils/rulesEngine.js +2 -1
- package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
- package/dist/admin/admin/src/utils/rulesEngine.mjs +2 -1
- package/dist/admin/admin/src/utils/rulesEngine.mjs.map +1 -1
- package/dist/admin/admin/src/utils/shims.js.map +1 -1
- package/dist/admin/admin/src/utils/shims.mjs.map +1 -1
- package/dist/admin/admin/src/utils/widgetVisibility.js +16 -1
- package/dist/admin/admin/src/utils/widgetVisibility.js.map +1 -1
- package/dist/admin/admin/src/utils/widgetVisibility.mjs +14 -2
- package/dist/admin/admin/src/utils/widgetVisibility.mjs.map +1 -1
- package/dist/admin/admin/tests/server.js +25 -0
- package/dist/admin/admin/tests/server.js.map +1 -1
- package/dist/admin/admin/tests/server.mjs +25 -0
- package/dist/admin/admin/tests/server.mjs.map +1 -1
- package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js +2 -2
- package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js +2 -2
- package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.mjs +2 -2
- package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.js +2 -2
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.js +2 -2
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js +3 -3
- package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js +3 -3
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js +2 -2
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
- package/dist/admin/index.js +2 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -0
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/src/StrapiApp.d.ts +7 -7
- package/dist/admin/src/components/DescriptionComponentRenderer.d.ts +2 -1
- package/dist/admin/src/components/Form.d.ts +14 -12
- package/dist/admin/src/components/FormInputs/Boolean.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/Checkbox.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/DateTime.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/Email.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/Enumeration.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/Number.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/Password.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/Renderer.d.ts +1 -2
- package/dist/admin/src/components/FormInputs/String.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/Textarea.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/Time.d.ts +0 -1
- package/dist/admin/src/components/GuidedTour/GuidedTourProvider.d.ts +0 -1
- package/dist/admin/src/components/GuidedTour/Steps/Step.d.ts +1 -1
- package/dist/admin/src/components/LazyOutlet.d.ts +20 -0
- package/dist/admin/src/components/MainNav/MainNav.d.ts +1 -1
- package/dist/admin/src/components/MainNav/NavUser.d.ts +0 -1
- package/dist/admin/src/components/SubNav.d.ts +6 -7
- package/dist/admin/src/components/Table.d.ts +3 -2
- package/dist/admin/src/core/apis/Plugin.d.ts +2 -2
- package/dist/admin/src/core/apis/Widgets.d.ts +0 -1
- package/dist/admin/src/core/apis/router.d.ts +1 -1
- package/dist/admin/src/core/store/configure.d.ts +2 -2
- package/dist/admin/src/core/utils/createHook.d.ts +7 -7
- package/dist/admin/src/features/AppInfo.d.ts +1 -2
- package/dist/admin/src/features/StrapiApp.d.ts +1 -2
- package/dist/admin/src/hooks/useAPIErrorHandler.d.ts +1 -1
- package/dist/admin/src/hooks/useAdminRoles.d.ts +3 -3
- package/dist/admin/src/hooks/useFetchClient.d.ts +1 -1
- package/dist/admin/src/hooks/useMenu.d.ts +1 -1
- package/dist/admin/src/hooks/usePersistentState.d.ts +0 -1
- package/dist/admin/src/hooks/useQueryParams.d.ts +3 -2
- package/dist/admin/src/hooks/useThrottledCallback.d.ts +1 -2
- package/dist/admin/src/index.d.ts +1 -0
- package/dist/admin/src/layouts/UnauthenticatedLayout.d.ts +2 -2
- package/dist/admin/src/pages/SessionsPage.d.ts +2 -0
- package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.d.ts +1 -1
- package/dist/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.d.ts +2 -3
- package/dist/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.d.ts +2 -2
- package/dist/admin/src/pages/Settings/pages/Roles/components/HiddenAction.d.ts +0 -1
- package/dist/admin/src/pages/Settings/pages/Roles/components/Permissions.d.ts +2 -0
- package/dist/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.d.ts +1 -1
- package/dist/admin/src/pages/Settings/pages/Roles/utils/forms.d.ts +1 -1
- package/dist/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.d.ts +5 -0
- package/dist/admin/src/pages/Settings/pages/Roles/utils/permissions.d.ts +3 -1
- package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +8 -8
- package/dist/admin/src/reducer.d.ts +1 -1
- package/dist/admin/src/services/admin.d.ts +8 -8
- package/dist/admin/src/services/api.d.ts +1 -1
- package/dist/admin/src/services/apiTokens.d.ts +3 -3
- package/dist/admin/src/services/auth.d.ts +29 -27
- package/dist/admin/src/services/contentApi.d.ts +2 -2
- package/dist/admin/src/services/contentManager.d.ts +1 -1
- package/dist/admin/src/services/homepage.d.ts +3 -3
- package/dist/admin/src/services/transferTokens.d.ts +1 -1
- package/dist/admin/src/services/users.d.ts +15 -15
- package/dist/admin/src/services/webhooks.d.ts +4 -4
- package/dist/admin/src/translations/languageNativeNames.d.ts +1 -0
- package/dist/admin/src/utils/arrays.d.ts +1 -1
- package/dist/admin/src/utils/baseQuery.d.ts +1 -1
- package/dist/admin/src/utils/getFetchClient.d.ts +7 -7
- package/dist/admin/src/utils/locales.d.ts +0 -1
- package/dist/admin/src/utils/objects.d.ts +6 -4
- package/dist/admin/src/utils/once.d.ts +1 -1
- package/dist/admin/src/utils/retryDynamicImport.d.ts +19 -0
- package/dist/admin/src/utils/shims.d.ts +1 -1
- package/dist/admin/src/utils/widgetVisibility.d.ts +11 -0
- package/dist/admin/tests/store.d.ts +4 -4
- package/dist/admin/tests/utils.d.ts +5 -5
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.d.ts +1 -1
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/tableHeaders.d.ts +2 -1
- package/dist/ee/admin/src/services/ai.d.ts +5 -5
- package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
- package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts +1 -1
- package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts.map +1 -1
- package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts +3 -3
- package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts.map +1 -1
- package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts +2 -2
- package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts.map +1 -1
- package/dist/ee/server/src/bootstrap.d.ts.map +1 -1
- package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts +30 -31
- package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts.map +1 -1
- package/dist/ee/server/src/controllers/index.d.ts +1 -2
- package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
- package/dist/ee/server/src/controllers/user.d.ts +1 -1
- package/dist/ee/server/src/destroy.d.ts.map +1 -1
- package/dist/ee/server/src/index.d.ts +2 -3
- package/dist/ee/server/src/index.d.ts.map +1 -1
- package/dist/ee/server/src/register.d.ts.map +1 -1
- package/dist/ee/server/src/routes/utils.d.ts.map +1 -1
- package/dist/ee/server/src/services/auth.d.ts.map +1 -1
- package/dist/ee/server/src/services/index.d.ts +1 -1
- package/dist/ee/server/src/services/metrics.d.ts.map +1 -1
- package/dist/ee/server/src/services/passport/sso.d.ts.map +1 -1
- package/dist/ee/server/src/services/persist-tables.d.ts +1 -1
- package/dist/ee/server/src/services/persist-tables.d.ts.map +1 -1
- package/dist/ee/server/src/services/role.d.ts.map +1 -1
- package/dist/ee/server/src/services/user.d.ts.map +1 -1
- package/dist/ee/server/src/utils/index.d.ts.map +1 -1
- package/dist/ee/server/src/utils/sso-lock.d.ts.map +1 -1
- package/dist/ee/server/src/validation/authentication.d.ts +2 -2
- package/dist/ee/server/src/validation/role.d.ts +6 -6
- package/dist/ee/server/src/validation/role.d.ts.map +1 -1
- package/dist/ee/server/src/validation/user.d.ts.map +1 -1
- package/dist/server/server/src/content-types/session.js +6 -0
- package/dist/server/server/src/content-types/session.js.map +1 -1
- package/dist/server/server/src/content-types/session.mjs +6 -0
- package/dist/server/server/src/content-types/session.mjs.map +1 -1
- package/dist/server/server/src/controllers/admin.js.map +1 -1
- package/dist/server/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/server/src/controllers/authenticated-session.js +61 -0
- package/dist/server/server/src/controllers/authenticated-session.js.map +1 -0
- package/dist/server/server/src/controllers/authenticated-session.mjs +59 -0
- package/dist/server/server/src/controllers/authenticated-session.mjs.map +1 -0
- package/dist/server/server/src/controllers/authentication.js +11 -4
- package/dist/server/server/src/controllers/authentication.js.map +1 -1
- package/dist/server/server/src/controllers/authentication.mjs +12 -5
- package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
- package/dist/server/server/src/controllers/index.js +2 -0
- package/dist/server/server/src/controllers/index.js.map +1 -1
- package/dist/server/server/src/controllers/index.mjs +2 -0
- package/dist/server/server/src/controllers/index.mjs.map +1 -1
- package/dist/server/server/src/controllers/role.js +2 -4
- package/dist/server/server/src/controllers/role.js.map +1 -1
- package/dist/server/server/src/controllers/role.mjs +2 -4
- package/dist/server/server/src/controllers/role.mjs.map +1 -1
- package/dist/server/server/src/routes/serve-admin-panel.js +1 -1
- package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
- package/dist/server/server/src/routes/serve-admin-panel.mjs +1 -1
- package/dist/server/server/src/routes/serve-admin-panel.mjs.map +1 -1
- package/dist/server/server/src/routes/users.js +12 -26
- package/dist/server/server/src/routes/users.js.map +1 -1
- package/dist/server/server/src/routes/users.mjs +12 -26
- package/dist/server/server/src/routes/users.mjs.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/sanitize.js +0 -2
- package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs +0 -2
- package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/handlers.js +9 -2
- package/dist/server/server/src/services/permission/sections-builder/handlers.js.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/handlers.mjs +9 -2
- package/dist/server/server/src/services/permission/sections-builder/handlers.mjs.map +1 -1
- package/dist/server/server/src/services/role.js +7 -2
- package/dist/server/server/src/services/role.js.map +1 -1
- package/dist/server/server/src/services/role.mjs +7 -2
- package/dist/server/server/src/services/role.mjs.map +1 -1
- package/dist/server/server/src/strategies/admin.js +4 -0
- package/dist/server/server/src/strategies/admin.js.map +1 -1
- package/dist/server/server/src/strategies/admin.mjs +4 -0
- package/dist/server/server/src/strategies/admin.mjs.map +1 -1
- package/dist/server/server/src/validation/common-validators.js +19 -11
- package/dist/server/server/src/validation/common-validators.js.map +1 -1
- package/dist/server/server/src/validation/common-validators.mjs +19 -11
- package/dist/server/server/src/validation/common-validators.mjs.map +1 -1
- package/dist/server/server/src/validation/permission.js +1 -1
- package/dist/server/server/src/validation/permission.js.map +1 -1
- package/dist/server/server/src/validation/permission.mjs +1 -1
- package/dist/server/server/src/validation/permission.mjs.map +1 -1
- package/dist/server/server/src/validation/role.js +2 -2
- package/dist/server/server/src/validation/role.js.map +1 -1
- package/dist/server/server/src/validation/role.mjs +2 -2
- package/dist/server/server/src/validation/role.mjs.map +1 -1
- package/dist/server/src/ai/controllers/ai.d.ts +3 -3
- package/dist/server/src/ai/services/ai.d.ts.map +1 -1
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/config/admin-conditions.d.ts +2 -2
- package/dist/server/src/config/admin-conditions.d.ts.map +1 -1
- package/dist/server/src/content-types/index.d.ts +6 -0
- package/dist/server/src/content-types/index.d.ts.map +1 -1
- package/dist/server/src/content-types/session.d.ts +6 -0
- package/dist/server/src/content-types/session.d.ts.map +1 -1
- package/dist/server/src/controllers/admin-token.d.ts +5 -5
- package/dist/server/src/controllers/api-token.d.ts +1 -1
- package/dist/server/src/controllers/authenticated-session.d.ts +8 -0
- package/dist/server/src/controllers/authenticated-session.d.ts.map +1 -0
- package/dist/server/src/controllers/authenticated-user.d.ts +1 -1
- package/dist/server/src/controllers/authentication.d.ts +4 -4
- package/dist/server/src/controllers/authentication.d.ts.map +1 -1
- package/dist/server/src/controllers/formatters/conditions.d.ts +0 -1
- package/dist/server/src/controllers/formatters/conditions.d.ts.map +1 -1
- package/dist/server/src/controllers/formatters/format-actions-by-sections.d.ts.map +1 -1
- package/dist/server/src/controllers/homepage.d.ts +2 -2
- package/dist/server/src/controllers/homepage.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +33 -43
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/controllers/role.d.ts +4 -4
- package/dist/server/src/controllers/transfer/runner.d.ts +4 -4
- package/dist/server/src/controllers/transfer/runner.d.ts.map +1 -1
- package/dist/server/src/controllers/transfer/token.d.ts +1 -1
- package/dist/server/src/controllers/user.d.ts +2 -2
- package/dist/server/src/controllers/webhooks.d.ts +4 -4
- package/dist/server/src/domain/action/index.d.ts +4 -65
- package/dist/server/src/domain/action/index.d.ts.map +1 -1
- package/dist/server/src/domain/action/provider.d.ts +30 -3
- package/dist/server/src/domain/action/provider.d.ts.map +1 -1
- package/dist/server/src/domain/condition/index.d.ts.map +1 -1
- package/dist/server/src/domain/condition/provider.d.ts +19 -2
- package/dist/server/src/domain/condition/provider.d.ts.map +1 -1
- package/dist/server/src/domain/permission/index.d.ts +0 -1
- package/dist/server/src/domain/permission/index.d.ts.map +1 -1
- package/dist/server/src/domain/user.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +51 -63
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/middlewares/data-transfer.d.ts.map +1 -1
- package/dist/server/src/middlewares/index.d.ts +0 -1
- package/dist/server/src/middlewares/index.d.ts.map +1 -1
- package/dist/server/src/middlewares/rateLimit.d.ts.map +1 -1
- package/dist/server/src/policies/hasPermissions.d.ts.map +1 -1
- package/dist/server/src/policies/index.d.ts.map +1 -1
- package/dist/server/src/policies/isAuthenticatedAdmin.d.ts.map +1 -1
- package/dist/server/src/policies/isTelemetryEnabled.d.ts.map +1 -1
- package/dist/server/src/register.d.ts.map +1 -1
- package/dist/server/src/routes/index.d.ts +0 -1
- package/dist/server/src/routes/index.d.ts.map +1 -1
- package/dist/server/src/routes/serve-admin-panel.d.ts.map +1 -1
- package/dist/server/src/routes/transfer.d.ts +0 -1
- package/dist/server/src/routes/transfer.d.ts.map +1 -1
- package/dist/server/src/routes/users.d.ts.map +1 -1
- package/dist/server/src/services/action.d.ts.map +1 -1
- package/dist/server/src/services/api-token.d.ts +5 -6
- package/dist/server/src/services/api-token.d.ts.map +1 -1
- package/dist/server/src/services/auth.d.ts.map +1 -1
- package/dist/server/src/services/condition.d.ts.map +1 -1
- package/dist/server/src/services/content-type.d.ts.map +1 -1
- package/dist/server/src/services/encryption.d.ts.map +1 -1
- package/dist/server/src/services/homepage.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +12 -21
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/metrics.d.ts.map +1 -1
- package/dist/server/src/services/passport/local-strategy.d.ts.map +1 -1
- package/dist/server/src/services/passport.d.ts +0 -1
- package/dist/server/src/services/passport.d.ts.map +1 -1
- package/dist/server/src/services/permission/engine.d.ts +1 -2
- package/dist/server/src/services/permission/engine.d.ts.map +1 -1
- package/dist/server/src/services/permission/permissions-manager/index.d.ts +5 -5
- package/dist/server/src/services/permission/permissions-manager/index.d.ts.map +1 -1
- package/dist/server/src/services/permission/permissions-manager/permission-fields.d.ts.map +1 -1
- package/dist/server/src/services/permission/permissions-manager/query-builders.d.ts.map +1 -1
- package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts +3 -3
- package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts.map +1 -1
- package/dist/server/src/services/permission/permissions-manager/validate.d.ts.map +1 -1
- package/dist/server/src/services/permission/queries.d.ts.map +1 -1
- package/dist/server/src/services/permission/sections-builder/builder.d.ts +4 -4
- package/dist/server/src/services/permission/sections-builder/builder.d.ts.map +1 -1
- package/dist/server/src/services/permission/sections-builder/handlers.d.ts.map +1 -1
- package/dist/server/src/services/permission/sections-builder/index.d.ts +4 -4
- package/dist/server/src/services/permission/sections-builder/section.d.ts.map +1 -1
- package/dist/server/src/services/permission/sections-builder/utils.d.ts +0 -1
- package/dist/server/src/services/permission/sections-builder/utils.d.ts.map +1 -1
- package/dist/server/src/services/permission.d.ts +13 -38
- package/dist/server/src/services/permission.d.ts.map +1 -1
- package/dist/server/src/services/project-settings.d.ts +2 -4
- package/dist/server/src/services/project-settings.d.ts.map +1 -1
- package/dist/server/src/services/role.d.ts +7 -1
- package/dist/server/src/services/role.d.ts.map +1 -1
- package/dist/server/src/services/token.d.ts +1 -1
- package/dist/server/src/services/token.d.ts.map +1 -1
- package/dist/server/src/services/transfer/token.d.ts +11 -11
- package/dist/server/src/services/transfer/token.d.ts.map +1 -1
- package/dist/server/src/services/user.d.ts +3 -3
- package/dist/server/src/services/user.d.ts.map +1 -1
- package/dist/server/src/strategies/admin-token.d.ts +4 -4
- package/dist/server/src/strategies/admin-token.d.ts.map +1 -1
- package/dist/server/src/strategies/admin.d.ts.map +1 -1
- package/dist/server/src/strategies/api-token-utils.d.ts.map +1 -1
- package/dist/server/src/strategies/content-api-token.d.ts.map +1 -1
- package/dist/server/src/strategies/data-transfer.d.ts.map +1 -1
- package/dist/server/src/utils/normalize-email.d.ts.map +1 -1
- package/dist/server/src/validation/action-provider.d.ts +2 -2
- package/dist/server/src/validation/action-provider.d.ts.map +1 -1
- package/dist/server/src/validation/admin-tokens.d.ts +2 -2
- package/dist/server/src/validation/api-tokens.d.ts +4 -4
- package/dist/server/src/validation/authentication/forgot-password.d.ts +1 -1
- package/dist/server/src/validation/authentication/login.d.ts +1 -1
- package/dist/server/src/validation/authentication/register.d.ts +6 -6
- package/dist/server/src/validation/authentication/register.d.ts.map +1 -1
- package/dist/server/src/validation/authentication/reset-password.d.ts +1 -1
- package/dist/server/src/validation/common-functions/check-fields-are-correctly-nested.d.ts.map +1 -1
- package/dist/server/src/validation/common-functions/check-fields-dont-have-duplicates.d.ts.map +1 -1
- package/dist/server/src/validation/common-validators.d.ts.map +1 -1
- package/dist/server/src/validation/permission.d.ts +6 -6
- package/dist/server/src/validation/permission.d.ts.map +1 -1
- package/dist/server/src/validation/policies/hasPermissions.d.ts +2 -2
- package/dist/server/src/validation/project-settings.d.ts +6 -6
- package/dist/server/src/validation/role.d.ts +8 -8
- package/dist/server/src/validation/role.d.ts.map +1 -1
- package/dist/server/src/validation/transfer/token.d.ts +4 -4
- package/dist/server/src/validation/user.d.ts +8 -8
- package/dist/shared/contracts/permissions.d.ts +1 -0
- package/dist/shared/contracts/permissions.d.ts.map +1 -1
- package/dist/shared/contracts/sessions.d.ts +62 -0
- package/dist/shared/contracts/sessions.d.ts.map +1 -0
- package/dist/shared/contracts/shared.d.ts +1 -1
- package/dist/shared/contracts/shared.d.ts.map +1 -1
- package/dist/shared/utils/session-auth.d.ts +1 -1
- package/dist/shared/utils/session-auth.d.ts.map +1 -1
- package/package.json +12 -12
package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginsAndSettings.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Accordion,\n Box,\n BoxComponent,\n Checkbox,\n Flex,\n Grid,\n Modal,\n Typography,\n} from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport {\n SettingPermission,\n PluginPermission,\n} from '../../../../../../../shared/contracts/permissions';\nimport { capitalise } from '../../../../../utils/strings';\nimport {\n PermissionsDataManagerContextValue,\n usePermissionsDataManager,\n} from '../hooks/usePermissionsDataManager';\nimport { createArrayOfValues } from '../utils/createArrayOfValues';\nimport { ChildrenForm, ConditionForm } from '../utils/forms';\nimport { RecursiveRecordOfBooleans, getCheckboxState } from '../utils/getCheckboxState';\nimport { removeConditionKeyFromData } from '../utils/removeConditionKeyFromData';\n\nimport { ConditionsButton } from './ConditionsButton';\nimport { ConditionsModal } from './ConditionsModal';\n\nimport type { GenericLayout } from '../utils/layouts';\n\n/* -------------------------------------------------------------------------------------------------\n * PluginsAndSettingsPermissions\n * -----------------------------------------------------------------------------------------------*/\n\ntype Layout = GenericLayout<SettingPermission | PluginPermission>[];\n\ninterface PluginsAndSettingsPermissionsProps extends Pick<RowProps, 'kind' | 'isFormDisabled'> {\n layout: Layout;\n}\n\nconst PluginsAndSettingsPermissions = ({\n layout,\n ...restProps\n}: PluginsAndSettingsPermissionsProps) => {\n return (\n <Box padding={6} background=\"neutral0\">\n <Accordion.Root size=\"M\">\n {layout.map(({ category, categoryId, childrenForm }, index) => {\n return (\n <Row\n key={category}\n childrenForm={childrenForm}\n variant={index % 2 === 1 ? 'primary' : 'secondary'}\n name={category}\n pathToData={[restProps.kind, categoryId]}\n {...restProps}\n />\n );\n })}\n </Accordion.Root>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Row\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RowProps\n extends Pick<Layout[number], 'childrenForm'>,\n Pick<Accordion.HeaderProps, 'variant'> {\n kind: Exclude<keyof PermissionsDataManagerContextValue['modifiedData'], `${string}Types`>;\n name: string;\n isFormDisabled?: boolean;\n pathToData: string[];\n}\n\nconst Row = ({\n childrenForm,\n kind,\n name,\n isFormDisabled = false,\n variant,\n pathToData,\n}: RowProps) => {\n const { formatMessage } = useIntl();\n\n const categoryName = name.split('::').pop() ?? '';\n const categoryDisplayName =\n categoryName === 'upload' ? 'Media Library' : capitalise(categoryName.replace(/-/g, ' '));\n\n return (\n <Accordion.Item value={name}>\n <Accordion.Header variant={variant}>\n <Accordion.Trigger\n caretPosition=\"right\"\n description={`${formatMessage(\n { id: 'Settings.permissions.category', defaultMessage: categoryName },\n { category: categoryName }\n )} ${kind === 'plugins' ? 'plugin' : kind}`}\n >\n {categoryDisplayName}\n </Accordion.Trigger>\n </Accordion.Header>\n <Accordion.Content>\n <Box padding={6}>\n {childrenForm.map(({ actions, subCategoryName, subCategoryId }) => (\n <SubCategory\n key={subCategoryName}\n actions={actions}\n categoryName={categoryName}\n isFormDisabled={isFormDisabled}\n subCategoryName={subCategoryName}\n pathToData={[...pathToData, subCategoryId]}\n />\n ))}\n </Box>\n </Accordion.Content>\n </Accordion.Item>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SubCategory\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SubCategoryProps {\n actions?: Array<SettingPermission | PluginPermission>;\n categoryName: string;\n isFormDisabled?: boolean;\n subCategoryName: string;\n pathToData: string[];\n}\n\nconst SubCategory = ({\n actions = [],\n categoryName,\n isFormDisabled,\n subCategoryName,\n pathToData,\n}: SubCategoryProps) => {\n const {\n modifiedData,\n onChangeParentCheckbox,\n onChangeSimpleCheckbox,\n checkUserHasPermission,\n userPermissions,\n } = usePermissionsDataManager();\n const [isConditionModalOpen, setIsConditionModalOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n\n const mainData = get(modifiedData, pathToData, {});\n\n const dataWithoutCondition = React.useMemo(() => {\n return Object.keys(mainData).reduce<RecursiveRecordOfBooleans>((acc, current) => {\n acc[current] = removeConditionKeyFromData(mainData[current])!;\n\n return acc;\n }, {});\n }, [mainData]);\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState(dataWithoutCondition);\n\n // We need to format the actions so it matches the shape of the ConditionsModal actions props\n const formattedActions = React.useMemo(() => {\n return actions.map((action) => {\n const checkboxName = [...pathToData, action.action, 'properties', 'enabled'];\n const checkboxValue = get(modifiedData, checkboxName, false);\n const conditionValue = get(modifiedData, [...pathToData, action.action, 'conditions'], {});\n const hasConditions = createArrayOfValues(conditionValue).some((val) => val);\n\n return {\n ...action,\n isDisplayed: checkboxValue,\n checkboxName: checkboxName.join('..'),\n hasSomeActionsSelected: checkboxValue,\n value: checkboxValue,\n hasConditions,\n label: action.displayName,\n actionId: action.action,\n pathToConditionsObject: [...pathToData, action.action],\n };\n });\n }, [actions, modifiedData, pathToData]);\n\n const datum: ChildrenForm = get(modifiedData, [...pathToData], {});\n\n const doesButtonHasCondition = createArrayOfValues(\n Object.entries(datum).reduce<Record<string, ConditionForm>>((acc, current) => {\n const [catName, { conditions }] = current;\n\n acc[catName] = conditions;\n\n return acc;\n }, {})\n ).some((val) => val);\n\n return (\n <>\n <Box>\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {subCategoryName}\n </Typography>\n </Box>\n <Border flex={1} />\n <Box paddingLeft={4}>\n <Checkbox\n name={pathToData.join('..')}\n disabled={isFormDisabled}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeParentCheckbox({\n target: {\n name: pathToData.join('..'),\n value: !!value,\n },\n });\n }}\n checked={hasSomeActionsSelected ? 'indeterminate' : hasAllActionsSelected}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Flex paddingTop={6} paddingBottom={6}>\n <Grid.Root gap={2} style={{ flex: 1 }}>\n {formattedActions.map(({ checkboxName, value, action, displayName, hasConditions }) => {\n const userHasPermission = checkUserHasPermission(action, null);\n\n return (\n <Grid.Item col={4} m={6} xs={12} key={action} direction=\"column\" alignItems=\"start\">\n <CheckboxWrapper\n $disabled={isFormDisabled || !userHasPermission}\n $hasConditions={hasConditions}\n >\n <Checkbox\n name={checkboxName}\n disabled={isFormDisabled || !userHasPermission}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeSimpleCheckbox({\n target: {\n name: checkboxName,\n value: !!value,\n },\n });\n }}\n checked={value}\n >\n {displayName}\n </Checkbox>\n </CheckboxWrapper>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n <Modal.Root\n open={isConditionModalOpen}\n onOpenChange={() => {\n setIsConditionModalOpen((prev) => !prev);\n }}\n >\n <Modal.Trigger>\n <ConditionsButton hasConditions={doesButtonHasCondition} />\n </Modal.Trigger>\n <ConditionsModal\n headerBreadCrumbs={[categoryName, subCategoryName]}\n actions={formattedActions}\n isFormDisabled={isFormDisabled}\n isReadOnly={userPermissions !== undefined}\n onClose={() => {\n setIsConditionModalOpen(false);\n }}\n />\n </Modal.Root>\n </Flex>\n </Box>\n </>\n );\n};\n\nconst Border = styled<BoxComponent>(Box)`\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst CheckboxWrapper = styled.div<{ $hasConditions?: boolean; $disabled?: boolean }>`\n position: relative;\n word-break: keep-all;\n ${({ $hasConditions, $disabled, theme }) =>\n $hasConditions &&\n `\n &:before {\n content: '';\n position: absolute;\n top: -0.4rem;\n left: -0.8rem;\n width: 0.6rem;\n height: 0.6rem;\n border-radius: 2rem;\n background: ${$disabled ? theme.colors.neutral100 : theme.colors.primary600};\n }\n `}\n`;\n\nexport { PluginsAndSettingsPermissions };\n"],"names":["PluginsAndSettingsPermissions","layout","restProps","_jsx","Box","padding","background","Accordion","Root","size","map","category","categoryId","childrenForm","index","Row","variant","name","pathToData","kind","isFormDisabled","formatMessage","useIntl","categoryName","split","pop","categoryDisplayName","capitalise","replace","_jsxs","Item","value","Header","Trigger","caretPosition","description","id","defaultMessage","Content","actions","subCategoryName","subCategoryId","SubCategory","modifiedData","onChangeParentCheckbox","onChangeSimpleCheckbox","checkUserHasPermission","userPermissions","usePermissionsDataManager","isConditionModalOpen","setIsConditionModalOpen","React","useState","mainData","get","dataWithoutCondition","useMemo","Object","keys","reduce","acc","current","removeConditionKeyFromData","hasAllActionsSelected","hasSomeActionsSelected","getCheckboxState","formattedActions","action","checkboxName","checkboxValue","conditionValue","hasConditions","createArrayOfValues","some","val","isDisplayed","join","label","displayName","actionId","pathToConditionsObject","datum","doesButtonHasCondition","entries","catName","conditions","_Fragment","Flex","justifyContent","alignItems","paddingRight","Typography","textColor","Border","flex","paddingLeft","Checkbox","disabled","onCheckedChange","target","checked","paddingTop","paddingBottom","Grid","gap","style","userHasPermission","col","m","xs","direction","CheckboxWrapper","$disabled","$hasConditions","Modal","open","onOpenChange","prev","ConditionsButton","ConditionsModal","headerBreadCrumbs","isReadOnly","undefined","onClose","styled","theme","colors","neutral150","div","neutral100","primary600"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PluginsAndSettings.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Accordion,\n Box,\n BoxComponent,\n Checkbox,\n Flex,\n Grid,\n Modal,\n Typography,\n} from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport {\n SettingPermission,\n PluginPermission,\n} from '../../../../../../../shared/contracts/permissions';\nimport { capitalise } from '../../../../../utils/strings';\nimport {\n PermissionsDataManagerContextValue,\n usePermissionsDataManager,\n} from '../hooks/usePermissionsDataManager';\nimport { createArrayOfValues } from '../utils/createArrayOfValues';\nimport { ChildrenForm, ConditionForm } from '../utils/forms';\nimport { RecursiveRecordOfBooleans, getCheckboxState } from '../utils/getCheckboxState';\nimport { removeConditionKeyFromData } from '../utils/removeConditionKeyFromData';\n\nimport { ConditionsButton } from './ConditionsButton';\nimport { ConditionsModal } from './ConditionsModal';\n\nimport type { GenericLayout } from '../utils/layouts';\n\n/* -------------------------------------------------------------------------------------------------\n * PluginsAndSettingsPermissions\n * -----------------------------------------------------------------------------------------------*/\n\ntype Layout = GenericLayout<SettingPermission | PluginPermission>[];\n\ninterface PluginsAndSettingsPermissionsProps extends Pick<RowProps, 'kind' | 'isFormDisabled'> {\n layout: Layout;\n}\n\nconst PluginsAndSettingsPermissions = ({\n layout,\n ...restProps\n}: PluginsAndSettingsPermissionsProps) => {\n return (\n <Box padding={6} background=\"neutral0\">\n <Accordion.Root size=\"M\">\n {layout.map(({ category, categoryId, childrenForm }, index) => {\n return (\n <Row\n key={category}\n childrenForm={childrenForm}\n variant={index % 2 === 1 ? 'primary' : 'secondary'}\n name={category}\n pathToData={[restProps.kind, categoryId]}\n {...restProps}\n />\n );\n })}\n </Accordion.Root>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Row\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RowProps\n extends Pick<Layout[number], 'childrenForm'>,\n Pick<Accordion.HeaderProps, 'variant'> {\n kind: Exclude<keyof PermissionsDataManagerContextValue['modifiedData'], `${string}Types`>;\n name: string;\n isFormDisabled?: boolean;\n pathToData: string[];\n}\n\nconst Row = ({\n childrenForm,\n kind,\n name,\n isFormDisabled = false,\n variant,\n pathToData,\n}: RowProps) => {\n const { formatMessage } = useIntl();\n\n const categoryName = name.split('::').pop() ?? '';\n const categoryDisplayName =\n categoryName === 'upload' ? 'Media Library' : capitalise(categoryName.replace(/-/g, ' '));\n\n return (\n <Accordion.Item value={name}>\n <Accordion.Header variant={variant}>\n <Accordion.Trigger\n caretPosition=\"right\"\n description={`${formatMessage(\n { id: 'Settings.permissions.category', defaultMessage: categoryName },\n { category: categoryName }\n )} ${kind === 'plugins' ? 'plugin' : kind}`}\n >\n {categoryDisplayName}\n </Accordion.Trigger>\n </Accordion.Header>\n <Accordion.Content>\n <Box padding={6}>\n {childrenForm.map(({ actions, subCategoryName, subCategoryId }) => (\n <SubCategory\n key={subCategoryName}\n actions={actions}\n categoryName={categoryName}\n isFormDisabled={isFormDisabled}\n subCategoryName={subCategoryName}\n pathToData={[...pathToData, subCategoryId]}\n />\n ))}\n </Box>\n </Accordion.Content>\n </Accordion.Item>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SubCategory\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SubCategoryProps {\n actions?: Array<SettingPermission | PluginPermission>;\n categoryName: string;\n isFormDisabled?: boolean;\n subCategoryName: string;\n pathToData: string[];\n}\n\nconst SubCategory = ({\n actions = [],\n categoryName,\n isFormDisabled,\n subCategoryName,\n pathToData,\n}: SubCategoryProps) => {\n const {\n modifiedData,\n onChangeParentCheckbox,\n onChangeSimpleCheckbox,\n checkUserHasPermission,\n userPermissions,\n } = usePermissionsDataManager();\n const [isConditionModalOpen, setIsConditionModalOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n\n const mainData = get(modifiedData, pathToData, {});\n\n const dataWithoutCondition = React.useMemo(() => {\n return Object.keys(mainData).reduce<RecursiveRecordOfBooleans>((acc, current) => {\n acc[current] = removeConditionKeyFromData(mainData[current])!;\n\n return acc;\n }, {});\n }, [mainData]);\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState(dataWithoutCondition);\n\n // We need to format the actions so it matches the shape of the ConditionsModal actions props\n const formattedActions = React.useMemo(() => {\n return actions.map((action) => {\n const checkboxName = [...pathToData, action.action, 'properties', 'enabled'];\n const checkboxValue = get(modifiedData, checkboxName, false);\n const conditionValue = get(modifiedData, [...pathToData, action.action, 'conditions'], {});\n const hasConditions = createArrayOfValues(conditionValue).some((val) => val);\n\n return {\n ...action,\n isDisplayed: checkboxValue,\n checkboxName: checkboxName.join('..'),\n hasSomeActionsSelected: checkboxValue,\n value: checkboxValue,\n hasConditions,\n label: action.displayName,\n actionId: action.action,\n pathToConditionsObject: [...pathToData, action.action],\n };\n });\n }, [actions, modifiedData, pathToData]);\n\n const datum: ChildrenForm = get(modifiedData, [...pathToData], {});\n\n const doesButtonHasCondition = createArrayOfValues(\n Object.entries(datum).reduce<Record<string, ConditionForm>>((acc, current) => {\n const [catName, { conditions }] = current;\n\n acc[catName] = conditions;\n\n return acc;\n }, {})\n ).some((val) => val);\n\n return (\n <>\n <Box>\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {subCategoryName}\n </Typography>\n </Box>\n <Border flex={1} />\n <Box paddingLeft={4}>\n <Checkbox\n name={pathToData.join('..')}\n disabled={isFormDisabled}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeParentCheckbox({\n target: {\n name: pathToData.join('..'),\n value: !!value,\n },\n });\n }}\n checked={hasSomeActionsSelected ? 'indeterminate' : hasAllActionsSelected}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Flex paddingTop={6} paddingBottom={6}>\n <Grid.Root gap={2} style={{ flex: 1 }}>\n {formattedActions.map(({ checkboxName, value, action, displayName, hasConditions }) => {\n const userHasPermission = checkUserHasPermission(action, null);\n\n return (\n <Grid.Item col={4} m={6} xs={12} key={action} direction=\"column\" alignItems=\"start\">\n <CheckboxWrapper\n $disabled={isFormDisabled || !userHasPermission}\n $hasConditions={hasConditions}\n >\n <Checkbox\n name={checkboxName}\n disabled={isFormDisabled || !userHasPermission}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeSimpleCheckbox({\n target: {\n name: checkboxName,\n value: !!value,\n },\n });\n }}\n checked={value}\n >\n {displayName}\n </Checkbox>\n </CheckboxWrapper>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n <Modal.Root\n open={isConditionModalOpen}\n onOpenChange={() => {\n setIsConditionModalOpen((prev) => !prev);\n }}\n >\n <Modal.Trigger>\n <ConditionsButton hasConditions={doesButtonHasCondition} />\n </Modal.Trigger>\n <ConditionsModal\n headerBreadCrumbs={[categoryName, subCategoryName]}\n actions={formattedActions}\n isFormDisabled={isFormDisabled}\n isReadOnly={userPermissions !== undefined}\n onClose={() => {\n setIsConditionModalOpen(false);\n }}\n />\n </Modal.Root>\n </Flex>\n </Box>\n </>\n );\n};\n\nconst Border = styled<BoxComponent>(Box)`\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst CheckboxWrapper = styled.div<{ $hasConditions?: boolean; $disabled?: boolean }>`\n position: relative;\n word-break: keep-all;\n ${({ $hasConditions, $disabled, theme }) =>\n $hasConditions &&\n `\n &:before {\n content: '';\n position: absolute;\n top: -0.4rem;\n left: -0.8rem;\n width: 0.6rem;\n height: 0.6rem;\n border-radius: 2rem;\n background: ${$disabled ? theme.colors.neutral100 : theme.colors.primary600};\n }\n `}\n`;\n\nexport { PluginsAndSettingsPermissions };\n"],"names":["PluginsAndSettingsPermissions","layout","restProps","_jsx","Box","padding","background","Accordion","Root","size","map","category","categoryId","childrenForm","index","Row","variant","name","pathToData","kind","isFormDisabled","formatMessage","useIntl","categoryName","split","pop","categoryDisplayName","capitalise","replace","_jsxs","Item","value","Header","Trigger","caretPosition","description","id","defaultMessage","Content","actions","subCategoryName","subCategoryId","SubCategory","modifiedData","onChangeParentCheckbox","onChangeSimpleCheckbox","checkUserHasPermission","userPermissions","usePermissionsDataManager","isConditionModalOpen","setIsConditionModalOpen","React","useState","mainData","get","dataWithoutCondition","useMemo","Object","keys","reduce","acc","current","removeConditionKeyFromData","hasAllActionsSelected","hasSomeActionsSelected","getCheckboxState","formattedActions","action","checkboxName","checkboxValue","conditionValue","hasConditions","createArrayOfValues","some","val","isDisplayed","join","label","displayName","actionId","pathToConditionsObject","datum","doesButtonHasCondition","entries","catName","conditions","_Fragment","Flex","justifyContent","alignItems","paddingRight","Typography","textColor","Border","flex","paddingLeft","Checkbox","disabled","onCheckedChange","target","checked","paddingTop","paddingBottom","Grid","gap","style","userHasPermission","col","m","xs","direction","CheckboxWrapper","$disabled","$hasConditions","Modal","open","onOpenChange","prev","ConditionsButton","ConditionsModal","headerBreadCrumbs","isReadOnly","undefined","onClose","styled","theme","colors","neutral150","div","neutral100","primary600"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createArrayOfValues.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.ts"],"sourcesContent":["import { Flat, flattenDeep } from '../../../../../utils/arrays';\nimport { isObject } from '../../../../../utils/objects';\n\nconst createArrayOfValues = <TData>(obj: unknown): Array<Flat<TData>> => {\n if (!isObject(obj)) {\n return [];\n }\n\n return flattenDeep(\n Object.values(obj).map((value) => {\n if (isObject(value)) {\n return createArrayOfValues(value);\n }\n\n return value
|
|
1
|
+
{"version":3,"file":"createArrayOfValues.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.ts"],"sourcesContent":["import { type Flat, flattenDeep } from '../../../../../utils/arrays';\nimport { isObject } from '../../../../../utils/objects';\n\nconst createArrayOfValues = <TData>(obj: unknown): Array<Flat<TData>> => {\n if (!isObject(obj)) {\n return [];\n }\n\n return flattenDeep<Flat<TData>>(\n Object.values(obj).map((value): Flat<TData> | Array<Flat<TData>> => {\n if (isObject(value)) {\n return createArrayOfValues<TData>(value);\n }\n\n return value as Flat<TData>;\n })\n );\n};\n\nexport { createArrayOfValues };\n"],"names":["createArrayOfValues","obj","isObject","flattenDeep","Object","values","map","value"],"mappings":";;;;;AAGA,MAAMA,sBAAsB,CAAQC,GAAAA,GAAAA;IAClC,IAAI,CAACC,iBAASD,GAAAA,CAAAA,EAAM;AAClB,QAAA,OAAO,EAAE;AACX,IAAA;AAEA,IAAA,OAAOE,mBACLC,MAAAA,CAAOC,MAAM,CAACJ,GAAAA,CAAAA,CAAKK,GAAG,CAAC,CAACC,KAAAA,GAAAA;AACtB,QAAA,IAAIL,iBAASK,KAAAA,CAAAA,EAAQ;AACnB,YAAA,OAAOP,mBAAAA,CAA2BO,KAAAA,CAAAA;AACpC,QAAA;QAEA,OAAOA,KAAAA;AACT,IAAA,CAAA,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createArrayOfValues.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.ts"],"sourcesContent":["import { Flat, flattenDeep } from '../../../../../utils/arrays';\nimport { isObject } from '../../../../../utils/objects';\n\nconst createArrayOfValues = <TData>(obj: unknown): Array<Flat<TData>> => {\n if (!isObject(obj)) {\n return [];\n }\n\n return flattenDeep(\n Object.values(obj).map((value) => {\n if (isObject(value)) {\n return createArrayOfValues(value);\n }\n\n return value
|
|
1
|
+
{"version":3,"file":"createArrayOfValues.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.ts"],"sourcesContent":["import { type Flat, flattenDeep } from '../../../../../utils/arrays';\nimport { isObject } from '../../../../../utils/objects';\n\nconst createArrayOfValues = <TData>(obj: unknown): Array<Flat<TData>> => {\n if (!isObject(obj)) {\n return [];\n }\n\n return flattenDeep<Flat<TData>>(\n Object.values(obj).map((value): Flat<TData> | Array<Flat<TData>> => {\n if (isObject(value)) {\n return createArrayOfValues<TData>(value);\n }\n\n return value as Flat<TData>;\n })\n );\n};\n\nexport { createArrayOfValues };\n"],"names":["createArrayOfValues","obj","isObject","flattenDeep","Object","values","map","value"],"mappings":";;;AAGA,MAAMA,sBAAsB,CAAQC,GAAAA,GAAAA;IAClC,IAAI,CAACC,SAASD,GAAAA,CAAAA,EAAM;AAClB,QAAA,OAAO,EAAE;AACX,IAAA;AAEA,IAAA,OAAOE,YACLC,MAAAA,CAAOC,MAAM,CAACJ,GAAAA,CAAAA,CAAKK,GAAG,CAAC,CAACC,KAAAA,GAAAA;AACtB,QAAA,IAAIL,SAASK,KAAAA,CAAAA,EAAQ;AACnB,YAAA,OAAOP,mBAAAA,CAA2BO,KAAAA,CAAAA;AACpC,QAAA;QAEA,OAAOA,KAAAA;AACT,IAAA,CAAA,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -34,6 +34,23 @@ const createDefaultForm = (layout, conditions, initialPermissions = [])=>{
|
|
|
34
34
|
return acc;
|
|
35
35
|
}, {});
|
|
36
36
|
};
|
|
37
|
+
const resolvePermissionPropertyValues = (property, matchingPermission)=>{
|
|
38
|
+
const rawValue = matchingPermission?.properties[property.value];
|
|
39
|
+
// null means "all locales" — expand to every available locale rather than
|
|
40
|
+
// folding into [] which would then narrow to [defaultLocale] on save.
|
|
41
|
+
if (rawValue === null && property.value === 'locales') {
|
|
42
|
+
return (property.children ?? []).map((child)=>child.value);
|
|
43
|
+
}
|
|
44
|
+
const storedValues = Array.isArray(rawValue) ? rawValue : [];
|
|
45
|
+
const shouldDefaultToLocale = property.value === 'locales' && matchingPermission !== undefined && storedValues.length === 0;
|
|
46
|
+
if (!shouldDefaultToLocale) {
|
|
47
|
+
return storedValues;
|
|
48
|
+
}
|
|
49
|
+
const defaultLocaleCode = property.children?.find((child)=>child.isDefault)?.value;
|
|
50
|
+
return defaultLocaleCode ? [
|
|
51
|
+
defaultLocaleCode
|
|
52
|
+
] : (property.children ?? []).map((child)=>child.value);
|
|
53
|
+
};
|
|
37
54
|
/**
|
|
38
55
|
* Creates the default form for all the properties found in a content type's layout
|
|
39
56
|
*/ const createDefaultPropertiesForm = (properties, subject, matchingPermission)=>{
|
|
@@ -53,7 +70,7 @@ const createDefaultForm = (layout, conditions, initialPermissions = [])=>{
|
|
|
53
70
|
return properties.reduce((acc, currentPropertyName)=>{
|
|
54
71
|
const foundProperty = subject.properties.find(({ value })=>value === currentPropertyName);
|
|
55
72
|
if (foundProperty) {
|
|
56
|
-
const matchingPermissionPropertyValues =
|
|
73
|
+
const matchingPermissionPropertyValues = resolvePermissionPropertyValues(foundProperty, matchingPermission);
|
|
57
74
|
const propertyForm = recursivelyCreatePropertyForm(foundProperty, matchingPermissionPropertyValues);
|
|
58
75
|
acc.properties[currentPropertyName] = propertyForm;
|
|
59
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forms.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/forms.ts"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport merge from 'lodash/merge';\n\nimport { findMatchingPermission } from './permissions';\n\nimport type { GenericLayout } from './layouts';\nimport type {\n Condition,\n SettingPermission,\n ContentPermission,\n Subject,\n SubjectProperty,\n} from '../../../../../../../shared/contracts/permissions';\nimport type { Permission } from '../../../../../../../shared/contracts/shared';\n\ntype ConditionForm = Record<string, boolean>;\n\n/**\n * Creates the default condition form: { [conditionId]: false }\n */\nconst createDefaultConditionsForm = (\n conditions: Condition[],\n initialConditions: Permission['conditions'] = []\n): ConditionForm =>\n conditions.reduce<ConditionForm>((acc, current) => {\n acc[current.id] = initialConditions.indexOf(current.id) !== -1;\n\n return acc;\n }, {});\n\ninterface SubCategoryForm {\n properties: {\n enabled: boolean;\n };\n conditions: ConditionForm;\n}\n\ntype ChildrenForm = Record<\n string,\n SubCategoryForm | (Omit<SubCategoryForm, 'properties'> & PropertyForm)\n>;\n\ntype Form = Record<string, ChildrenForm>;\n\nconst createDefaultForm = <TLayout extends Omit<SettingPermission, 'category'>>(\n layout: GenericLayout<TLayout>[],\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return layout.reduce<Record<string, Form>>((acc, { categoryId, childrenForm }) => {\n const childrenDefaultForm = childrenForm.reduce<Form>((acc, current) => {\n acc[current.subCategoryId] = current.actions.reduce<ChildrenForm>((acc, current) => {\n const foundMatchingPermission = findMatchingPermission(\n initialPermissions,\n current.action,\n null\n );\n\n acc[current.action] = {\n properties: {\n enabled: foundMatchingPermission !== undefined,\n },\n conditions: createDefaultConditionsForm(\n conditions,\n foundMatchingPermission?.conditions ?? []\n ),\n };\n\n return acc;\n }, {});\n\n return acc;\n }, {});\n\n acc[categoryId] = childrenDefaultForm;\n\n return acc;\n }, {});\n};\n\ninterface PropertyChildForm extends Record<string, boolean | PropertyChildForm> {}\n\ninterface PropertyForm {\n properties: PropertyChildForm;\n}\n\n/**\n * Creates the default form for all the properties found in a content type's layout\n */\nconst createDefaultPropertiesForm = (\n properties: string[],\n subject: Subject,\n matchingPermission?: Permission\n): PropertyForm => {\n const recursivelyCreatePropertyForm = (\n { children = [] }: SubjectProperty,\n propertyValues: string[],\n prefix = ''\n ): PropertyChildForm => {\n return children.reduce<PropertyChildForm>((acc, current) => {\n if (current.children) {\n return {\n ...acc,\n [current.value]: recursivelyCreatePropertyForm(\n current,\n propertyValues,\n `${prefix}${current.value}.`\n ),\n };\n }\n\n const hasProperty = propertyValues.indexOf(`${prefix}${current.value}`) !== -1;\n\n acc[current.value] = hasProperty;\n\n return acc;\n }, {});\n };\n\n return properties.reduce<PropertyForm>(\n (acc, currentPropertyName) => {\n const foundProperty = subject.properties.find(({ value }) => value === currentPropertyName);\n\n if (foundProperty) {\n const matchingPermissionPropertyValues =\n matchingPermission?.properties[foundProperty.value] ?? [];\n\n const propertyForm = recursivelyCreatePropertyForm(\n foundProperty,\n matchingPermissionPropertyValues\n );\n\n acc.properties[currentPropertyName] = propertyForm;\n }\n\n return acc;\n },\n { properties: {} }\n );\n};\n\n/**\n * Creates the default for a content type\n */\nconst createDefaultCTForm = (\n { subjects, actions = [] }: ContentPermission,\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return actions.reduce<Form>((defaultForm, action) => {\n type SubjectLayouts = Record<string, Subject>;\n\n const subjectLayouts = action.subjects.reduce<SubjectLayouts>((acc, current) => {\n const foundLayout = subjects.find(({ uid }) => uid === current) || null;\n\n if (foundLayout) {\n acc[current] = foundLayout;\n }\n\n return acc;\n }, {});\n\n // This can happen when an action is not related to a content type\n // for instance the D&P permission is applied only with the cts that\n // have the D&P features enabled\n if (isEmpty(subjectLayouts)) {\n return defaultForm;\n }\n\n // The object has the following shape: { [ctUID]: { [actionId]: { [property]: { enabled: false } } } }\n const contentTypesActions = Object.keys(subjectLayouts).reduce<Form>((acc, currentCTUID) => {\n const { actionId, applyToProperties } = action;\n const currentSubjectLayout = subjectLayouts[currentCTUID];\n const properties = currentSubjectLayout.properties.map(({ value }) => value);\n const doesNothaveProperty = properties.every(\n (property) => (applyToProperties || []).indexOf(property) === -1\n );\n\n const matchingPermission = findMatchingPermission(initialPermissions, actionId, currentCTUID);\n const conditionsForm = createDefaultConditionsForm(\n conditions,\n matchingPermission?.conditions ?? []\n );\n\n if (!acc[currentCTUID]) {\n acc[currentCTUID] = {};\n }\n\n if (isEmpty(applyToProperties) || doesNothaveProperty) {\n acc[currentCTUID][actionId] = {\n properties: {\n enabled: matchingPermission !== undefined,\n },\n conditions: conditionsForm,\n };\n\n return acc;\n }\n\n const propertiesForm = createDefaultPropertiesForm(\n applyToProperties,\n subjectLayouts[currentCTUID],\n matchingPermission\n );\n\n acc[currentCTUID][actionId] = { ...propertiesForm, conditions: conditionsForm };\n\n return acc;\n }, {});\n\n return merge(defaultForm, contentTypesActions);\n }, {});\n};\n\nexport { createDefaultConditionsForm, createDefaultForm, createDefaultCTForm };\nexport type { ConditionForm, Form, PropertyForm, SubCategoryForm, ChildrenForm, PropertyChildForm };\n"],"names":["createDefaultConditionsForm","conditions","initialConditions","reduce","acc","current","id","indexOf","createDefaultForm","layout","initialPermissions","categoryId","childrenForm","childrenDefaultForm","subCategoryId","actions","foundMatchingPermission","findMatchingPermission","action","properties","enabled","undefined","createDefaultPropertiesForm","subject","matchingPermission","recursivelyCreatePropertyForm","children","propertyValues","prefix","value","hasProperty","currentPropertyName","foundProperty","find","matchingPermissionPropertyValues","propertyForm","createDefaultCTForm","subjects","defaultForm","subjectLayouts","foundLayout","uid","isEmpty","contentTypesActions","Object","keys","currentCTUID","actionId","applyToProperties","currentSubjectLayout","map","doesNothaveProperty","every","property","conditionsForm","propertiesForm","merge"],"mappings":";;;;;;;;;;;AAiBA;;IAGA,MAAMA,2BAAAA,GAA8B,CAClCC,UAAAA,EACAC,iBAAAA,GAA8C,EAAE,GAEhDD,UAAAA,CAAWE,MAAM,CAAgB,CAACC,GAAAA,EAAKC,OAAAA,GAAAA;QACrCD,GAAG,CAACC,OAAAA,CAAQC,EAAE,CAAC,GAAGJ,iBAAAA,CAAkBK,OAAO,CAACF,OAAAA,CAAQC,EAAE,CAAA,KAAM,EAAC;QAE7D,OAAOF,GAAAA;AACT,IAAA,CAAA,EAAG,EAAC;AAgBN,MAAMI,iBAAAA,GAAoB,CACxBC,MAAAA,EACAR,UAAAA,EACAS,qBAAmC,EAAE,GAAA;IAErC,OAAOD,MAAAA,CAAON,MAAM,CAAuB,CAACC,KAAK,EAAEO,UAAU,EAAEC,YAAY,EAAE,GAAA;AAC3E,QAAA,MAAMC,mBAAAA,GAAsBD,YAAAA,CAAaT,MAAM,CAAO,CAACC,GAAAA,EAAKC,OAAAA,GAAAA;YAC1DD,GAAG,CAACC,OAAAA,CAAQS,aAAa,CAAC,GAAGT,OAAAA,CAAQU,OAAO,CAACZ,MAAM,CAAe,CAACC,GAAAA,EAAKC,OAAAA,GAAAA;AACtE,gBAAA,MAAMW,uBAAAA,GAA0BC,kCAAAA,CAC9BP,kBAAAA,EACAL,OAAAA,CAAQa,MAAM,EACd,IAAA,CAAA;AAGFd,gBAAAA,GAAG,CAACC,OAAAA,CAAQa,MAAM,CAAC,GAAG;oBACpBC,UAAAA,EAAY;AACVC,wBAAAA,OAAAA,EAASJ,uBAAAA,KAA4BK;AACvC,qBAAA;AACApB,oBAAAA,UAAAA,EAAYD,2BAAAA,CACVC,UAAAA,EACAe,uBAAAA,EAAyBf,UAAAA,IAAc,EAAE;AAE7C,iBAAA;gBAEA,OAAOG,GAAAA;AACT,YAAA,CAAA,EAAG,EAAC,CAAA;YAEJ,OAAOA,GAAAA;AACT,QAAA,CAAA,EAAG,EAAC,CAAA;QAEJA,GAAG,CAACO,WAAW,GAAGE,mBAAAA;QAElB,OAAOT,GAAAA;AACT,IAAA,CAAA,EAAG,EAAC,CAAA;AACN;AAQA;;AAEC,IACD,MAAMkB,2BAAAA,GAA8B,CAClCH,UAAAA,EACAI,OAAAA,EACAC,kBAAAA,GAAAA;IAEA,MAAMC,6BAAAA,GAAgC,CACpC,EAAEC,QAAAA,GAAW,EAAE,EAAmB,EAClCC,cAAAA,EACAC,MAAAA,GAAS,EAAE,GAAA;AAEX,QAAA,OAAOF,QAAAA,CAASvB,MAAM,CAAoB,CAACC,GAAAA,EAAKC,OAAAA,GAAAA;YAC9C,IAAIA,OAAAA,CAAQqB,QAAQ,EAAE;gBACpB,OAAO;AACL,oBAAA,GAAGtB,GAAG;AACN,oBAAA,CAACC,OAAAA,CAAQwB,KAAK,GAAGJ,6BAAAA,CACfpB,OAAAA,EACAsB,cAAAA,EACA,CAAA,EAAGC,MAAAA,CAAAA,EAASvB,OAAAA,CAAQwB,KAAK,CAAC,CAAC,CAAC;AAEhC,iBAAA;AACF,YAAA;YAEA,MAAMC,WAAAA,GAAcH,cAAAA,CAAepB,OAAO,CAAC,CAAA,EAAGqB,SAASvB,OAAAA,CAAQwB,KAAK,CAAA,CAAE,CAAA,KAAM,EAAC;AAE7EzB,YAAAA,GAAG,CAACC,OAAAA,CAAQwB,KAAK,CAAC,GAAGC,WAAAA;YAErB,OAAO1B,GAAAA;AACT,QAAA,CAAA,EAAG,EAAC,CAAA;AACN,IAAA,CAAA;AAEA,IAAA,OAAOe,UAAAA,CAAWhB,MAAM,CACtB,CAACC,GAAAA,EAAK2B,mBAAAA,GAAAA;QACJ,MAAMC,aAAAA,GAAgBT,OAAAA,CAAQJ,UAAU,CAACc,IAAI,CAAC,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAAA,KAAUE,mBAAAA,CAAAA;AAEvE,QAAA,IAAIC,aAAAA,EAAe;YACjB,MAAME,gCAAAA,GACJV,oBAAoBL,UAAU,CAACa,cAAcH,KAAK,CAAC,IAAI,EAAE;YAE3D,MAAMM,YAAAA,GAAeV,8BACnBO,aAAAA,EACAE,gCAAAA,CAAAA;YAGF9B,GAAAA,CAAIe,UAAU,CAACY,mBAAAA,CAAoB,GAAGI,YAAAA;AACxC,QAAA;QAEA,OAAO/B,GAAAA;IACT,CAAA,EACA;AAAEe,QAAAA,UAAAA,EAAY;AAAG,KAAA,CAAA;AAErB,CAAA;AAEA;;AAEC,IACD,MAAMiB,mBAAAA,GAAsB,CAC1B,EAAEC,QAAQ,EAAEtB,OAAAA,GAAU,EAAE,EAAqB,EAC7Cd,UAAAA,EACAS,kBAAAA,GAAmC,EAAE,GAAA;AAErC,IAAA,OAAOK,OAAAA,CAAQZ,MAAM,CAAO,CAACmC,WAAAA,EAAapB,MAAAA,GAAAA;AAGxC,QAAA,MAAMqB,iBAAiBrB,MAAAA,CAAOmB,QAAQ,CAAClC,MAAM,CAAiB,CAACC,GAAAA,EAAKC,OAAAA,GAAAA;YAClE,MAAMmC,WAAAA,GAAcH,QAAAA,CAASJ,IAAI,CAAC,CAAC,EAAEQ,GAAG,EAAE,GAAKA,GAAAA,KAAQpC,OAAAA,CAAAA,IAAY,IAAA;AAEnE,YAAA,IAAImC,WAAAA,EAAa;gBACfpC,GAAG,CAACC,QAAQ,GAAGmC,WAAAA;AACjB,YAAA;YAEA,OAAOpC,GAAAA;AACT,QAAA,CAAA,EAAG,EAAC,CAAA;;;;AAKJ,QAAA,IAAIsC,yBAAQH,cAAAA,CAAAA,EAAiB;YAC3B,OAAOD,WAAAA;AACT,QAAA;;QAGA,MAAMK,mBAAAA,GAAsBC,OAAOC,IAAI,CAACN,gBAAgBpC,MAAM,CAAO,CAACC,GAAAA,EAAK0C,YAAAA,GAAAA;AACzE,YAAA,MAAM,EAAEC,QAAQ,EAAEC,iBAAiB,EAAE,GAAG9B,MAAAA;YACxC,MAAM+B,oBAAAA,GAAuBV,cAAc,CAACO,YAAAA,CAAa;YACzD,MAAM3B,UAAAA,GAAa8B,oBAAAA,CAAqB9B,UAAU,CAAC+B,GAAG,CAAC,CAAC,EAAErB,KAAK,EAAE,GAAKA,KAAAA,CAAAA;AACtE,YAAA,MAAMsB,mBAAAA,GAAsBhC,UAAAA,CAAWiC,KAAK,CAC1C,CAACC,QAAAA,GAAcL,CAAAA,iBAAAA,IAAqB,EAAE,EAAEzC,OAAO,CAAC8C,cAAc,EAAC,CAAA;YAGjE,MAAM7B,kBAAAA,GAAqBP,kCAAAA,CAAuBP,kBAAAA,EAAoBqC,QAAAA,EAAUD,YAAAA,CAAAA;AAChF,YAAA,MAAMQ,cAAAA,GAAiBtD,2BAAAA,CACrBC,UAAAA,EACAuB,kBAAAA,EAAoBvB,cAAc,EAAE,CAAA;AAGtC,YAAA,IAAI,CAACG,GAAG,CAAC0C,YAAAA,CAAa,EAAE;gBACtB1C,GAAG,CAAC0C,YAAAA,CAAa,GAAG,EAAC;AACvB,YAAA;YAEA,IAAIJ,wBAAAA,CAAQM,sBAAsBG,mBAAAA,EAAqB;AACrD/C,gBAAAA,GAAG,CAAC0C,YAAAA,CAAa,CAACC,QAAAA,CAAS,GAAG;oBAC5B5B,UAAAA,EAAY;AACVC,wBAAAA,OAAAA,EAASI,kBAAAA,KAAuBH;AAClC,qBAAA;oBACApB,UAAAA,EAAYqD;AACd,iBAAA;gBAEA,OAAOlD,GAAAA;AACT,YAAA;AAEA,YAAA,MAAMmD,iBAAiBjC,2BAAAA,CACrB0B,iBAAAA,EACAT,cAAc,CAACO,aAAa,EAC5BtB,kBAAAA,CAAAA;AAGFpB,YAAAA,GAAG,CAAC0C,YAAAA,CAAa,CAACC,QAAAA,CAAS,GAAG;AAAE,gBAAA,GAAGQ,cAAc;gBAAEtD,UAAAA,EAAYqD;AAAe,aAAA;YAE9E,OAAOlD,GAAAA;AACT,QAAA,CAAA,EAAG,EAAC,CAAA;AAEJ,QAAA,OAAOoD,uBAAMlB,WAAAA,EAAaK,mBAAAA,CAAAA;AAC5B,IAAA,CAAA,EAAG,EAAC,CAAA;AACN;;;;;;"}
|
|
1
|
+
{"version":3,"file":"forms.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/forms.ts"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport merge from 'lodash/merge';\n\nimport { findMatchingPermission } from './permissions';\n\nimport type { GenericLayout } from './layouts';\nimport type {\n Condition,\n SettingPermission,\n ContentPermission,\n Subject,\n SubjectProperty,\n} from '../../../../../../../shared/contracts/permissions';\nimport type { Permission } from '../../../../../../../shared/contracts/shared';\n\ntype ConditionForm = Record<string, boolean>;\n\n/**\n * Creates the default condition form: { [conditionId]: false }\n */\nconst createDefaultConditionsForm = (\n conditions: Condition[],\n initialConditions: Permission['conditions'] = []\n): ConditionForm =>\n conditions.reduce<ConditionForm>((acc, current) => {\n acc[current.id] = initialConditions.indexOf(current.id) !== -1;\n\n return acc;\n }, {});\n\ninterface SubCategoryForm {\n properties: {\n enabled: boolean;\n };\n conditions: ConditionForm;\n}\n\ntype ChildrenForm = Record<\n string,\n SubCategoryForm | (Omit<SubCategoryForm, 'properties'> & PropertyForm)\n>;\n\ntype Form = Record<string, ChildrenForm>;\n\nconst createDefaultForm = <TLayout extends Omit<SettingPermission, 'category'>>(\n layout: GenericLayout<TLayout>[],\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return layout.reduce<Record<string, Form>>((acc, { categoryId, childrenForm }) => {\n const childrenDefaultForm = childrenForm.reduce<Form>((acc, current) => {\n acc[current.subCategoryId] = current.actions.reduce<ChildrenForm>((acc, current) => {\n const foundMatchingPermission = findMatchingPermission(\n initialPermissions,\n current.action,\n null\n );\n\n acc[current.action] = {\n properties: {\n enabled: foundMatchingPermission !== undefined,\n },\n conditions: createDefaultConditionsForm(\n conditions,\n foundMatchingPermission?.conditions ?? []\n ),\n };\n\n return acc;\n }, {});\n\n return acc;\n }, {});\n\n acc[categoryId] = childrenDefaultForm;\n\n return acc;\n }, {});\n};\n\ninterface PropertyChildForm extends Record<string, boolean | PropertyChildForm> {}\n\ninterface PropertyForm {\n properties: PropertyChildForm;\n}\n\nconst resolvePermissionPropertyValues = (\n property: SubjectProperty,\n matchingPermission?: Permission\n): string[] => {\n const rawValue = matchingPermission?.properties[property.value];\n\n // null means \"all locales\" — expand to every available locale rather than\n // folding into [] which would then narrow to [defaultLocale] on save.\n if (rawValue === null && property.value === 'locales') {\n return (property.children ?? []).map((child) => child.value);\n }\n\n const storedValues: string[] = Array.isArray(rawValue) ? rawValue : [];\n\n const shouldDefaultToLocale =\n property.value === 'locales' && matchingPermission !== undefined && storedValues.length === 0;\n\n if (!shouldDefaultToLocale) {\n return storedValues;\n }\n\n const defaultLocaleCode = property.children?.find((child) => child.isDefault)?.value;\n\n return defaultLocaleCode\n ? [defaultLocaleCode]\n : (property.children ?? []).map((child) => child.value);\n};\n\n/**\n * Creates the default form for all the properties found in a content type's layout\n */\nconst createDefaultPropertiesForm = (\n properties: string[],\n subject: Subject,\n matchingPermission?: Permission\n): PropertyForm => {\n const recursivelyCreatePropertyForm = (\n { children = [] }: SubjectProperty,\n propertyValues: string[],\n prefix = ''\n ): PropertyChildForm => {\n return children.reduce<PropertyChildForm>((acc, current) => {\n if (current.children) {\n return {\n ...acc,\n [current.value]: recursivelyCreatePropertyForm(\n current,\n propertyValues,\n `${prefix}${current.value}.`\n ),\n };\n }\n\n const hasProperty = propertyValues.indexOf(`${prefix}${current.value}`) !== -1;\n\n acc[current.value] = hasProperty;\n\n return acc;\n }, {});\n };\n\n return properties.reduce<PropertyForm>(\n (acc, currentPropertyName) => {\n const foundProperty = subject.properties.find(({ value }) => value === currentPropertyName);\n\n if (foundProperty) {\n const matchingPermissionPropertyValues = resolvePermissionPropertyValues(\n foundProperty,\n matchingPermission\n );\n\n const propertyForm = recursivelyCreatePropertyForm(\n foundProperty,\n matchingPermissionPropertyValues\n );\n\n acc.properties[currentPropertyName] = propertyForm;\n }\n\n return acc;\n },\n { properties: {} }\n );\n};\n\n/**\n * Creates the default for a content type\n */\nconst createDefaultCTForm = (\n { subjects, actions = [] }: ContentPermission,\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return actions.reduce<Form>((defaultForm, action) => {\n type SubjectLayouts = Record<string, Subject>;\n\n const subjectLayouts = action.subjects.reduce<SubjectLayouts>((acc, current) => {\n const foundLayout = subjects.find(({ uid }) => uid === current) || null;\n\n if (foundLayout) {\n acc[current] = foundLayout;\n }\n\n return acc;\n }, {});\n\n // This can happen when an action is not related to a content type\n // for instance the D&P permission is applied only with the cts that\n // have the D&P features enabled\n if (isEmpty(subjectLayouts)) {\n return defaultForm;\n }\n\n // The object has the following shape: { [ctUID]: { [actionId]: { [property]: { enabled: false } } } }\n const contentTypesActions = Object.keys(subjectLayouts).reduce<Form>((acc, currentCTUID) => {\n const { actionId, applyToProperties } = action;\n const currentSubjectLayout = subjectLayouts[currentCTUID];\n const properties = currentSubjectLayout.properties.map(({ value }) => value);\n const doesNothaveProperty = properties.every(\n (property) => (applyToProperties || []).indexOf(property) === -1\n );\n\n const matchingPermission = findMatchingPermission(initialPermissions, actionId, currentCTUID);\n const conditionsForm = createDefaultConditionsForm(\n conditions,\n matchingPermission?.conditions ?? []\n );\n\n if (!acc[currentCTUID]) {\n acc[currentCTUID] = {};\n }\n\n if (isEmpty(applyToProperties) || doesNothaveProperty) {\n acc[currentCTUID][actionId] = {\n properties: {\n enabled: matchingPermission !== undefined,\n },\n conditions: conditionsForm,\n };\n\n return acc;\n }\n\n const propertiesForm = createDefaultPropertiesForm(\n applyToProperties,\n subjectLayouts[currentCTUID],\n matchingPermission\n );\n\n acc[currentCTUID][actionId] = { ...propertiesForm, conditions: conditionsForm };\n\n return acc;\n }, {});\n\n return merge(defaultForm, contentTypesActions);\n }, {});\n};\n\nexport { createDefaultConditionsForm, createDefaultForm, createDefaultCTForm };\nexport type { ConditionForm, Form, PropertyForm, SubCategoryForm, ChildrenForm, PropertyChildForm };\n"],"names":["createDefaultConditionsForm","conditions","initialConditions","reduce","acc","current","id","indexOf","createDefaultForm","layout","initialPermissions","categoryId","childrenForm","childrenDefaultForm","subCategoryId","actions","foundMatchingPermission","findMatchingPermission","action","properties","enabled","undefined","resolvePermissionPropertyValues","property","matchingPermission","rawValue","value","children","map","child","storedValues","Array","isArray","shouldDefaultToLocale","length","defaultLocaleCode","find","isDefault","createDefaultPropertiesForm","subject","recursivelyCreatePropertyForm","propertyValues","prefix","hasProperty","currentPropertyName","foundProperty","matchingPermissionPropertyValues","propertyForm","createDefaultCTForm","subjects","defaultForm","subjectLayouts","foundLayout","uid","isEmpty","contentTypesActions","Object","keys","currentCTUID","actionId","applyToProperties","currentSubjectLayout","doesNothaveProperty","every","conditionsForm","propertiesForm","merge"],"mappings":"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"}
|
|
@@ -27,6 +27,23 @@ const createDefaultForm = (layout, conditions, initialPermissions = [])=>{
|
|
|
27
27
|
return acc;
|
|
28
28
|
}, {});
|
|
29
29
|
};
|
|
30
|
+
const resolvePermissionPropertyValues = (property, matchingPermission)=>{
|
|
31
|
+
const rawValue = matchingPermission?.properties[property.value];
|
|
32
|
+
// null means "all locales" — expand to every available locale rather than
|
|
33
|
+
// folding into [] which would then narrow to [defaultLocale] on save.
|
|
34
|
+
if (rawValue === null && property.value === 'locales') {
|
|
35
|
+
return (property.children ?? []).map((child)=>child.value);
|
|
36
|
+
}
|
|
37
|
+
const storedValues = Array.isArray(rawValue) ? rawValue : [];
|
|
38
|
+
const shouldDefaultToLocale = property.value === 'locales' && matchingPermission !== undefined && storedValues.length === 0;
|
|
39
|
+
if (!shouldDefaultToLocale) {
|
|
40
|
+
return storedValues;
|
|
41
|
+
}
|
|
42
|
+
const defaultLocaleCode = property.children?.find((child)=>child.isDefault)?.value;
|
|
43
|
+
return defaultLocaleCode ? [
|
|
44
|
+
defaultLocaleCode
|
|
45
|
+
] : (property.children ?? []).map((child)=>child.value);
|
|
46
|
+
};
|
|
30
47
|
/**
|
|
31
48
|
* Creates the default form for all the properties found in a content type's layout
|
|
32
49
|
*/ const createDefaultPropertiesForm = (properties, subject, matchingPermission)=>{
|
|
@@ -46,7 +63,7 @@ const createDefaultForm = (layout, conditions, initialPermissions = [])=>{
|
|
|
46
63
|
return properties.reduce((acc, currentPropertyName)=>{
|
|
47
64
|
const foundProperty = subject.properties.find(({ value })=>value === currentPropertyName);
|
|
48
65
|
if (foundProperty) {
|
|
49
|
-
const matchingPermissionPropertyValues =
|
|
66
|
+
const matchingPermissionPropertyValues = resolvePermissionPropertyValues(foundProperty, matchingPermission);
|
|
50
67
|
const propertyForm = recursivelyCreatePropertyForm(foundProperty, matchingPermissionPropertyValues);
|
|
51
68
|
acc.properties[currentPropertyName] = propertyForm;
|
|
52
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forms.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/forms.ts"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport merge from 'lodash/merge';\n\nimport { findMatchingPermission } from './permissions';\n\nimport type { GenericLayout } from './layouts';\nimport type {\n Condition,\n SettingPermission,\n ContentPermission,\n Subject,\n SubjectProperty,\n} from '../../../../../../../shared/contracts/permissions';\nimport type { Permission } from '../../../../../../../shared/contracts/shared';\n\ntype ConditionForm = Record<string, boolean>;\n\n/**\n * Creates the default condition form: { [conditionId]: false }\n */\nconst createDefaultConditionsForm = (\n conditions: Condition[],\n initialConditions: Permission['conditions'] = []\n): ConditionForm =>\n conditions.reduce<ConditionForm>((acc, current) => {\n acc[current.id] = initialConditions.indexOf(current.id) !== -1;\n\n return acc;\n }, {});\n\ninterface SubCategoryForm {\n properties: {\n enabled: boolean;\n };\n conditions: ConditionForm;\n}\n\ntype ChildrenForm = Record<\n string,\n SubCategoryForm | (Omit<SubCategoryForm, 'properties'> & PropertyForm)\n>;\n\ntype Form = Record<string, ChildrenForm>;\n\nconst createDefaultForm = <TLayout extends Omit<SettingPermission, 'category'>>(\n layout: GenericLayout<TLayout>[],\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return layout.reduce<Record<string, Form>>((acc, { categoryId, childrenForm }) => {\n const childrenDefaultForm = childrenForm.reduce<Form>((acc, current) => {\n acc[current.subCategoryId] = current.actions.reduce<ChildrenForm>((acc, current) => {\n const foundMatchingPermission = findMatchingPermission(\n initialPermissions,\n current.action,\n null\n );\n\n acc[current.action] = {\n properties: {\n enabled: foundMatchingPermission !== undefined,\n },\n conditions: createDefaultConditionsForm(\n conditions,\n foundMatchingPermission?.conditions ?? []\n ),\n };\n\n return acc;\n }, {});\n\n return acc;\n }, {});\n\n acc[categoryId] = childrenDefaultForm;\n\n return acc;\n }, {});\n};\n\ninterface PropertyChildForm extends Record<string, boolean | PropertyChildForm> {}\n\ninterface PropertyForm {\n properties: PropertyChildForm;\n}\n\n/**\n * Creates the default form for all the properties found in a content type's layout\n */\nconst createDefaultPropertiesForm = (\n properties: string[],\n subject: Subject,\n matchingPermission?: Permission\n): PropertyForm => {\n const recursivelyCreatePropertyForm = (\n { children = [] }: SubjectProperty,\n propertyValues: string[],\n prefix = ''\n ): PropertyChildForm => {\n return children.reduce<PropertyChildForm>((acc, current) => {\n if (current.children) {\n return {\n ...acc,\n [current.value]: recursivelyCreatePropertyForm(\n current,\n propertyValues,\n `${prefix}${current.value}.`\n ),\n };\n }\n\n const hasProperty = propertyValues.indexOf(`${prefix}${current.value}`) !== -1;\n\n acc[current.value] = hasProperty;\n\n return acc;\n }, {});\n };\n\n return properties.reduce<PropertyForm>(\n (acc, currentPropertyName) => {\n const foundProperty = subject.properties.find(({ value }) => value === currentPropertyName);\n\n if (foundProperty) {\n const matchingPermissionPropertyValues =\n matchingPermission?.properties[foundProperty.value] ?? [];\n\n const propertyForm = recursivelyCreatePropertyForm(\n foundProperty,\n matchingPermissionPropertyValues\n );\n\n acc.properties[currentPropertyName] = propertyForm;\n }\n\n return acc;\n },\n { properties: {} }\n );\n};\n\n/**\n * Creates the default for a content type\n */\nconst createDefaultCTForm = (\n { subjects, actions = [] }: ContentPermission,\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return actions.reduce<Form>((defaultForm, action) => {\n type SubjectLayouts = Record<string, Subject>;\n\n const subjectLayouts = action.subjects.reduce<SubjectLayouts>((acc, current) => {\n const foundLayout = subjects.find(({ uid }) => uid === current) || null;\n\n if (foundLayout) {\n acc[current] = foundLayout;\n }\n\n return acc;\n }, {});\n\n // This can happen when an action is not related to a content type\n // for instance the D&P permission is applied only with the cts that\n // have the D&P features enabled\n if (isEmpty(subjectLayouts)) {\n return defaultForm;\n }\n\n // The object has the following shape: { [ctUID]: { [actionId]: { [property]: { enabled: false } } } }\n const contentTypesActions = Object.keys(subjectLayouts).reduce<Form>((acc, currentCTUID) => {\n const { actionId, applyToProperties } = action;\n const currentSubjectLayout = subjectLayouts[currentCTUID];\n const properties = currentSubjectLayout.properties.map(({ value }) => value);\n const doesNothaveProperty = properties.every(\n (property) => (applyToProperties || []).indexOf(property) === -1\n );\n\n const matchingPermission = findMatchingPermission(initialPermissions, actionId, currentCTUID);\n const conditionsForm = createDefaultConditionsForm(\n conditions,\n matchingPermission?.conditions ?? []\n );\n\n if (!acc[currentCTUID]) {\n acc[currentCTUID] = {};\n }\n\n if (isEmpty(applyToProperties) || doesNothaveProperty) {\n acc[currentCTUID][actionId] = {\n properties: {\n enabled: matchingPermission !== undefined,\n },\n conditions: conditionsForm,\n };\n\n return acc;\n }\n\n const propertiesForm = createDefaultPropertiesForm(\n applyToProperties,\n subjectLayouts[currentCTUID],\n matchingPermission\n );\n\n acc[currentCTUID][actionId] = { ...propertiesForm, conditions: conditionsForm };\n\n return acc;\n }, {});\n\n return merge(defaultForm, contentTypesActions);\n }, {});\n};\n\nexport { createDefaultConditionsForm, createDefaultForm, createDefaultCTForm };\nexport type { ConditionForm, Form, PropertyForm, SubCategoryForm, ChildrenForm, PropertyChildForm };\n"],"names":["createDefaultConditionsForm","conditions","initialConditions","reduce","acc","current","id","indexOf","createDefaultForm","layout","initialPermissions","categoryId","childrenForm","childrenDefaultForm","subCategoryId","actions","foundMatchingPermission","findMatchingPermission","action","properties","enabled","undefined","createDefaultPropertiesForm","subject","matchingPermission","recursivelyCreatePropertyForm","children","propertyValues","prefix","value","hasProperty","currentPropertyName","foundProperty","find","matchingPermissionPropertyValues","propertyForm","createDefaultCTForm","subjects","defaultForm","subjectLayouts","foundLayout","uid","isEmpty","contentTypesActions","Object","keys","currentCTUID","actionId","applyToProperties","currentSubjectLayout","map","doesNothaveProperty","every","property","conditionsForm","propertiesForm","merge"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"forms.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/forms.ts"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport merge from 'lodash/merge';\n\nimport { findMatchingPermission } from './permissions';\n\nimport type { GenericLayout } from './layouts';\nimport type {\n Condition,\n SettingPermission,\n ContentPermission,\n Subject,\n SubjectProperty,\n} from '../../../../../../../shared/contracts/permissions';\nimport type { Permission } from '../../../../../../../shared/contracts/shared';\n\ntype ConditionForm = Record<string, boolean>;\n\n/**\n * Creates the default condition form: { [conditionId]: false }\n */\nconst createDefaultConditionsForm = (\n conditions: Condition[],\n initialConditions: Permission['conditions'] = []\n): ConditionForm =>\n conditions.reduce<ConditionForm>((acc, current) => {\n acc[current.id] = initialConditions.indexOf(current.id) !== -1;\n\n return acc;\n }, {});\n\ninterface SubCategoryForm {\n properties: {\n enabled: boolean;\n };\n conditions: ConditionForm;\n}\n\ntype ChildrenForm = Record<\n string,\n SubCategoryForm | (Omit<SubCategoryForm, 'properties'> & PropertyForm)\n>;\n\ntype Form = Record<string, ChildrenForm>;\n\nconst createDefaultForm = <TLayout extends Omit<SettingPermission, 'category'>>(\n layout: GenericLayout<TLayout>[],\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return layout.reduce<Record<string, Form>>((acc, { categoryId, childrenForm }) => {\n const childrenDefaultForm = childrenForm.reduce<Form>((acc, current) => {\n acc[current.subCategoryId] = current.actions.reduce<ChildrenForm>((acc, current) => {\n const foundMatchingPermission = findMatchingPermission(\n initialPermissions,\n current.action,\n null\n );\n\n acc[current.action] = {\n properties: {\n enabled: foundMatchingPermission !== undefined,\n },\n conditions: createDefaultConditionsForm(\n conditions,\n foundMatchingPermission?.conditions ?? []\n ),\n };\n\n return acc;\n }, {});\n\n return acc;\n }, {});\n\n acc[categoryId] = childrenDefaultForm;\n\n return acc;\n }, {});\n};\n\ninterface PropertyChildForm extends Record<string, boolean | PropertyChildForm> {}\n\ninterface PropertyForm {\n properties: PropertyChildForm;\n}\n\nconst resolvePermissionPropertyValues = (\n property: SubjectProperty,\n matchingPermission?: Permission\n): string[] => {\n const rawValue = matchingPermission?.properties[property.value];\n\n // null means \"all locales\" — expand to every available locale rather than\n // folding into [] which would then narrow to [defaultLocale] on save.\n if (rawValue === null && property.value === 'locales') {\n return (property.children ?? []).map((child) => child.value);\n }\n\n const storedValues: string[] = Array.isArray(rawValue) ? rawValue : [];\n\n const shouldDefaultToLocale =\n property.value === 'locales' && matchingPermission !== undefined && storedValues.length === 0;\n\n if (!shouldDefaultToLocale) {\n return storedValues;\n }\n\n const defaultLocaleCode = property.children?.find((child) => child.isDefault)?.value;\n\n return defaultLocaleCode\n ? [defaultLocaleCode]\n : (property.children ?? []).map((child) => child.value);\n};\n\n/**\n * Creates the default form for all the properties found in a content type's layout\n */\nconst createDefaultPropertiesForm = (\n properties: string[],\n subject: Subject,\n matchingPermission?: Permission\n): PropertyForm => {\n const recursivelyCreatePropertyForm = (\n { children = [] }: SubjectProperty,\n propertyValues: string[],\n prefix = ''\n ): PropertyChildForm => {\n return children.reduce<PropertyChildForm>((acc, current) => {\n if (current.children) {\n return {\n ...acc,\n [current.value]: recursivelyCreatePropertyForm(\n current,\n propertyValues,\n `${prefix}${current.value}.`\n ),\n };\n }\n\n const hasProperty = propertyValues.indexOf(`${prefix}${current.value}`) !== -1;\n\n acc[current.value] = hasProperty;\n\n return acc;\n }, {});\n };\n\n return properties.reduce<PropertyForm>(\n (acc, currentPropertyName) => {\n const foundProperty = subject.properties.find(({ value }) => value === currentPropertyName);\n\n if (foundProperty) {\n const matchingPermissionPropertyValues = resolvePermissionPropertyValues(\n foundProperty,\n matchingPermission\n );\n\n const propertyForm = recursivelyCreatePropertyForm(\n foundProperty,\n matchingPermissionPropertyValues\n );\n\n acc.properties[currentPropertyName] = propertyForm;\n }\n\n return acc;\n },\n { properties: {} }\n );\n};\n\n/**\n * Creates the default for a content type\n */\nconst createDefaultCTForm = (\n { subjects, actions = [] }: ContentPermission,\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return actions.reduce<Form>((defaultForm, action) => {\n type SubjectLayouts = Record<string, Subject>;\n\n const subjectLayouts = action.subjects.reduce<SubjectLayouts>((acc, current) => {\n const foundLayout = subjects.find(({ uid }) => uid === current) || null;\n\n if (foundLayout) {\n acc[current] = foundLayout;\n }\n\n return acc;\n }, {});\n\n // This can happen when an action is not related to a content type\n // for instance the D&P permission is applied only with the cts that\n // have the D&P features enabled\n if (isEmpty(subjectLayouts)) {\n return defaultForm;\n }\n\n // The object has the following shape: { [ctUID]: { [actionId]: { [property]: { enabled: false } } } }\n const contentTypesActions = Object.keys(subjectLayouts).reduce<Form>((acc, currentCTUID) => {\n const { actionId, applyToProperties } = action;\n const currentSubjectLayout = subjectLayouts[currentCTUID];\n const properties = currentSubjectLayout.properties.map(({ value }) => value);\n const doesNothaveProperty = properties.every(\n (property) => (applyToProperties || []).indexOf(property) === -1\n );\n\n const matchingPermission = findMatchingPermission(initialPermissions, actionId, currentCTUID);\n const conditionsForm = createDefaultConditionsForm(\n conditions,\n matchingPermission?.conditions ?? []\n );\n\n if (!acc[currentCTUID]) {\n acc[currentCTUID] = {};\n }\n\n if (isEmpty(applyToProperties) || doesNothaveProperty) {\n acc[currentCTUID][actionId] = {\n properties: {\n enabled: matchingPermission !== undefined,\n },\n conditions: conditionsForm,\n };\n\n return acc;\n }\n\n const propertiesForm = createDefaultPropertiesForm(\n applyToProperties,\n subjectLayouts[currentCTUID],\n matchingPermission\n );\n\n acc[currentCTUID][actionId] = { ...propertiesForm, conditions: conditionsForm };\n\n return acc;\n }, {});\n\n return merge(defaultForm, contentTypesActions);\n }, {});\n};\n\nexport { createDefaultConditionsForm, createDefaultForm, createDefaultCTForm };\nexport type { ConditionForm, Form, PropertyForm, SubCategoryForm, ChildrenForm, PropertyChildForm };\n"],"names":["createDefaultConditionsForm","conditions","initialConditions","reduce","acc","current","id","indexOf","createDefaultForm","layout","initialPermissions","categoryId","childrenForm","childrenDefaultForm","subCategoryId","actions","foundMatchingPermission","findMatchingPermission","action","properties","enabled","undefined","resolvePermissionPropertyValues","property","matchingPermission","rawValue","value","children","map","child","storedValues","Array","isArray","shouldDefaultToLocale","length","defaultLocaleCode","find","isDefault","createDefaultPropertiesForm","subject","recursivelyCreatePropertyForm","propertyValues","prefix","hasProperty","currentPropertyName","foundProperty","matchingPermissionPropertyValues","propertyForm","createDefaultCTForm","subjects","defaultForm","subjectLayouts","foundLayout","uid","isEmpty","contentTypesActions","Object","keys","currentCTUID","actionId","applyToProperties","currentSubjectLayout","doesNothaveProperty","every","conditionsForm","propertiesForm","merge"],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var omit = require('lodash/omit');
|
|
4
|
+
var objects = require('../../../../../utils/objects.js');
|
|
5
|
+
var createArrayOfValues = require('./createArrayOfValues.js');
|
|
6
|
+
|
|
7
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
|
+
|
|
9
|
+
var omit__default = /*#__PURE__*/_interopDefault(omit);
|
|
10
|
+
|
|
11
|
+
const getActionLocales = (actionData)=>{
|
|
12
|
+
if (!('properties' in actionData)) {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
const { properties } = actionData;
|
|
16
|
+
if (!objects.isObject(properties) || !('locales' in properties)) {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
return properties.locales;
|
|
20
|
+
};
|
|
21
|
+
const isActionEnabled = (actionData)=>{
|
|
22
|
+
return createArrayOfValues.createArrayOfValues(omit__default.default(actionData, 'conditions')).some(Boolean);
|
|
23
|
+
};
|
|
24
|
+
const hasSelectedLocales = (locales)=>{
|
|
25
|
+
return createArrayOfValues.createArrayOfValues(locales).some(Boolean);
|
|
26
|
+
};
|
|
27
|
+
const subjectHasLocaleValidationError = (actions = {})=>{
|
|
28
|
+
return Object.values(actions).some((actionData)=>{
|
|
29
|
+
const locales = getActionLocales(actionData);
|
|
30
|
+
if (locales === undefined) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
return isActionEnabled(actionData) && !hasSelectedLocales(locales);
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
const hasLocaleValidationErrors = (modifiedData)=>{
|
|
37
|
+
return [
|
|
38
|
+
'collectionTypes',
|
|
39
|
+
'singleTypes'
|
|
40
|
+
].some((kind)=>Object.values(modifiedData[kind] ?? {}).some(subjectHasLocaleValidationError));
|
|
41
|
+
};
|
|
42
|
+
const getLocaleValidationErrorActionKeys = (modifiedData, kind, subject)=>{
|
|
43
|
+
const actions = modifiedData[kind]?.[subject];
|
|
44
|
+
if (!actions) {
|
|
45
|
+
return [];
|
|
46
|
+
}
|
|
47
|
+
return Object.keys(actions).filter((actionKey)=>{
|
|
48
|
+
const actionData = actions[actionKey];
|
|
49
|
+
const locales = getActionLocales(actionData);
|
|
50
|
+
if (locales === undefined) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
return isActionEnabled(actionData) && !hasSelectedLocales(locales);
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
exports.getLocaleValidationErrorActionKeys = getLocaleValidationErrorActionKeys;
|
|
58
|
+
exports.hasLocaleValidationErrors = hasLocaleValidationErrors;
|
|
59
|
+
//# sourceMappingURL=localePermissionValidation.js.map
|
package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localePermissionValidation.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.ts"],"sourcesContent":["import omit from 'lodash/omit';\n\nimport { isObject } from '../../../../../utils/objects';\n\nimport { createArrayOfValues } from './createArrayOfValues';\n\nimport type { ChildrenForm } from './forms';\nimport type { PermissionsDataManagerContextValue } from '../hooks/usePermissionsDataManager';\n\ntype ContentTypeKind = 'collectionTypes' | 'singleTypes';\n\nconst getActionLocales = (actionData: ChildrenForm[string]): unknown => {\n if (!('properties' in actionData)) {\n return undefined;\n }\n\n const { properties } = actionData;\n\n if (!isObject(properties) || !('locales' in properties)) {\n return undefined;\n }\n\n return properties.locales;\n};\n\nconst isActionEnabled = (actionData: ChildrenForm[string]) => {\n return createArrayOfValues(omit(actionData, 'conditions')).some(Boolean);\n};\n\nconst hasSelectedLocales = (locales: unknown) => {\n return createArrayOfValues(locales).some(Boolean);\n};\n\nconst subjectHasLocaleValidationError = (actions: ChildrenForm = {}): boolean => {\n return Object.values(actions).some((actionData) => {\n const locales = getActionLocales(actionData);\n\n if (locales === undefined) {\n return false;\n }\n\n return isActionEnabled(actionData) && !hasSelectedLocales(locales);\n });\n};\n\nconst hasLocaleValidationErrors = (\n modifiedData: PermissionsDataManagerContextValue['modifiedData']\n): boolean => {\n return (['collectionTypes', 'singleTypes'] as const).some((kind) =>\n Object.values(modifiedData[kind] ?? {}).some(subjectHasLocaleValidationError)\n );\n};\n\nconst getLocaleValidationErrorActionKeys = (\n modifiedData: PermissionsDataManagerContextValue['modifiedData'],\n kind: ContentTypeKind,\n subject: string\n): string[] => {\n const actions = modifiedData[kind]?.[subject];\n\n if (!actions) {\n return [];\n }\n\n return Object.keys(actions).filter((actionKey) => {\n const actionData = actions[actionKey];\n const locales = getActionLocales(actionData);\n\n if (locales === undefined) {\n return false;\n }\n\n return isActionEnabled(actionData) && !hasSelectedLocales(locales);\n });\n};\n\nexport { hasLocaleValidationErrors, getLocaleValidationErrorActionKeys };\n"],"names":["getActionLocales","actionData","undefined","properties","isObject","locales","isActionEnabled","createArrayOfValues","omit","some","Boolean","hasSelectedLocales","subjectHasLocaleValidationError","actions","Object","values","hasLocaleValidationErrors","modifiedData","kind","getLocaleValidationErrorActionKeys","subject","keys","filter","actionKey"],"mappings":";;;;;;;;;;AAWA,MAAMA,mBAAmB,CAACC,UAAAA,GAAAA;AACxB,IAAA,IAAI,EAAE,YAAA,IAAgBA,UAAS,CAAA,EAAI;QACjC,OAAOC,SAAAA;AACT,IAAA;IAEA,MAAM,EAAEC,UAAU,EAAE,GAAGF,UAAAA;AAEvB,IAAA,IAAI,CAACG,gBAAAA,CAASD,UAAAA,CAAAA,IAAe,EAAE,SAAA,IAAaA,UAAS,CAAA,EAAI;QACvD,OAAOD,SAAAA;AACT,IAAA;AAEA,IAAA,OAAOC,WAAWE,OAAO;AAC3B,CAAA;AAEA,MAAMC,kBAAkB,CAACL,UAAAA,GAAAA;AACvB,IAAA,OAAOM,uCAAAA,CAAoBC,qBAAAA,CAAKP,UAAAA,EAAY,YAAA,CAAA,CAAA,CAAeQ,IAAI,CAACC,OAAAA,CAAAA;AAClE,CAAA;AAEA,MAAMC,qBAAqB,CAACN,OAAAA,GAAAA;IAC1B,OAAOE,uCAAAA,CAAoBF,OAAAA,CAAAA,CAASI,IAAI,CAACC,OAAAA,CAAAA;AAC3C,CAAA;AAEA,MAAME,+BAAAA,GAAkC,CAACC,OAAAA,GAAwB,EAAE,GAAA;AACjE,IAAA,OAAOC,OAAOC,MAAM,CAACF,OAAAA,CAAAA,CAASJ,IAAI,CAAC,CAACR,UAAAA,GAAAA;AAClC,QAAA,MAAMI,UAAUL,gBAAAA,CAAiBC,UAAAA,CAAAA;AAEjC,QAAA,IAAII,YAAYH,SAAAA,EAAW;YACzB,OAAO,KAAA;AACT,QAAA;QAEA,OAAOI,eAAAA,CAAgBL,UAAAA,CAAAA,IAAe,CAACU,kBAAAA,CAAmBN,OAAAA,CAAAA;AAC5D,IAAA,CAAA,CAAA;AACF,CAAA;AAEA,MAAMW,4BAA4B,CAChCC,YAAAA,GAAAA;AAEA,IAAA,OAAO;AAAE,QAAA,iBAAA;AAAmB,QAAA;AAAc,KAAA,CAAWR,IAAI,CAAC,CAACS,IAAAA,GACzDJ,OAAOC,MAAM,CAACE,YAAY,CAACC,IAAAA,CAAK,IAAI,EAAC,CAAA,CAAGT,IAAI,CAACG,+BAAAA,CAAAA,CAAAA;AAEjD;AAEA,MAAMO,kCAAAA,GAAqC,CACzCF,YAAAA,EACAC,IAAAA,EACAE,OAAAA,GAAAA;AAEA,IAAA,MAAMP,UAAUI,YAAY,CAACC,IAAAA,CAAK,GAAGE,OAAAA,CAAQ;AAE7C,IAAA,IAAI,CAACP,OAAAA,EAAS;AACZ,QAAA,OAAO,EAAE;AACX,IAAA;AAEA,IAAA,OAAOC,OAAOO,IAAI,CAACR,OAAAA,CAAAA,CAASS,MAAM,CAAC,CAACC,SAAAA,GAAAA;QAClC,MAAMtB,UAAAA,GAAaY,OAAO,CAACU,SAAAA,CAAU;AACrC,QAAA,MAAMlB,UAAUL,gBAAAA,CAAiBC,UAAAA,CAAAA;AAEjC,QAAA,IAAII,YAAYH,SAAAA,EAAW;YACzB,OAAO,KAAA;AACT,QAAA;QAEA,OAAOI,eAAAA,CAAgBL,UAAAA,CAAAA,IAAe,CAACU,kBAAAA,CAAmBN,OAAAA,CAAAA;AAC5D,IAAA,CAAA,CAAA;AACF;;;;;"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import omit from 'lodash/omit';
|
|
2
|
+
import { isObject } from '../../../../../utils/objects.mjs';
|
|
3
|
+
import { createArrayOfValues } from './createArrayOfValues.mjs';
|
|
4
|
+
|
|
5
|
+
const getActionLocales = (actionData)=>{
|
|
6
|
+
if (!('properties' in actionData)) {
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
const { properties } = actionData;
|
|
10
|
+
if (!isObject(properties) || !('locales' in properties)) {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
return properties.locales;
|
|
14
|
+
};
|
|
15
|
+
const isActionEnabled = (actionData)=>{
|
|
16
|
+
return createArrayOfValues(omit(actionData, 'conditions')).some(Boolean);
|
|
17
|
+
};
|
|
18
|
+
const hasSelectedLocales = (locales)=>{
|
|
19
|
+
return createArrayOfValues(locales).some(Boolean);
|
|
20
|
+
};
|
|
21
|
+
const subjectHasLocaleValidationError = (actions = {})=>{
|
|
22
|
+
return Object.values(actions).some((actionData)=>{
|
|
23
|
+
const locales = getActionLocales(actionData);
|
|
24
|
+
if (locales === undefined) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
return isActionEnabled(actionData) && !hasSelectedLocales(locales);
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
const hasLocaleValidationErrors = (modifiedData)=>{
|
|
31
|
+
return [
|
|
32
|
+
'collectionTypes',
|
|
33
|
+
'singleTypes'
|
|
34
|
+
].some((kind)=>Object.values(modifiedData[kind] ?? {}).some(subjectHasLocaleValidationError));
|
|
35
|
+
};
|
|
36
|
+
const getLocaleValidationErrorActionKeys = (modifiedData, kind, subject)=>{
|
|
37
|
+
const actions = modifiedData[kind]?.[subject];
|
|
38
|
+
if (!actions) {
|
|
39
|
+
return [];
|
|
40
|
+
}
|
|
41
|
+
return Object.keys(actions).filter((actionKey)=>{
|
|
42
|
+
const actionData = actions[actionKey];
|
|
43
|
+
const locales = getActionLocales(actionData);
|
|
44
|
+
if (locales === undefined) {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
return isActionEnabled(actionData) && !hasSelectedLocales(locales);
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export { getLocaleValidationErrorActionKeys, hasLocaleValidationErrors };
|
|
52
|
+
//# sourceMappingURL=localePermissionValidation.mjs.map
|
package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localePermissionValidation.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.ts"],"sourcesContent":["import omit from 'lodash/omit';\n\nimport { isObject } from '../../../../../utils/objects';\n\nimport { createArrayOfValues } from './createArrayOfValues';\n\nimport type { ChildrenForm } from './forms';\nimport type { PermissionsDataManagerContextValue } from '../hooks/usePermissionsDataManager';\n\ntype ContentTypeKind = 'collectionTypes' | 'singleTypes';\n\nconst getActionLocales = (actionData: ChildrenForm[string]): unknown => {\n if (!('properties' in actionData)) {\n return undefined;\n }\n\n const { properties } = actionData;\n\n if (!isObject(properties) || !('locales' in properties)) {\n return undefined;\n }\n\n return properties.locales;\n};\n\nconst isActionEnabled = (actionData: ChildrenForm[string]) => {\n return createArrayOfValues(omit(actionData, 'conditions')).some(Boolean);\n};\n\nconst hasSelectedLocales = (locales: unknown) => {\n return createArrayOfValues(locales).some(Boolean);\n};\n\nconst subjectHasLocaleValidationError = (actions: ChildrenForm = {}): boolean => {\n return Object.values(actions).some((actionData) => {\n const locales = getActionLocales(actionData);\n\n if (locales === undefined) {\n return false;\n }\n\n return isActionEnabled(actionData) && !hasSelectedLocales(locales);\n });\n};\n\nconst hasLocaleValidationErrors = (\n modifiedData: PermissionsDataManagerContextValue['modifiedData']\n): boolean => {\n return (['collectionTypes', 'singleTypes'] as const).some((kind) =>\n Object.values(modifiedData[kind] ?? {}).some(subjectHasLocaleValidationError)\n );\n};\n\nconst getLocaleValidationErrorActionKeys = (\n modifiedData: PermissionsDataManagerContextValue['modifiedData'],\n kind: ContentTypeKind,\n subject: string\n): string[] => {\n const actions = modifiedData[kind]?.[subject];\n\n if (!actions) {\n return [];\n }\n\n return Object.keys(actions).filter((actionKey) => {\n const actionData = actions[actionKey];\n const locales = getActionLocales(actionData);\n\n if (locales === undefined) {\n return false;\n }\n\n return isActionEnabled(actionData) && !hasSelectedLocales(locales);\n });\n};\n\nexport { hasLocaleValidationErrors, getLocaleValidationErrorActionKeys };\n"],"names":["getActionLocales","actionData","undefined","properties","isObject","locales","isActionEnabled","createArrayOfValues","omit","some","Boolean","hasSelectedLocales","subjectHasLocaleValidationError","actions","Object","values","hasLocaleValidationErrors","modifiedData","kind","getLocaleValidationErrorActionKeys","subject","keys","filter","actionKey"],"mappings":";;;;AAWA,MAAMA,mBAAmB,CAACC,UAAAA,GAAAA;AACxB,IAAA,IAAI,EAAE,YAAA,IAAgBA,UAAS,CAAA,EAAI;QACjC,OAAOC,SAAAA;AACT,IAAA;IAEA,MAAM,EAAEC,UAAU,EAAE,GAAGF,UAAAA;AAEvB,IAAA,IAAI,CAACG,QAAAA,CAASD,UAAAA,CAAAA,IAAe,EAAE,SAAA,IAAaA,UAAS,CAAA,EAAI;QACvD,OAAOD,SAAAA;AACT,IAAA;AAEA,IAAA,OAAOC,WAAWE,OAAO;AAC3B,CAAA;AAEA,MAAMC,kBAAkB,CAACL,UAAAA,GAAAA;AACvB,IAAA,OAAOM,mBAAAA,CAAoBC,IAAAA,CAAKP,UAAAA,EAAY,YAAA,CAAA,CAAA,CAAeQ,IAAI,CAACC,OAAAA,CAAAA;AAClE,CAAA;AAEA,MAAMC,qBAAqB,CAACN,OAAAA,GAAAA;IAC1B,OAAOE,mBAAAA,CAAoBF,OAAAA,CAAAA,CAASI,IAAI,CAACC,OAAAA,CAAAA;AAC3C,CAAA;AAEA,MAAME,+BAAAA,GAAkC,CAACC,OAAAA,GAAwB,EAAE,GAAA;AACjE,IAAA,OAAOC,OAAOC,MAAM,CAACF,OAAAA,CAAAA,CAASJ,IAAI,CAAC,CAACR,UAAAA,GAAAA;AAClC,QAAA,MAAMI,UAAUL,gBAAAA,CAAiBC,UAAAA,CAAAA;AAEjC,QAAA,IAAII,YAAYH,SAAAA,EAAW;YACzB,OAAO,KAAA;AACT,QAAA;QAEA,OAAOI,eAAAA,CAAgBL,UAAAA,CAAAA,IAAe,CAACU,kBAAAA,CAAmBN,OAAAA,CAAAA;AAC5D,IAAA,CAAA,CAAA;AACF,CAAA;AAEA,MAAMW,4BAA4B,CAChCC,YAAAA,GAAAA;AAEA,IAAA,OAAO;AAAE,QAAA,iBAAA;AAAmB,QAAA;AAAc,KAAA,CAAWR,IAAI,CAAC,CAACS,IAAAA,GACzDJ,OAAOC,MAAM,CAACE,YAAY,CAACC,IAAAA,CAAK,IAAI,EAAC,CAAA,CAAGT,IAAI,CAACG,+BAAAA,CAAAA,CAAAA;AAEjD;AAEA,MAAMO,kCAAAA,GAAqC,CACzCF,YAAAA,EACAC,IAAAA,EACAE,OAAAA,GAAAA;AAEA,IAAA,MAAMP,UAAUI,YAAY,CAACC,IAAAA,CAAK,GAAGE,OAAAA,CAAQ;AAE7C,IAAA,IAAI,CAACP,OAAAA,EAAS;AACZ,QAAA,OAAO,EAAE;AACX,IAAA;AAEA,IAAA,OAAOC,OAAOO,IAAI,CAACR,OAAAA,CAAAA,CAASS,MAAM,CAAC,CAACC,SAAAA,GAAAA;QAClC,MAAMtB,UAAAA,GAAaY,OAAO,CAACU,SAAAA,CAAU;AACrC,QAAA,MAAMlB,UAAUL,gBAAAA,CAAiBC,UAAAA,CAAAA;AAEjC,QAAA,IAAII,YAAYH,SAAAA,EAAW;YACzB,OAAO,KAAA;AACT,QAAA;QAEA,OAAOI,eAAAA,CAAgBL,UAAAA,CAAAA,IAAe,CAACU,kBAAAA,CAAmBN,OAAAA,CAAAA;AAC5D,IAAA,CAAA,CAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListPage.js","sources":["../../../../../../../../admin/src/pages/Settings/pages/Users/ListPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flex, Typography, Status, IconButton, Dialog } from '@strapi/design-system';\nimport { Pencil, Trash } from '@strapi/icons';\nimport * as qs from 'qs';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { NavLink, useLocation, useNavigate } from 'react-router-dom';\n\nimport { SanitizedAdminUser } from '../../../../../../shared/contracts/shared';\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { Filters } from '../../../../components/Filters';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { Pagination } from '../../../../components/Pagination';\nimport { SearchInput } from '../../../../components/SearchInput';\nimport { Table } from '../../../../components/Table';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useAuth } from '../../../../features/Auth';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { useAdminUsers, useDeleteManyUsersMutation } from '../../../../services/users';\nimport { getDisplayName } from '../../../../utils/users';\n\nimport { CreateActionCE } from './components/CreateActionCE';\nimport { ModalForm } from './components/NewUserForm';\n\n/* -------------------------------------------------------------------------------------------------\n * ListPageCE\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListPageCE = () => {\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const [isModalOpened, setIsModalOpen] = React.useState(false);\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const {\n allowedActions: { canCreate, canDelete, canRead },\n } = useRBAC(permissions.settings?.users);\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { search } = useLocation();\n const [showDeleteConfirmation, setShowDeleteConfirmation] = React.useState(false);\n const [idsToDelete, setIdsToDelete] = React.useState<Array<SanitizedAdminUser['id']>>([]);\n const { data, isError, isLoading } = useAdminUsers(qs.parse(search, { ignoreQueryPrefix: true }));\n const { user: currentUser } = useAuth('ListPageCE', (auth) => auth);\n const { pagination, users = [] } = data ?? {};\n\n const CreateAction = useEnterprise(\n CreateActionCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE'\n )\n ).CreateActionEE\n );\n\n const headers = TABLE_HEADERS.map((header) => ({\n ...header,\n label: formatMessage(header.label),\n }));\n\n const title = formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n });\n\n const handleToggle = () => {\n setIsModalOpen((prev) => !prev);\n };\n\n const [deleteAll] = useDeleteManyUsersMutation();\n const handleDeleteAll = async (ids: Array<SanitizedAdminUser['id']>) => {\n try {\n const res = await deleteAll({ ids });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'global.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n };\n\n const handleRowClick = (id: SanitizedAdminUser['id']) => () => {\n if (canRead) {\n navigate(id.toString());\n }\n };\n\n const handleDeleteClick = (id: SanitizedAdminUser['id']) => async () => {\n setIdsToDelete([id]);\n setShowDeleteConfirmation(true);\n };\n\n const confirmDelete = async () => {\n await handleDeleteAll(idsToDelete);\n setShowDeleteConfirmation(false);\n };\n\n // block rendering until the EE component is fully loaded\n if (!CreateAction) {\n return null;\n }\n\n if (isError) {\n return <Page.Error />;\n }\n\n return (\n <Page.Main aria-busy={isLoading}>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Users',\n }\n )}\n </Page.Title>\n <Layouts.Header\n primaryAction={canCreate && <CreateAction onClick={handleToggle} />}\n title={title}\n subtitle={formatMessage({\n id: 'Settings.permissions.users.listview.header.subtitle',\n defaultMessage: 'All the users who have access to the Strapi admin panel',\n })}\n />\n <Layouts.Action\n startActions={\n <>\n <SearchInput\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n { target: title }\n )}\n />\n <Filters.Root options={FILTERS}>\n <Filters.Trigger />\n <Filters.Popover zIndex={499} />\n <Filters.List />\n </Filters.Root>\n </>\n }\n />\n <Layouts.Content>\n <Table.Root rows={users} headers={headers}>\n <Table.ActionBar />\n <Table.Content>\n <Table.Head>\n {canDelete ? <Table.HeaderCheckboxCell /> : null}\n {headers.map((header) => (\n <Table.HeaderCell key={header.name} {...header} />\n ))}\n </Table.Head>\n <Table.Empty />\n <Table.Loading />\n <Table.Body>\n {users.map((user) => (\n <Table.Row\n key={user.id}\n onClick={handleRowClick(user.id)}\n cursor={canRead ? 'pointer' : 'default'}\n >\n {canDelete ? <Table.CheckboxCell id={user.id} /> : null}\n {headers.map(({ cellFormatter, name, ...rest }) => {\n return (\n <Table.Cell key={name}>\n {typeof cellFormatter === 'function' ? (\n cellFormatter(user, { name, ...rest })\n ) : (\n // @ts-expect-error – name === \"roles\" has the data value of `AdminRole[]` but the header has a cellFormatter value so this shouldn't be called.\n <Typography textColor=\"neutral800\">{user[name] || '-'}</Typography>\n )}\n </Table.Cell>\n );\n })}\n {canRead || canDelete ? (\n <Table.Cell onClick={(e) => e.stopPropagation()}>\n <Flex justifyContent=\"end\">\n {canRead ? (\n <IconButton\n tag={NavLink}\n to={user.id.toString()}\n label={formatMessage(\n { id: 'app.component.table.edit', defaultMessage: 'Edit {target}' },\n { target: getDisplayName(user) }\n )}\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n ) : null}\n {canDelete && currentUser?.id !== user.id ? (\n <IconButton\n onClick={handleDeleteClick(user.id)}\n label={formatMessage(\n { id: 'global.delete-target', defaultMessage: 'Delete {target}' },\n { target: getDisplayName(user) }\n )}\n variant=\"ghost\"\n >\n <Trash />\n </IconButton>\n ) : null}\n </Flex>\n </Table.Cell>\n ) : null}\n </Table.Row>\n ))}\n </Table.Body>\n </Table.Content>\n </Table.Root>\n <Pagination.Root {...pagination}>\n <Pagination.PageSize />\n <Pagination.Links />\n </Pagination.Root>\n </Layouts.Content>\n {isModalOpened && <ModalForm onToggle={handleToggle} />}\n <Dialog.Root open={showDeleteConfirmation} onOpenChange={setShowDeleteConfirmation}>\n <ConfirmDialog onConfirm={confirmDelete} />\n </Dialog.Root>\n </Page.Main>\n );\n};\n\nconst TABLE_HEADERS: Array<\n Omit<Table.Header<SanitizedAdminUser, any>, 'label'> & { label: MessageDescriptor }\n> = [\n {\n name: 'firstname',\n label: {\n id: 'Settings.permissions.users.firstname',\n defaultMessage: 'Firstname',\n },\n sortable: true,\n },\n {\n name: 'lastname',\n label: {\n id: 'Settings.permissions.users.lastname',\n defaultMessage: 'Lastname',\n },\n sortable: true,\n },\n {\n name: 'email',\n label: { id: 'Settings.permissions.users.email', defaultMessage: 'Email' },\n sortable: true,\n },\n {\n name: 'roles',\n label: {\n id: 'Settings.permissions.users.roles',\n defaultMessage: 'Roles',\n },\n sortable: false,\n cellFormatter({ roles }) {\n return (\n <Typography textColor=\"neutral800\">{roles.map((role) => role.name).join(',\\n')}</Typography>\n );\n },\n },\n {\n name: 'username',\n label: {\n id: 'Settings.permissions.users.username',\n defaultMessage: 'Username',\n },\n sortable: true,\n },\n {\n name: 'isActive',\n label: {\n id: 'Settings.permissions.users.user-status',\n defaultMessage: 'User status',\n },\n sortable: false,\n cellFormatter({ isActive }) {\n return (\n <Flex>\n <Status size=\"S\" variant={isActive ? 'success' : 'danger'}>\n <Typography tag=\"span\" variant=\"omega\" fontWeight=\"bold\">\n {isActive ? 'Active' : 'Inactive'}\n </Typography>\n </Status>\n </Flex>\n );\n },\n },\n];\n\nconst FILTERS = [\n {\n name: 'firstname',\n label: 'Firstname',\n type: 'string',\n },\n {\n name: 'lastname',\n label: 'Lastname',\n type: 'string',\n },\n {\n name: 'email',\n label: 'Email',\n type: 'email',\n },\n {\n name: 'username',\n label: 'Username',\n type: 'string',\n },\n {\n name: 'isActive',\n label: 'Active user',\n type: 'boolean',\n },\n] satisfies Filters.Filter[];\n\n/* -------------------------------------------------------------------------------------------------\n * ListPage\n * -----------------------------------------------------------------------------------------------*/\n\n// component which determines whether this page should render the CE or EE page\nconst ListPage = () => {\n const UsersListPage = useEnterprise(\n ListPageCE,\n async () =>\n // eslint-disable-next-line import/no-cycle\n (await import('../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/ListPage'))\n .UserListPageEE\n );\n\n // block rendering until the EE component is fully loaded\n if (!UsersListPage) {\n return null;\n }\n\n return <UsersListPage />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.users.read);\n\n return (\n <Page.Protect permissions={permissions}>\n <ListPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedListPage, ListPage, ListPageCE };\n"],"names":["ListPageCE","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","isModalOpened","setIsModalOpen","React","useState","permissions","useTypedSelector","state","admin_app","allowedActions","canCreate","canDelete","canRead","useRBAC","settings","users","navigate","useNavigate","toggleNotification","useNotification","formatMessage","useIntl","search","useLocation","showDeleteConfirmation","setShowDeleteConfirmation","idsToDelete","setIdsToDelete","data","isError","isLoading","useAdminUsers","qs","parse","ignoreQueryPrefix","user","currentUser","useAuth","auth","pagination","CreateAction","useEnterprise","CreateActionCE","CreateActionEE","headers","TABLE_HEADERS","map","header","label","title","id","defaultMessage","handleToggle","prev","deleteAll","useDeleteManyUsersMutation","handleDeleteAll","ids","res","type","message","error","err","handleRowClick","toString","handleDeleteClick","confirmDelete","_jsx","Page","Error","_jsxs","Main","aria-busy","Title","name","Layouts","Header","primaryAction","onClick","subtitle","Action","startActions","_Fragment","SearchInput","target","Filters","Root","options","FILTERS","Trigger","Popover","zIndex","List","Content","Table","rows","ActionBar","Head","HeaderCheckboxCell","HeaderCell","Empty","Loading","Body","Row","cursor","CheckboxCell","cellFormatter","rest","Cell","Typography","textColor","e","stopPropagation","Flex","justifyContent","IconButton","tag","NavLink","to","getDisplayName","variant","Pencil","Trash","Pagination","PageSize","Links","ModalForm","onToggle","Dialog","open","onOpenChange","ConfirmDialog","onConfirm","sortable","roles","role","join","isActive","Status","size","fontWeight","ListPage","UsersListPage","UserListPageEE","ProtectedListPage","read","Protect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ListPage.js","sources":["../../../../../../../../admin/src/pages/Settings/pages/Users/ListPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flex, Typography, Status, IconButton, Dialog } from '@strapi/design-system';\nimport { Pencil, Trash } from '@strapi/icons';\nimport * as qs from 'qs';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { NavLink, useLocation, useNavigate } from 'react-router-dom';\n\nimport { SanitizedAdminUser } from '../../../../../../shared/contracts/shared';\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { Filters } from '../../../../components/Filters';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { Pagination } from '../../../../components/Pagination';\nimport { SearchInput } from '../../../../components/SearchInput';\nimport { Table } from '../../../../components/Table';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useAuth } from '../../../../features/Auth';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { useAdminUsers, useDeleteManyUsersMutation } from '../../../../services/users';\nimport { getDisplayName } from '../../../../utils/users';\n\nimport { CreateActionCE } from './components/CreateActionCE';\nimport { ModalForm } from './components/NewUserForm';\n\n/* -------------------------------------------------------------------------------------------------\n * ListPageCE\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListPageCE = () => {\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const [isModalOpened, setIsModalOpen] = React.useState(false);\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const {\n allowedActions: { canCreate, canDelete, canRead },\n } = useRBAC(permissions.settings?.users);\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { search } = useLocation();\n const [showDeleteConfirmation, setShowDeleteConfirmation] = React.useState(false);\n const [idsToDelete, setIdsToDelete] = React.useState<Array<SanitizedAdminUser['id']>>([]);\n const { data, isError, isLoading } = useAdminUsers(qs.parse(search, { ignoreQueryPrefix: true }));\n const { user: currentUser } = useAuth('ListPageCE', (auth) => auth);\n const { pagination, users = [] } = data ?? {};\n\n const CreateAction = useEnterprise(\n CreateActionCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE'\n )\n ).CreateActionEE\n );\n\n const headers = TABLE_HEADERS.map((header) => ({\n ...header,\n label: formatMessage(header.label),\n }));\n\n const title = formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n });\n\n const handleToggle = () => {\n setIsModalOpen((prev) => !prev);\n };\n\n const [deleteAll] = useDeleteManyUsersMutation();\n const handleDeleteAll = async (ids: Array<SanitizedAdminUser['id']>) => {\n try {\n const res = await deleteAll({ ids });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'global.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n };\n\n const handleRowClick = (id: SanitizedAdminUser['id']) => () => {\n if (canRead) {\n navigate(id.toString());\n }\n };\n\n const handleDeleteClick = (id: SanitizedAdminUser['id']) => async () => {\n setIdsToDelete([id]);\n setShowDeleteConfirmation(true);\n };\n\n const confirmDelete = async () => {\n await handleDeleteAll(idsToDelete);\n setShowDeleteConfirmation(false);\n };\n\n // block rendering until the EE component is fully loaded\n if (!CreateAction) {\n return null;\n }\n\n if (isError) {\n return <Page.Error />;\n }\n\n return (\n <Page.Main aria-busy={isLoading}>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Users',\n }\n )}\n </Page.Title>\n <Layouts.Header\n primaryAction={canCreate && <CreateAction onClick={handleToggle} />}\n title={title}\n subtitle={formatMessage({\n id: 'Settings.permissions.users.listview.header.subtitle',\n defaultMessage: 'All the users who have access to the Strapi admin panel',\n })}\n />\n <Layouts.Action\n startActions={\n <>\n <SearchInput\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n { target: title }\n )}\n />\n <Filters.Root options={FILTERS}>\n <Filters.Trigger />\n <Filters.Popover zIndex={499} />\n <Filters.List />\n </Filters.Root>\n </>\n }\n />\n <Layouts.Content>\n <Table.Root rows={users} headers={headers}>\n <Table.ActionBar />\n <Table.Content>\n <Table.Head>\n {canDelete ? <Table.HeaderCheckboxCell /> : null}\n {headers.map((header) => (\n <Table.HeaderCell key={header.name} {...header} />\n ))}\n </Table.Head>\n <Table.Empty />\n <Table.Loading />\n <Table.Body>\n {users.map((user) => (\n <Table.Row\n key={user.id}\n onClick={handleRowClick(user.id)}\n cursor={canRead ? 'pointer' : 'default'}\n >\n {canDelete ? <Table.CheckboxCell id={user.id} /> : null}\n {headers.map(({ cellFormatter, name, ...rest }) => {\n return (\n <Table.Cell key={name}>\n {typeof cellFormatter === 'function' ? (\n cellFormatter(user, { name, ...rest })\n ) : (\n // @ts-expect-error – name === \"roles\" has the data value of `AdminRole[]` but the header has a cellFormatter value so this shouldn't be called.\n <Typography textColor=\"neutral800\">{user[name] || '-'}</Typography>\n )}\n </Table.Cell>\n );\n })}\n {canRead || canDelete ? (\n <Table.Cell onClick={(e) => e.stopPropagation()}>\n <Flex justifyContent=\"end\">\n {canRead ? (\n <IconButton\n tag={NavLink}\n to={user.id.toString()}\n label={formatMessage(\n { id: 'app.component.table.edit', defaultMessage: 'Edit {target}' },\n { target: getDisplayName(user) }\n )}\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n ) : null}\n {canDelete && currentUser?.id !== user.id ? (\n <IconButton\n onClick={handleDeleteClick(user.id)}\n label={formatMessage(\n { id: 'global.delete-target', defaultMessage: 'Delete {target}' },\n { target: getDisplayName(user) }\n )}\n variant=\"ghost\"\n >\n <Trash />\n </IconButton>\n ) : null}\n </Flex>\n </Table.Cell>\n ) : null}\n </Table.Row>\n ))}\n </Table.Body>\n </Table.Content>\n </Table.Root>\n <Pagination.Root {...pagination}>\n <Pagination.PageSize />\n <Pagination.Links />\n </Pagination.Root>\n </Layouts.Content>\n {isModalOpened && <ModalForm onToggle={handleToggle} />}\n <Dialog.Root open={showDeleteConfirmation} onOpenChange={setShowDeleteConfirmation}>\n <ConfirmDialog onConfirm={confirmDelete} />\n </Dialog.Root>\n </Page.Main>\n );\n};\n\nconst TABLE_HEADERS: Array<\n Omit<Table.Header<SanitizedAdminUser, object>, 'label'> & { label: MessageDescriptor }\n> = [\n {\n name: 'firstname',\n label: {\n id: 'Settings.permissions.users.firstname',\n defaultMessage: 'Firstname',\n },\n sortable: true,\n },\n {\n name: 'lastname',\n label: {\n id: 'Settings.permissions.users.lastname',\n defaultMessage: 'Lastname',\n },\n sortable: true,\n },\n {\n name: 'email',\n label: { id: 'Settings.permissions.users.email', defaultMessage: 'Email' },\n sortable: true,\n },\n {\n name: 'roles',\n label: {\n id: 'Settings.permissions.users.roles',\n defaultMessage: 'Roles',\n },\n sortable: false,\n cellFormatter({ roles }) {\n return (\n <Typography textColor=\"neutral800\">{roles.map((role) => role.name).join(',\\n')}</Typography>\n );\n },\n },\n {\n name: 'username',\n label: {\n id: 'Settings.permissions.users.username',\n defaultMessage: 'Username',\n },\n sortable: true,\n },\n {\n name: 'isActive',\n label: {\n id: 'Settings.permissions.users.user-status',\n defaultMessage: 'User status',\n },\n sortable: false,\n cellFormatter({ isActive }) {\n return (\n <Flex>\n <Status size=\"S\" variant={isActive ? 'success' : 'danger'}>\n <Typography tag=\"span\" variant=\"omega\" fontWeight=\"bold\">\n {isActive ? 'Active' : 'Inactive'}\n </Typography>\n </Status>\n </Flex>\n );\n },\n },\n];\n\nconst FILTERS = [\n {\n name: 'firstname',\n label: 'Firstname',\n type: 'string',\n },\n {\n name: 'lastname',\n label: 'Lastname',\n type: 'string',\n },\n {\n name: 'email',\n label: 'Email',\n type: 'email',\n },\n {\n name: 'username',\n label: 'Username',\n type: 'string',\n },\n {\n name: 'isActive',\n label: 'Active user',\n type: 'boolean',\n },\n] satisfies Filters.Filter[];\n\n/* -------------------------------------------------------------------------------------------------\n * ListPage\n * -----------------------------------------------------------------------------------------------*/\n\n// component which determines whether this page should render the CE or EE page\nconst ListPage = () => {\n const UsersListPage = useEnterprise(\n ListPageCE,\n async () =>\n // eslint-disable-next-line import/no-cycle\n (await import('../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/ListPage'))\n .UserListPageEE\n );\n\n // block rendering until the EE component is fully loaded\n if (!UsersListPage) {\n return null;\n }\n\n return <UsersListPage />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.users.read);\n\n return (\n <Page.Protect permissions={permissions}>\n <ListPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedListPage, ListPage, ListPageCE };\n"],"names":["ListPageCE","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","isModalOpened","setIsModalOpen","React","useState","permissions","useTypedSelector","state","admin_app","allowedActions","canCreate","canDelete","canRead","useRBAC","settings","users","navigate","useNavigate","toggleNotification","useNotification","formatMessage","useIntl","search","useLocation","showDeleteConfirmation","setShowDeleteConfirmation","idsToDelete","setIdsToDelete","data","isError","isLoading","useAdminUsers","qs","parse","ignoreQueryPrefix","user","currentUser","useAuth","auth","pagination","CreateAction","useEnterprise","CreateActionCE","CreateActionEE","headers","TABLE_HEADERS","map","header","label","title","id","defaultMessage","handleToggle","prev","deleteAll","useDeleteManyUsersMutation","handleDeleteAll","ids","res","type","message","error","err","handleRowClick","toString","handleDeleteClick","confirmDelete","_jsx","Page","Error","_jsxs","Main","aria-busy","Title","name","Layouts","Header","primaryAction","onClick","subtitle","Action","startActions","_Fragment","SearchInput","target","Filters","Root","options","FILTERS","Trigger","Popover","zIndex","List","Content","Table","rows","ActionBar","Head","HeaderCheckboxCell","HeaderCell","Empty","Loading","Body","Row","cursor","CheckboxCell","cellFormatter","rest","Cell","Typography","textColor","e","stopPropagation","Flex","justifyContent","IconButton","tag","NavLink","to","getDisplayName","variant","Pencil","Trash","Pagination","PageSize","Links","ModalForm","onToggle","Dialog","open","onOpenChange","ConfirmDialog","onConfirm","sortable","roles","role","join","isActive","Status","size","fontWeight","ListPage","UsersListPage","UserListPageEE","ProtectedListPage","read","Protect"],"mappings":"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"}
|