@strapi/admin 5.48.1 → 5.50.0
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/StrapiApp.js +33 -20
- package/dist/admin/admin/src/StrapiApp.js.map +1 -1
- package/dist/admin/admin/src/StrapiApp.mjs +6 -1
- package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
- package/dist/admin/admin/src/components/ConfirmDialog.js +3 -2
- package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
- package/dist/admin/admin/src/components/Context.js +4 -3
- package/dist/admin/admin/src/components/Context.js.map +1 -1
- package/dist/admin/admin/src/components/DescriptionComponentRenderer.js +8 -4
- package/dist/admin/admin/src/components/DescriptionComponentRenderer.js.map +1 -1
- package/dist/admin/admin/src/components/ErrorElement.js +97 -2
- 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/Filters.js +3 -2
- package/dist/admin/admin/src/components/Filters.js.map +1 -1
- package/dist/admin/admin/src/components/Form.js +9 -5
- package/dist/admin/admin/src/components/Form.js.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 +3 -2
- package/dist/admin/admin/src/components/FormInputs/Date.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Json.js +3 -2
- package/dist/admin/admin/src/components/FormInputs/Json.js.map +1 -1
- package/dist/admin/admin/src/components/GapDropZone.js +3 -2
- package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Context.js +3 -2
- package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js +3 -2
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.js +9 -3
- package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.mjs +6 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -1
- package/dist/admin/admin/src/components/LanguageProvider.js +5 -1
- package/dist/admin/admin/src/components/LanguageProvider.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +3 -2
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.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 -2
- package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavUser.js +10 -0
- 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/NpsSurvey.js +4 -3
- package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
- package/dist/admin/admin/src/components/PageHelpers.js +3 -2
- package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
- package/dist/admin/admin/src/components/Pagination.js +3 -2
- package/dist/admin/admin/src/components/Pagination.js.map +1 -1
- package/dist/admin/admin/src/components/PluginsInitializer.js +3 -2
- package/dist/admin/admin/src/components/PluginsInitializer.js.map +1 -1
- package/dist/admin/admin/src/components/RelativeTime.js +6 -4
- 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 +3 -2
- package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
- package/dist/admin/admin/src/components/SearchInput.js +3 -2
- package/dist/admin/admin/src/components/SearchInput.js.map +1 -1
- package/dist/admin/admin/src/components/Table.js +3 -2
- package/dist/admin/admin/src/components/Table.js.map +1 -1
- package/dist/admin/admin/src/components/Theme.js +3 -2
- package/dist/admin/admin/src/components/Theme.js.map +1 -1
- package/dist/admin/admin/src/components/WidgetRoot.js +9 -5
- package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
- package/dist/admin/admin/src/core/apis/CustomFields.js +14 -10
- package/dist/admin/admin/src/core/apis/CustomFields.js.map +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.js +8 -4
- package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
- package/dist/admin/admin/src/core/apis/router.js +39 -33
- 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/features/Auth.js +78 -6
- package/dist/admin/admin/src/features/Auth.js.map +1 -1
- package/dist/admin/admin/src/features/Auth.mjs +77 -6
- package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
- package/dist/admin/admin/src/features/BackButton.js +3 -2
- package/dist/admin/admin/src/features/BackButton.js.map +1 -1
- package/dist/admin/admin/src/features/Configuration.js +3 -2
- package/dist/admin/admin/src/features/Configuration.js.map +1 -1
- package/dist/admin/admin/src/features/Notifications.js +3 -2
- package/dist/admin/admin/src/features/Notifications.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.js +7 -3
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Widgets.js +3 -2
- package/dist/admin/admin/src/features/Widgets.js.map +1 -1
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.js +3 -2
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.js.map +1 -1
- package/dist/admin/admin/src/hooks/useAdminRoles.js +3 -2
- package/dist/admin/admin/src/hooks/useAdminRoles.js.map +1 -1
- package/dist/admin/admin/src/hooks/useControllableState.js +3 -2
- package/dist/admin/admin/src/hooks/useControllableState.js.map +1 -1
- package/dist/admin/admin/src/hooks/useDebounce.js +3 -2
- package/dist/admin/admin/src/hooks/useDebounce.js.map +1 -1
- package/dist/admin/admin/src/hooks/useDeviceType.js +3 -2
- package/dist/admin/admin/src/hooks/useDeviceType.js.map +1 -1
- package/dist/admin/admin/src/hooks/useElementOnScreen.js +3 -2
- package/dist/admin/admin/src/hooks/useElementOnScreen.js.map +1 -1
- package/dist/admin/admin/src/hooks/useEnterprise.js +3 -2
- package/dist/admin/admin/src/hooks/useEnterprise.js.map +1 -1
- package/dist/admin/admin/src/hooks/useFetchClient.js +3 -2
- package/dist/admin/admin/src/hooks/useFetchClient.js.map +1 -1
- package/dist/admin/admin/src/hooks/useForceUpdate.js +3 -2
- package/dist/admin/admin/src/hooks/useForceUpdate.js.map +1 -1
- package/dist/admin/admin/src/hooks/useIdleSessionLogout.js +85 -15
- package/dist/admin/admin/src/hooks/useIdleSessionLogout.js.map +1 -1
- package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs +82 -14
- package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useIsMounted.js +3 -2
- package/dist/admin/admin/src/hooks/useIsMounted.js.map +1 -1
- package/dist/admin/admin/src/hooks/useMediaQuery.js +3 -2
- package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -1
- package/dist/admin/admin/src/hooks/useMenu.js +7 -3
- package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
- package/dist/admin/admin/src/hooks/useOnce.js +3 -2
- package/dist/admin/admin/src/hooks/useOnce.js.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/useRBAC.js +7 -3
- package/dist/admin/admin/src/hooks/useRBAC.js.map +1 -1
- package/dist/admin/admin/src/hooks/useSettingsMenu.js +7 -3
- package/dist/admin/admin/src/hooks/useSettingsMenu.js.map +1 -1
- package/dist/admin/admin/src/hooks/useThrottledCallback.js +5 -1
- package/dist/admin/admin/src/hooks/useThrottledCallback.js.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +15 -7
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +4 -2
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.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/ForgotPassword.js +3 -2
- package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Login.js +8 -4
- package/dist/admin/admin/src/pages/Auth/components/Login.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Oops.js +3 -2
- package/dist/admin/admin/src/pages/Auth/components/Oops.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.js +9 -5
- package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js +4 -3
- package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.js +3 -2
- package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js +8 -4
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js +7 -3
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js +7 -3
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.js +8 -4
- package/dist/admin/admin/src/pages/ProfilePage.js.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/Tokens/FormHead.js +3 -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 +3 -2
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js +3 -2
- package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js +3 -2
- package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js +3 -2
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js +3 -2
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js +4 -3
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js +3 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +7 -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 +5 -1
- 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 +6 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +4 -3
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +4 -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 -0
- 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 +7 -3
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js +3 -2
- package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +11 -3
- 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 +11 -4
- 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/ListPage.js +3 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +44 -6
- 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 -2
- 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/ConditionsModal.js +13 -7
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +15 -9
- 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/GlobalActions.js +9 -5
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +71 -27
- 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 +10 -6
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js +3 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.js +9 -3
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js +26 -4
- 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/layouts.js +6 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.js.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/Roles/utils/updateConditionsToFalse.js +8 -3
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js +4 -3
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js +4 -3
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js +9 -5
- package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js +4 -3
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js +3 -2
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js +4 -3
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js +3 -2
- package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js +3 -2
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js +3 -2
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +3 -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/WebhookForm.js +4 -3
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.js +3 -2
- package/dist/admin/admin/src/pages/UseCasePage.js.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 +748 -265
- package/dist/admin/admin/src/translations/ja.json.js.map +1 -1
- package/dist/admin/admin/src/translations/ja.json.mjs +745 -266
- 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/utils/getFetchClient.js +7 -2
- package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
- package/dist/admin/admin/src/utils/locales.js +3 -2
- package/dist/admin/admin/src/utils/locales.js.map +1 -1
- package/dist/admin/admin/src/utils/objects.js +9 -4
- package/dist/admin/admin/src/utils/objects.js.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 +5 -1
- package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
- package/dist/admin/admin/src/utils/urls.js +5 -1
- package/dist/admin/admin/src/utils/urls.js.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/admin/tests/utils.js +3 -2
- package/dist/admin/admin/tests/utils.js.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js +7 -3
- package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js +3 -2
- package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthResponse.js +3 -2
- package/dist/admin/ee/admin/src/pages/AuthResponse.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js +3 -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/AuditLogs/hooks/useAuditLogsData.js +3 -2
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js +5 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +3 -2
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js +7 -3
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js.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 +11 -5
- 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 +0 -1
- 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/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 +5 -6
- package/dist/admin/src/core/apis/Plugin.d.ts +1 -1
- package/dist/admin/src/core/apis/Widgets.d.ts +0 -1
- package/dist/admin/src/core/apis/router.d.ts +2 -3
- package/dist/admin/src/core/store/configure.d.ts +2 -2
- package/dist/admin/src/core/utils/createHook.d.ts +4 -4
- 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 +2 -2
- package/dist/admin/src/hooks/useFetchClient.d.ts +1 -1
- package/dist/admin/src/hooks/useIdleSessionLogout.d.ts +66 -12
- package/dist/admin/src/hooks/usePersistentState.d.ts +0 -1
- package/dist/admin/src/hooks/useQueryParams.d.ts +1 -1
- package/dist/admin/src/hooks/useThrottledCallback.d.ts +0 -1
- 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/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/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 +2 -2
- package/dist/admin/src/services/api.d.ts +1 -1
- package/dist/admin/src/services/apiTokens.d.ts +1 -1
- package/dist/admin/src/services/auth.d.ts +29 -27
- package/dist/admin/src/services/contentApi.d.ts +1 -1
- package/dist/admin/src/services/users.d.ts +7 -7
- package/dist/admin/src/services/webhooks.d.ts +2 -2
- package/dist/admin/src/translations/languageNativeNames.d.ts +1 -0
- package/dist/admin/src/utils/locales.d.ts +0 -1
- package/dist/admin/src/utils/retryDynamicImport.d.ts +19 -0
- package/dist/admin/src/utils/shims.d.ts +1 -1
- 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/services/ai.d.ts +2 -2
- 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/ee/server/src/controllers/authentication-utils/middlewares.js +5 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication.js +5 -1
- package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
- package/dist/server/ee/server/src/controllers/user.js +6 -2
- package/dist/server/ee/server/src/controllers/user.js.map +1 -1
- package/dist/server/ee/server/src/services/auth.js +5 -1
- package/dist/server/ee/server/src/services/auth.js.map +1 -1
- package/dist/server/ee/server/src/services/user.js +8 -4
- package/dist/server/ee/server/src/services/user.js.map +1 -1
- package/dist/server/index.js +6 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/server/src/ai/services/ai.js +10 -4
- package/dist/server/server/src/ai/services/ai.js.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 +9 -4
- 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 +18 -6
- 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/controllers/user.js +3 -2
- package/dist/server/server/src/controllers/user.js.map +1 -1
- package/dist/server/server/src/controllers/webhooks.js +7 -2
- package/dist/server/server/src/controllers/webhooks.js.map +1 -1
- package/dist/server/server/src/middlewares/rateLimit.js +7 -2
- package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
- package/dist/server/server/src/policies/hasPermissions.js +7 -3
- package/dist/server/server/src/policies/hasPermissions.js.map +1 -1
- package/dist/server/server/src/routes/serve-admin-panel.js +9 -4
- 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/api-token.js +7 -3
- package/dist/server/server/src/services/api-token.js.map +1 -1
- package/dist/server/server/src/services/auth.js +8 -3
- package/dist/server/server/src/services/auth.js.map +1 -1
- package/dist/server/server/src/services/content-type.js +6 -2
- package/dist/server/server/src/services/content-type.js.map +1 -1
- package/dist/server/server/src/services/encryption.js +8 -4
- package/dist/server/server/src/services/encryption.js.map +1 -1
- package/dist/server/server/src/services/passport.js +6 -2
- package/dist/server/server/src/services/passport.js.map +1 -1
- package/dist/server/server/src/services/permission/engine.js +5 -1
- package/dist/server/server/src/services/permission/engine.js.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/index.js +5 -1
- package/dist/server/server/src/services/permission/permissions-manager/index.js.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/query-builders.js +14 -10
- package/dist/server/server/src/services/permission/permissions-manager/query-builders.js.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/queries.js +5 -1
- package/dist/server/server/src/services/permission/queries.js.map +1 -1
- package/dist/server/server/src/services/project-settings.js +6 -2
- package/dist/server/server/src/services/project-settings.js.map +1 -1
- package/dist/server/server/src/services/role.js +10 -5
- package/dist/server/server/src/services/role.js.map +1 -1
- package/dist/server/server/src/services/role.mjs +2 -1
- package/dist/server/server/src/services/role.mjs.map +1 -1
- package/dist/server/server/src/services/token.js +7 -2
- package/dist/server/server/src/services/token.js.map +1 -1
- package/dist/server/server/src/services/transfer/permission.js +5 -1
- package/dist/server/server/src/services/transfer/permission.js.map +1 -1
- package/dist/server/server/src/services/transfer/token.js +10 -5
- package/dist/server/server/src/services/transfer/token.js.map +1 -1
- package/dist/server/server/src/services/user.js +10 -6
- package/dist/server/server/src/services/user.js.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-functions/check-fields-are-correctly-nested.js +5 -1
- package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js.map +1 -1
- package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.js +6 -2
- package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.js.map +1 -1
- package/dist/server/server/src/validation/common-validators.js +6 -2
- package/dist/server/server/src/validation/common-validators.js.map +1 -1
- package/dist/server/server/src/validation/policies/hasPermissions.js +6 -2
- package/dist/server/server/src/validation/policies/hasPermissions.js.map +1 -1
- package/dist/server/shared/utils/session-auth.js +5 -1
- package/dist/server/shared/utils/session-auth.js.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 +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProfilePage.js","sources":["../../../../../admin/src/pages/ProfilePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, useNotifyAT, Grid, Typography, FlexProps } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Form, FormHelpers } from '../components/Form';\nimport { InputRenderer } from '../components/FormInputs/Renderer';\nimport { useGuidedTour } from '../components/GuidedTour/Context';\nimport { Layouts } from '../components/Layouts/Layout';\nimport { Page } from '../components/PageHelpers';\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useTracking } from '../features/Tracking';\nimport { useAPIErrorHandler } from '../hooks/useAPIErrorHandler';\nimport { useIsDesktop } from '../hooks/useMediaQuery';\nimport { AppState, setAppTheme } from '../reducer';\nimport { useIsSSOLockedQuery, useUpdateMeMutation } from '../services/auth';\nimport { isBaseQueryError } from '../utils/baseQuery';\nimport { translatedErrors } from '../utils/translatedErrors';\nimport { getDisplayName } from '../utils/users';\n\nimport { COMMON_USER_SCHEMA } from './Settings/pages/Users/utils/validation';\n\nimport type { UpdateMe } from '../../../shared/contracts/users';\n\nconst PROFILE_VALIDTION_SCHEMA = yup.object().shape({\n ...COMMON_USER_SCHEMA,\n currentPassword: yup\n .string()\n // @ts-expect-error – no idea why this is failing.\n .when(['password', 'confirmPassword'], (password, confirmPassword, passSchema) => {\n return password || confirmPassword\n ? passSchema\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .nullable()\n : passSchema;\n }),\n preferedLanguage: yup.string().nullable(),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * ProfilePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst Panel = ({ children, ...flexProps }: FlexProps) => {\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4} {...flexProps}>\n {children}\n </Flex>\n </Box>\n );\n};\n\nconst ProfilePage = () => {\n const isDesktop = useIsDesktop();\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const currentTheme = useTypedSelector((state) => state.admin_app.theme.currentTheme);\n const dispatch = useTypedDispatch();\n const {\n _unstableFormatValidationErrors: formatValidationErrors,\n _unstableFormatAPIError: formatApiError,\n } = useAPIErrorHandler();\n\n const user = useAuth('ProfilePage', (state) => state.user);\n\n React.useEffect(() => {\n if (user) {\n notifyStatus(\n formatMessage({\n id: 'Settings.profile.form.notify.data.loaded',\n defaultMessage: 'Your profile data has been loaded',\n })\n );\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n }, [formatMessage, notifyStatus, toggleNotification, user]);\n\n const [updateMe, { isLoading: isSubmittingForm }] = useUpdateMeMutation();\n\n const {\n isLoading,\n data: dataSSO,\n error,\n } = useIsSSOLockedQuery(undefined, {\n skip: !(window.strapi.isEE && window.strapi.features.isEnabled('sso')),\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'Settings.permissions.users.sso.provider.error' }),\n });\n }\n }, [error, formatMessage, toggleNotification]);\n\n type UpdateUsersMeBody = UpdateMe.Request['body'] & {\n confirmPassword: string;\n currentTheme: AppState['theme']['currentTheme'];\n };\n\n const handleSubmit = async (\n body: UpdateUsersMeBody,\n { setErrors }: FormHelpers<UpdateUsersMeBody>\n ) => {\n const { confirmPassword: _confirmPassword, currentTheme, ...bodyRest } = body;\n let dataToSend = bodyRest;\n\n // The password fields are optional. If the user didn't touch them, don't send any password\n // to the API, because an empty string would throw a validation error\n if (dataToSend.password === '') {\n const {\n password: _password,\n currentPassword: _currentPassword,\n ...passwordRequestBodyRest\n } = dataToSend;\n dataToSend = passwordRequestBodyRest;\n }\n\n const res = await updateMe(dataToSend);\n\n if ('data' in res) {\n dispatch(setAppTheme(currentTheme));\n\n trackUsage('didChangeMode', { newMode: currentTheme });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n }\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n } else if (isBaseQueryError(res.error)) {\n toggleNotification({\n type: 'danger',\n message: formatApiError(res.error),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n const hasLockedRole = dataSSO?.isSSOLocked ?? false;\n const { email, firstname, lastname, username, preferedLanguage } = user ?? {};\n const initialData = {\n email: email ?? '',\n firstname: firstname ?? '',\n lastname: lastname ?? '',\n username: username ?? '',\n preferedLanguage,\n currentTheme,\n confirmPassword: '',\n password: '',\n };\n\n return (\n <>\n <Page.Main aria-busy={isSubmittingForm}>\n <Page.Title>\n {formatMessage({\n id: 'Settings.profile.form.section.head.title',\n defaultMessage: 'User profile',\n })}\n </Page.Title>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={initialData}\n validationSchema={PROFILE_VALIDTION_SCHEMA}\n >\n {({ isSubmitting, modified }) => (\n <>\n <Layouts.Header\n title={getDisplayName(user)}\n primaryAction={\n <Button\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n disabled={!modified}\n fullWidth\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n <Box paddingBottom={6}>\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <UserInfoSection />\n {!hasLockedRole && <PasswordSection />}\n <PreferencesSection localeNames={localeNames} />\n </Flex>\n </Layouts.Content>\n </Box>\n </>\n )}\n </Form>\n {isDesktop && process.env.NODE_ENV === 'development' && (\n <Box paddingBottom={6}>\n <Layouts.Content>\n <GuidedTourSection />\n </Layouts.Content>\n </Box>\n )}\n </Page.Main>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PasswordSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst PasswordSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.change-password',\n defaultMessage: 'Change password',\n })}\n </Typography>\n {[\n [\n {\n label: formatMessage({\n id: 'Auth.form.currentPassword.label',\n defaultMessage: 'Current Password',\n }),\n name: 'currentPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n [\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n size: 6,\n type: 'password' as const,\n },\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n ].map((row, index) => (\n <Grid.Root key={index} gap={5}>\n {row.map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n ))}\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PreferencesSection\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PreferencesSectionProps {\n localeNames: Record<string, string>;\n}\n\nconst PreferencesSection = ({ localeNames }: PreferencesSectionProps) => {\n const { formatMessage } = useIntl();\n const themesToDisplay = useTypedSelector((state) => state.admin_app.theme.availableThemes);\n\n return (\n <Panel>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'Settings.profile.form.section.experience.title',\n defaultMessage: 'Experience',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'Settings.profile.form.section.experience.interfaceLanguageHelp',\n defaultMessage:\n 'Preference changes will apply only to you. More information is available {here}.',\n },\n {\n here: (\n <Box\n tag=\"a\"\n color=\"primary600\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#locales\"\n >\n {formatMessage({\n id: 'Settings.profile.form.section.experience.here',\n defaultMessage: 'here',\n })}\n </Box>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Grid.Root gap={5}>\n {[\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage.hint',\n defaultMessage: 'This will only display your own interface in the chosen language.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage',\n defaultMessage: 'Interface language',\n }),\n name: 'preferedLanguage',\n options: Object.entries(localeNames).map(([value, label]) => ({\n label,\n value,\n })),\n placeholder: formatMessage({\n id: 'global.select',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.hint',\n defaultMessage: 'Displays your interface in the chosen mode.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.label',\n defaultMessage: 'Interface mode',\n }),\n name: 'currentTheme',\n options: [\n {\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.option-system-label',\n defaultMessage: 'Use system settings',\n }),\n value: 'system',\n },\n ...themesToDisplay.map((theme) => ({\n label: formatMessage(\n {\n id: 'Settings.profile.form.section.experience.mode.option-label',\n defaultMessage: '{name} mode',\n },\n {\n name: formatMessage({\n id: theme,\n defaultMessage: upperFirst(theme),\n }),\n }\n ),\n value: theme,\n })),\n ],\n placeholder: formatMessage({\n id: 'app.components.Select.placeholder',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UserInfoSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst UserInfoSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.profile',\n defaultMessage: 'Profile',\n })}\n </Typography>\n <Grid.Root gap={5}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n }),\n name: 'firstname',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 6,\n type: 'email' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n }),\n name: 'username',\n size: 6,\n type: 'string' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst GuidedTourSection = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const dispatch = useGuidedTour('ProfilePage', (s) => s.dispatch);\n\n const onClickReset = () => {\n dispatch({ type: 'reset_all_tours' });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'tours.profile.notification.success.reset',\n defaultMessage: 'Guided tour reset',\n }),\n });\n };\n\n return (\n <Panel alignItems=\"start\">\n <Flex direction=\"column\" alignItems=\"start\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'tours.profile.title',\n defaultMessage: 'Guided tour',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage({\n id: 'tours.profile.description',\n defaultMessage: 'You can reset the guided tour at any time.',\n })}\n </Typography>\n </Flex>\n <Button variant=\"tertiary\" onClick={onClickReset}>\n {formatMessage({\n id: 'tours.profile.reset',\n defaultMessage: 'Reset guided tour',\n })}\n </Button>\n </Panel>\n );\n};\n\nexport { ProfilePage };\n"],"names":["PROFILE_VALIDTION_SCHEMA","yup","object","shape","COMMON_USER_SCHEMA","currentPassword","string","when","password","confirmPassword","passSchema","required","id","translatedErrors","defaultMessage","nullable","preferedLanguage","Panel","children","flexProps","_jsx","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Flex","direction","alignItems","gap","ProfilePage","isDesktop","useIsDesktop","localeNames","useTypedSelector","state","admin_app","language","formatMessage","useIntl","trackUsage","useTracking","toggleNotification","useNotification","notifyStatus","useNotifyAT","currentTheme","theme","dispatch","useTypedDispatch","_unstableFormatValidationErrors","formatValidationErrors","_unstableFormatAPIError","formatApiError","useAPIErrorHandler","user","useAuth","React","useEffect","type","message","updateMe","isLoading","isSubmittingForm","useUpdateMeMutation","data","dataSSO","error","useIsSSOLockedQuery","undefined","skip","window","strapi","isEE","features","isEnabled","handleSubmit","body","setErrors","_confirmPassword","bodyRest","dataToSend","_password","_currentPassword","passwordRequestBodyRest","res","setAppTheme","newMode","isBaseQueryError","name","Page","Loading","hasLockedRole","isSSOLocked","email","firstname","lastname","username","initialData","_Fragment","_jsxs","Main","aria-busy","Title","Form","method","onSubmit","initialValues","validationSchema","isSubmitting","modified","Layouts","Header","title","getDisplayName","primaryAction","Button","startIcon","Check","loading","disabled","fullWidth","Content","UserInfoSection","PasswordSection","PreferencesSection","process","env","NODE_ENV","GuidedTourSection","Typography","variant","tag","label","size","autoComplete","map","row","index","Grid","Root","field","Item","xs","m","col","InputRenderer","themesToDisplay","availableThemes","here","color","target","rel","href","hint","options","Object","entries","value","placeholder","upperFirst","useGuidedTour","s","onClickReset","onClick"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,MAAMA,wBAAAA,GAA2BC,cAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AAClD,IAAA,GAAGC,6BAAkB;IACrBC,eAAAA,EAAiBJ,cAAAA,CACdK,MAAM,EACP;AACCC,KAAAA,IAAI,CAAC;AAAC,QAAA,UAAA;AAAY,QAAA;KAAkB,EAAE,CAACC,UAAUC,eAAAA,EAAiBC,UAAAA,GAAAA;AACjE,QAAA,OAAOF,QAAAA,IAAYC,eAAAA,GACfC,UAAAA,CACGC,QAAQ,CAAC;YACRC,EAAAA,EAAIC,iCAAAA,CAAiBF,QAAQ,CAACC,EAAE;YAChCE,cAAAA,EAAgB;AAClB,SAAA,CAAA,CACCC,QAAQ,EAAA,GACXL,UAAAA;AACN,IAAA,CAAA,CAAA;IACFM,gBAAAA,EAAkBf,cAAAA,CAAIK,MAAM,EAAA,CAAGS,QAAQ;AACzC,CAAA,CAAA;AAEA;;AAEkG,qGAElG,MAAME,KAAAA,GAAQ,CAAC,EAAEC,QAAQ,EAAE,GAAGC,SAAAA,EAAsB,GAAA;AAClD,IAAA,qBACEC,cAAA,CAACC,gBAAAA,EAAAA;QACCC,UAAAA,EAAW,UAAA;QACXC,SAAS,EAAA,IAAA;QACTC,MAAAA,EAAO,cAAA;QACPC,UAAAA,EAAY,CAAA;QACZC,aAAAA,EAAe,CAAA;QACfC,WAAAA,EAAa,CAAA;QACbC,YAAAA,EAAc,CAAA;AAEd,QAAA,QAAA,gBAAAR,cAAA,CAACS,iBAAAA,EAAAA;YAAKC,SAAAA,EAAU,QAAA;YAASC,UAAAA,EAAW,SAAA;YAAUC,GAAAA,EAAK,CAAA;AAAI,YAAA,GAAGb,SAAS;AAChED,YAAAA,QAAAA,EAAAA;;;AAIT,CAAA;AAEA,MAAMe,WAAAA,GAAc,IAAA;AAClB,IAAA,MAAMC,SAAAA,GAAYC,0BAAAA,EAAAA;IAClB,MAAMC,WAAAA,GAAcC,uBAAiB,CAACC,KAAAA,GAAUA,MAAMC,SAAS,CAACC,QAAQ,CAACJ,WAAW,CAAA;IACpF,MAAM,EAAEK,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,oBAAAA,EAAAA;IACvB,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,6BAAAA,EAAAA;IAC/B,MAAM,EAAEC,YAAY,EAAE,GAAGC,wBAAAA,EAAAA;IACzB,MAAMC,YAAAA,GAAeZ,uBAAiB,CAACC,KAAAA,GAAUA,MAAMC,SAAS,CAACW,KAAK,CAACD,YAAY,CAAA;AACnF,IAAA,MAAME,QAAAA,GAAWC,sBAAAA,EAAAA;AACjB,IAAA,MAAM,EACJC,+BAAAA,EAAiCC,sBAAsB,EACvDC,uBAAAA,EAAyBC,cAAc,EACxC,GAAGC,qCAAAA,EAAAA;AAEJ,IAAA,MAAMC,OAAOC,YAAAA,CAAQ,aAAA,EAAe,CAACrB,KAAAA,GAAUA,MAAMoB,IAAI,CAAA;AAEzDE,IAAAA,gBAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAIH,IAAAA,EAAM;AACRX,YAAAA,YAAAA,CACEN,aAAAA,CAAc;gBACZ7B,EAAAA,EAAI,0CAAA;gBACJE,cAAAA,EAAgB;AAClB,aAAA,CAAA,CAAA;QAEJ,CAAA,MAAO;YACL+B,kBAAAA,CAAmB;gBACjBiB,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAAStB,aAAAA,CAAc;oBAAE7B,EAAAA,EAAI,oBAAA;oBAAsBE,cAAAA,EAAgB;AAAoB,iBAAA;AACzF,aAAA,CAAA;AACF,QAAA;IACF,CAAA,EAAG;AAAC2B,QAAAA,aAAAA;AAAeM,QAAAA,YAAAA;AAAcF,QAAAA,kBAAAA;AAAoBa,QAAAA;AAAK,KAAA,CAAA;AAE1D,IAAA,MAAM,CAACM,QAAAA,EAAU,EAAEC,WAAWC,gBAAgB,EAAE,CAAC,GAAGC,wBAAAA,EAAAA;IAEpD,MAAM,EACJF,SAAS,EACTG,IAAAA,EAAMC,OAAO,EACbC,KAAK,EACN,GAAGC,wBAAAA,CAAoBC,SAAAA,EAAW;AACjCC,QAAAA,IAAAA,EAAM,EAAEC,MAAAA,CAAOC,MAAM,CAACC,IAAI,IAAIF,MAAAA,CAAOC,MAAM,CAACE,QAAQ,CAACC,SAAS,CAAC,KAAA,CAAK;AACtE,KAAA,CAAA;AAEAlB,IAAAA,gBAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAIS,KAAAA,EAAO;YACTzB,kBAAAA,CAAmB;gBACjBiB,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAAStB,aAAAA,CAAc;oBAAE7B,EAAAA,EAAI;AAAgD,iBAAA;AAC/E,aAAA,CAAA;AACF,QAAA;IACF,CAAA,EAAG;AAAC0D,QAAAA,KAAAA;AAAO7B,QAAAA,aAAAA;AAAeI,QAAAA;AAAmB,KAAA,CAAA;AAO7C,IAAA,MAAMkC,YAAAA,GAAe,OACnBC,IAAAA,EACA,EAAEC,SAAS,EAAkC,GAAA;QAE7C,MAAM,EAAExE,iBAAiByE,gBAAgB,EAAEjC,YAAY,EAAE,GAAGkC,UAAU,GAAGH,IAAAA;AACzE,QAAA,IAAII,UAAAA,GAAaD,QAAAA;;;QAIjB,IAAIC,UAAAA,CAAW5E,QAAQ,KAAK,EAAA,EAAI;YAC9B,MAAM,EACJA,UAAU6E,SAAS,EACnBhF,iBAAiBiF,gBAAgB,EACjC,GAAGC,uBAAAA,EACJ,GAAGH,UAAAA;YACJA,UAAAA,GAAaG,uBAAAA;AACf,QAAA;QAEA,MAAMC,GAAAA,GAAM,MAAMxB,QAAAA,CAASoB,UAAAA,CAAAA;AAE3B,QAAA,IAAI,UAAUI,GAAAA,EAAK;AACjBrC,YAAAA,QAAAA,CAASsC,mBAAAA,CAAYxC,YAAAA,CAAAA,CAAAA;AAErBN,YAAAA,UAAAA,CAAW,eAAA,EAAiB;gBAAE+C,OAAAA,EAASzC;AAAa,aAAA,CAAA;YAEpDJ,kBAAAA,CAAmB;gBACjBiB,IAAAA,EAAM,SAAA;AACNC,gBAAAA,OAAAA,EAAStB,aAAAA,CAAc;oBAAE7B,EAAAA,EAAI,4BAAA;oBAA8BE,cAAAA,EAAgB;AAAQ,iBAAA;AACrF,aAAA,CAAA;AACF,QAAA;AAEA,QAAA,IAAI,WAAW0E,GAAAA,EAAK;YAClB,IAAIG,0BAAAA,CAAiBH,IAAIlB,KAAK,CAAA,IAAKkB,IAAIlB,KAAK,CAACsB,IAAI,KAAK,iBAAA,EAAmB;gBACvEX,SAAAA,CAAU3B,sBAAAA,CAAuBkC,IAAIlB,KAAK,CAAA,CAAA;AAC5C,YAAA,CAAA,MAAO,IAAIqB,0BAAAA,CAAiBH,GAAAA,CAAIlB,KAAK,CAAA,EAAG;gBACtCzB,kBAAAA,CAAmB;oBACjBiB,IAAAA,EAAM,QAAA;oBACNC,OAAAA,EAASP,cAAAA,CAAegC,IAAIlB,KAAK;AACnC,iBAAA,CAAA;YACF,CAAA,MAAO;gBACLzB,kBAAAA,CAAmB;oBACjBiB,IAAAA,EAAM,QAAA;AACNC,oBAAAA,OAAAA,EAAStB,aAAAA,CAAc;wBAAE7B,EAAAA,EAAI,oBAAA;wBAAsBE,cAAAA,EAAgB;AAAoB,qBAAA;AACzF,iBAAA,CAAA;AACF,YAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,IAAImD,SAAAA,EAAW;QACb,qBAAO7C,cAAA,CAACyE,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACtB,IAAA;IAEA,MAAMC,aAAAA,GAAgB1B,SAAS2B,WAAAA,IAAe,KAAA;AAC9C,IAAA,MAAM,EAAEC,KAAK,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,QAAQ,EAAEpF,gBAAgB,EAAE,GAAG0C,QAAQ,EAAC;AAC5E,IAAA,MAAM2C,WAAAA,GAAc;AAClBJ,QAAAA,KAAAA,EAAOA,KAAAA,IAAS,EAAA;AAChBC,QAAAA,SAAAA,EAAWA,SAAAA,IAAa,EAAA;AACxBC,QAAAA,QAAAA,EAAUA,QAAAA,IAAY,EAAA;AACtBC,QAAAA,QAAAA,EAAUA,QAAAA,IAAY,EAAA;AACtBpF,QAAAA,gBAAAA;AACAiC,QAAAA,YAAAA;QACAxC,eAAAA,EAAiB,EAAA;QACjBD,QAAAA,EAAU;AACZ,KAAA;IAEA,qBACEY,cAAA,CAAAkF,mBAAA,EAAA;gCACEC,eAAA,CAACV,iBAAKW,IAAI,EAAA;YAACC,WAAAA,EAAWvC,gBAAAA;;AACpB,8BAAA9C,cAAA,CAACyE,iBAAKa,KAAK,EAAA;8BACRjE,aAAAA,CAAc;wBACb7B,EAAAA,EAAI,0CAAA;wBACJE,cAAAA,EAAgB;AAClB,qBAAA;;8BAEFM,cAAA,CAACuF,SAAAA,EAAAA;oBACCC,MAAAA,EAAO,KAAA;oBACPC,QAAAA,EAAU9B,YAAAA;oBACV+B,aAAAA,EAAeT,WAAAA;oBACfU,gBAAAA,EAAkB/G,wBAAAA;AAEjB,oBAAA,QAAA,EAAA,CAAC,EAAEgH,YAAY,EAAEC,QAAQ,EAAE,iBAC1BV,eAAA,CAAAD,mBAAA,EAAA;;AACE,8CAAAlF,cAAA,CAAC8F,eAAQC,MAAM,EAAA;AACbC,oCAAAA,KAAAA,EAAOC,oBAAAA,CAAe3D,IAAAA,CAAAA;AACtB4D,oCAAAA,aAAAA,gBACElG,cAAA,CAACmG,mBAAAA,EAAAA;AACCC,wCAAAA,SAAAA,gBAAWpG,cAAA,CAACqG,WAAAA,EAAAA,EAAAA,CAAAA;wCACZC,OAAAA,EAASV,YAAAA;wCACTlD,IAAAA,EAAK,QAAA;AACL6D,wCAAAA,QAAAA,EAAU,CAACV,QAAAA;wCACXW,SAAS,EAAA,IAAA;kDAERnF,aAAAA,CAAc;4CAAE7B,EAAAA,EAAI,aAAA;4CAAeE,cAAAA,EAAgB;AAAO,yCAAA;;;8CAIjEM,cAAA,CAACC,gBAAAA,EAAAA;oCAAIK,aAAAA,EAAe,CAAA;4DAClBN,cAAA,CAAC8F,eAAQW,OAAO,EAAA;AACd,wCAAA,QAAA,gBAAAtB,eAAA,CAAC1E,iBAAAA,EAAAA;4CAAKC,SAAAA,EAAU,QAAA;4CAASC,UAAAA,EAAW,SAAA;4CAAUC,GAAAA,EAAK,CAAA;;8DACjDZ,cAAA,CAAC0G,eAAAA,EAAAA,EAAAA,CAAAA;AACA,gDAAA,CAAC/B,+BAAiB3E,cAAA,CAAC2G,eAAAA,EAAAA,EAAAA,CAAAA;8DACpB3G,cAAA,CAAC4G,kBAAAA,EAAAA;oDAAmB5F,WAAAA,EAAaA;;;;;;;;;AAO5CF,gBAAAA,SAAAA,IAAa+F,QAAQC,GAAG,CAACC,QAAQ,KAAK,+BACrC/G,cAAA,CAACC,gBAAAA,EAAAA;oBAAIK,aAAAA,EAAe,CAAA;4CAClBN,cAAA,CAAC8F,eAAQW,OAAO,EAAA;AACd,wBAAA,QAAA,gBAAAzG,cAAA,CAACgH,iBAAAA,EAAAA,EAAAA;;;;;;AAOf;AAEA;;AAEkG,qGAElG,MAAML,eAAAA,GAAkB,IAAA;IACtB,MAAM,EAAEtF,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,qBACE6D,eAAA,CAACtF,KAAAA,EAAAA;;0BACCG,cAAA,CAACiH,uBAAAA,EAAAA;gBAAWC,OAAAA,EAAQ,OAAA;gBAAQC,GAAAA,EAAI,IAAA;0BAC7B9F,aAAAA,CAAc;oBACb7B,EAAAA,EAAI,wBAAA;oBACJE,cAAAA,EAAgB;AAClB,iBAAA;;AAED,YAAA;AACC,gBAAA;AACE,oBAAA;AACE0H,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,iCAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,iBAAA;wBACN6C,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR;AACD,iBAAA;AACD,gBAAA;AACE,oBAAA;wBACE4E,YAAAA,EAAc,cAAA;AACdF,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,iBAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,UAAA;wBACN6C,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR,qBAAA;AACA,oBAAA;wBACE4E,YAAAA,EAAc,cAAA;AACdF,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,iCAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,iBAAA;wBACN6C,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR;AACD;AACF,aAAA,CAAC6E,GAAG,CAAC,CAACC,KAAKC,KAAAA,iBACVzH,cAAA,CAAC0H,kBAAKC,IAAI,EAAA;oBAAa/G,GAAAA,EAAK,CAAA;8BACzB4G,GAAAA,CAAID,GAAG,CAAC,CAAC,EAAEF,IAAI,EAAE,GAAGO,KAAAA,EAAO,iBAC1B5H,cAAA,CAAC0H,iBAAAA,CAAKG,IAAI,EAAA;4BAERC,EAAAA,EAAI,EAAA;4BACJC,CAAAA,EAAG,CAAA;4BACHC,GAAAA,EAAKX,IAAAA;4BACL3G,SAAAA,EAAU,QAAA;4BACVC,UAAAA,EAAW,SAAA;AAEX,4BAAA,QAAA,gBAAAX,cAAA,CAACiI,sBAAAA,EAAAA;AAAe,gCAAA,GAAGL;;AAPdA,yBAAAA,EAAAA,KAAAA,CAAMpD,IAAI,CAAA;AAHLiD,iBAAAA,EAAAA,KAAAA,CAAAA;;;AAiBxB,CAAA;AAUA,MAAMb,kBAAAA,GAAqB,CAAC,EAAE5F,WAAW,EAA2B,GAAA;IAClE,MAAM,EAAEK,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM4G,eAAAA,GAAkBjH,uBAAiB,CAACC,KAAAA,GAAUA,MAAMC,SAAS,CAACW,KAAK,CAACqG,eAAe,CAAA;AAEzF,IAAA,qBACEhD,eAAA,CAACtF,KAAAA,EAAAA;;0BACCsF,eAAA,CAAC1E,iBAAAA,EAAAA;gBAAKC,SAAAA,EAAU,QAAA;gBAASC,UAAAA,EAAW,SAAA;gBAAUC,GAAAA,EAAK,CAAA;;kCACjDZ,cAAA,CAACiH,uBAAAA,EAAAA;wBAAWC,OAAAA,EAAQ,OAAA;wBAAQC,GAAAA,EAAI,IAAA;kCAC7B9F,aAAAA,CAAc;4BACb7B,EAAAA,EAAI,gDAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA;;kCAEFM,cAAA,CAACiH,uBAAAA,EAAAA;kCACE5F,aAAAA,CACC;4BACE7B,EAAAA,EAAI,gEAAA;4BACJE,cAAAA,EACE;yBACJ,EACA;AACE0I,4BAAAA,IAAAA,gBACEpI,cAAA,CAACC,gBAAAA,EAAAA;gCACCkH,GAAAA,EAAI,GAAA;gCACJkB,KAAAA,EAAM,YAAA;gCACNC,MAAAA,EAAO,QAAA;gCACPC,GAAAA,EAAI,qBAAA;gCACJC,IAAAA,EAAK,2FAAA;0CAEJnH,aAAAA,CAAc;oCACb7B,EAAAA,EAAI,+CAAA;oCACJE,cAAAA,EAAgB;AAClB,iCAAA;;AAGN,yBAAA;;;;AAIN,0BAAAM,cAAA,CAAC0H,kBAAKC,IAAI,EAAA;gBAAC/G,GAAAA,EAAK,CAAA;AACb,gBAAA,QAAA,EAAA;AACC,oBAAA;AACE6H,wBAAAA,IAAAA,EAAMpH,aAAAA,CAAc;4BAClB7B,EAAAA,EAAI,iEAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AACA0H,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,4DAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,kBAAA;wBACNkE,OAAAA,EAASC,MAAAA,CAAOC,OAAO,CAAC5H,WAAAA,CAAAA,CAAauG,GAAG,CAAC,CAAC,CAACsB,KAAAA,EAAOzB,KAAAA,CAAM,IAAM;AAC5DA,gCAAAA,KAAAA;AACAyB,gCAAAA;6BACF,CAAA,CAAA;AACAC,wBAAAA,WAAAA,EAAazH,aAAAA,CAAc;4BACzB7B,EAAAA,EAAI,eAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA2H,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR,qBAAA;AACA,oBAAA;AACE+F,wBAAAA,IAAAA,EAAMpH,aAAAA,CAAc;4BAClB7B,EAAAA,EAAI,oDAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AACA0H,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,qDAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,cAAA;wBACNkE,OAAAA,EAAS;AACP,4BAAA;AACEtB,gCAAAA,KAAAA,EAAO/F,aAAAA,CAAc;oCACnB7B,EAAAA,EAAI,mEAAA;oCACJE,cAAAA,EAAgB;AAClB,iCAAA,CAAA;gCACAmJ,KAAAA,EAAO;AACT,6BAAA;AACGX,4BAAAA,GAAAA,eAAAA,CAAgBX,GAAG,CAAC,CAACzF,KAAAA,IAAW;AACjCsF,oCAAAA,KAAAA,EAAO/F,aAAAA,CACL;wCACE7B,EAAAA,EAAI,4DAAA;wCACJE,cAAAA,EAAgB;qCAClB,EACA;AACE8E,wCAAAA,IAAAA,EAAMnD,aAAAA,CAAc;4CAClB7B,EAAAA,EAAIsC,KAAAA;AACJpC,4CAAAA,cAAAA,EAAgBqJ,UAAAA,CAAWjH,KAAAA;AAC7B,yCAAA;AACF,qCAAA,CAAA;oCAEF+G,KAAAA,EAAO/G;iCACT,CAAA;AACD,yBAAA;AACDgH,wBAAAA,WAAAA,EAAazH,aAAAA,CAAc;4BACzB7B,EAAAA,EAAI,mCAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA2H,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR;iBACD,CAAC6E,GAAG,CAAC,CAAC,EAAEF,IAAI,EAAE,GAAGO,KAAAA,EAAO,iBACvB5H,cAAA,CAAC0H,iBAAAA,CAAKG,IAAI,EAAA;wBAERC,EAAAA,EAAI,EAAA;wBACJC,CAAAA,EAAG,CAAA;wBACHC,GAAAA,EAAKX,IAAAA;wBACL3G,SAAAA,EAAU,QAAA;wBACVC,UAAAA,EAAW,SAAA;AAEX,wBAAA,QAAA,gBAAAX,cAAA,CAACiI,sBAAAA,EAAAA;AAAe,4BAAA,GAAGL;;AAPdA,qBAAAA,EAAAA,KAAAA,CAAMpD,IAAI,CAAA;;;;AAa3B,CAAA;AAEA;;AAEkG,qGAElG,MAAMkC,eAAAA,GAAkB,IAAA;IACtB,MAAM,EAAErF,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,qBACE6D,eAAA,CAACtF,KAAAA,EAAAA;;0BACCG,cAAA,CAACiH,uBAAAA,EAAAA;gBAAWC,OAAAA,EAAQ,OAAA;gBAAQC,GAAAA,EAAI,IAAA;0BAC7B9F,aAAAA,CAAc;oBACb7B,EAAAA,EAAI,gBAAA;oBACJE,cAAAA,EAAgB;AAClB,iBAAA;;AAEF,0BAAAM,cAAA,CAAC0H,kBAAKC,IAAI,EAAA;gBAAC/G,GAAAA,EAAK,CAAA;AACb,gBAAA,QAAA,EAAA;AACC,oBAAA;AACEwG,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,2BAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,WAAA;wBACNjF,QAAAA,EAAU,IAAA;wBACV8H,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR,qBAAA;AACA,oBAAA;AACE0E,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,0BAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,UAAA;wBACN6C,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR,qBAAA;AACA,oBAAA;AACE0E,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,uBAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,OAAA;wBACNjF,QAAAA,EAAU,IAAA;wBACV8H,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR,qBAAA;AACA,oBAAA;AACE0E,wBAAAA,KAAAA,EAAO/F,aAAAA,CAAc;4BACnB7B,EAAAA,EAAI,0BAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA,CAAA;wBACA8E,IAAAA,EAAM,UAAA;wBACN6C,IAAAA,EAAM,CAAA;wBACN3E,IAAAA,EAAM;AACR;iBACD,CAAC6E,GAAG,CAAC,CAAC,EAAEF,IAAI,EAAE,GAAGO,KAAAA,EAAO,iBACvB5H,cAAA,CAAC0H,iBAAAA,CAAKG,IAAI,EAAA;wBAERC,EAAAA,EAAI,EAAA;wBACJC,CAAAA,EAAG,CAAA;wBACHC,GAAAA,EAAKX,IAAAA;wBACL3G,SAAAA,EAAU,QAAA;wBACVC,UAAAA,EAAW,SAAA;AAEX,wBAAA,QAAA,gBAAAX,cAAA,CAACiI,sBAAAA,EAAAA;AAAe,4BAAA,GAAGL;;AAPdA,qBAAAA,EAAAA,KAAAA,CAAMpD,IAAI,CAAA;;;;AAa3B,CAAA;AAEA;;AAEkG,qGAElG,MAAMwC,iBAAAA,GAAoB,IAAA;IACxB,MAAM,EAAE3F,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEG,kBAAkB,EAAE,GAAGC,6BAAAA,EAAAA;AAC/B,IAAA,MAAMK,WAAWiH,qBAAAA,CAAc,aAAA,EAAe,CAACC,CAAAA,GAAMA,EAAElH,QAAQ,CAAA;AAE/D,IAAA,MAAMmH,YAAAA,GAAe,IAAA;QACnBnH,QAAAA,CAAS;YAAEW,IAAAA,EAAM;AAAkB,SAAA,CAAA;QACnCjB,kBAAAA,CAAmB;YACjBiB,IAAAA,EAAM,SAAA;AACNC,YAAAA,OAAAA,EAAStB,aAAAA,CAAc;gBACrB7B,EAAAA,EAAI,0CAAA;gBACJE,cAAAA,EAAgB;AAClB,aAAA;AACF,SAAA,CAAA;AACF,IAAA,CAAA;AAEA,IAAA,qBACEyF,eAAA,CAACtF,KAAAA,EAAAA;QAAMc,UAAAA,EAAW,OAAA;;0BAChBwE,eAAA,CAAC1E,iBAAAA,EAAAA;gBAAKC,SAAAA,EAAU,QAAA;gBAASC,UAAAA,EAAW,OAAA;gBAAQC,GAAAA,EAAK,CAAA;;kCAC/CZ,cAAA,CAACiH,uBAAAA,EAAAA;wBAAWC,OAAAA,EAAQ,OAAA;wBAAQC,GAAAA,EAAI,IAAA;kCAC7B9F,aAAAA,CAAc;4BACb7B,EAAAA,EAAI,qBAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA;;kCAEFM,cAAA,CAACiH,uBAAAA,EAAAA;wBAAWC,OAAAA,EAAQ,IAAA;kCACjB7F,aAAAA,CAAc;4BACb7B,EAAAA,EAAI,2BAAA;4BACJE,cAAAA,EAAgB;AAClB,yBAAA;;;;0BAGJM,cAAA,CAACmG,mBAAAA,EAAAA;gBAAOe,OAAAA,EAAQ,UAAA;gBAAWiC,OAAAA,EAASD,YAAAA;0BACjC7H,aAAAA,CAAc;oBACb7B,EAAAA,EAAI,qBAAA;oBACJE,cAAAA,EAAgB;AAClB,iBAAA;;;;AAIR,CAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"ProfilePage.js","sources":["../../../../../admin/src/pages/ProfilePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, useNotifyAT, Grid, Typography, FlexProps } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Form, FormHelpers } from '../components/Form';\nimport { InputRenderer } from '../components/FormInputs/Renderer';\nimport { useGuidedTour } from '../components/GuidedTour/Context';\nimport { Layouts } from '../components/Layouts/Layout';\nimport { Page } from '../components/PageHelpers';\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useTracking } from '../features/Tracking';\nimport { useAPIErrorHandler } from '../hooks/useAPIErrorHandler';\nimport { useIsDesktop } from '../hooks/useMediaQuery';\nimport { AppState, setAppTheme } from '../reducer';\nimport { useIsSSOLockedQuery, useUpdateMeMutation } from '../services/auth';\nimport { isBaseQueryError } from '../utils/baseQuery';\nimport { translatedErrors } from '../utils/translatedErrors';\nimport { getDisplayName } from '../utils/users';\n\nimport { COMMON_USER_SCHEMA } from './Settings/pages/Users/utils/validation';\n\nimport type { UpdateMe } from '../../../shared/contracts/users';\n\nconst PROFILE_VALIDTION_SCHEMA = yup.object().shape({\n ...COMMON_USER_SCHEMA,\n currentPassword: yup\n .string()\n // @ts-expect-error – no idea why this is failing.\n .when(['password', 'confirmPassword'], (password, confirmPassword, passSchema) => {\n return password || confirmPassword\n ? passSchema\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .nullable()\n : passSchema;\n }),\n preferedLanguage: yup.string().nullable(),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * ProfilePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst Panel = ({ children, ...flexProps }: FlexProps) => {\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4} {...flexProps}>\n {children}\n </Flex>\n </Box>\n );\n};\n\nconst ProfilePage = () => {\n const isDesktop = useIsDesktop();\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const currentTheme = useTypedSelector((state) => state.admin_app.theme.currentTheme);\n const dispatch = useTypedDispatch();\n const {\n _unstableFormatValidationErrors: formatValidationErrors,\n _unstableFormatAPIError: formatApiError,\n } = useAPIErrorHandler();\n\n const user = useAuth('ProfilePage', (state) => state.user);\n\n React.useEffect(() => {\n if (user) {\n notifyStatus(\n formatMessage({\n id: 'Settings.profile.form.notify.data.loaded',\n defaultMessage: 'Your profile data has been loaded',\n })\n );\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n }, [formatMessage, notifyStatus, toggleNotification, user]);\n\n const [updateMe, { isLoading: isSubmittingForm }] = useUpdateMeMutation();\n\n const {\n isLoading,\n data: dataSSO,\n error,\n } = useIsSSOLockedQuery(undefined, {\n skip: !(window.strapi.isEE && window.strapi.features.isEnabled('sso')),\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'Settings.permissions.users.sso.provider.error' }),\n });\n }\n }, [error, formatMessage, toggleNotification]);\n\n type UpdateUsersMeBody = UpdateMe.Request['body'] & {\n confirmPassword: string;\n currentTheme: AppState['theme']['currentTheme'];\n };\n\n const handleSubmit = async (\n body: UpdateUsersMeBody,\n { setErrors }: FormHelpers<UpdateUsersMeBody>\n ) => {\n const { confirmPassword: _confirmPassword, currentTheme, ...bodyRest } = body;\n let dataToSend = bodyRest;\n\n // The password fields are optional. If the user didn't touch them, don't send any password\n // to the API, because an empty string would throw a validation error\n if (dataToSend.password === '') {\n const {\n password: _password,\n currentPassword: _currentPassword,\n ...passwordRequestBodyRest\n } = dataToSend;\n dataToSend = passwordRequestBodyRest;\n }\n\n const res = await updateMe(dataToSend);\n\n if ('data' in res) {\n dispatch(setAppTheme(currentTheme));\n\n trackUsage('didChangeMode', { newMode: currentTheme });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n }\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n } else if (isBaseQueryError(res.error)) {\n toggleNotification({\n type: 'danger',\n message: formatApiError(res.error),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n const hasLockedRole = dataSSO?.isSSOLocked ?? false;\n const { email, firstname, lastname, username, preferedLanguage } = user ?? {};\n const initialData = {\n email: email ?? '',\n firstname: firstname ?? '',\n lastname: lastname ?? '',\n username: username ?? '',\n preferedLanguage,\n currentTheme,\n confirmPassword: '',\n password: '',\n };\n\n return (\n <>\n <Page.Main aria-busy={isSubmittingForm}>\n <Page.Title>\n {formatMessage({\n id: 'Settings.profile.form.section.head.title',\n defaultMessage: 'User profile',\n })}\n </Page.Title>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={initialData}\n validationSchema={PROFILE_VALIDTION_SCHEMA}\n >\n {({ isSubmitting, modified }) => (\n <>\n <Layouts.Header\n title={getDisplayName(user)}\n primaryAction={\n <Button\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n disabled={!modified}\n fullWidth\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n <Box paddingBottom={6}>\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <UserInfoSection />\n {!hasLockedRole && <PasswordSection />}\n <PreferencesSection localeNames={localeNames} />\n </Flex>\n </Layouts.Content>\n </Box>\n </>\n )}\n </Form>\n {isDesktop && process.env.NODE_ENV === 'development' && (\n <Box paddingBottom={6}>\n <Layouts.Content>\n <GuidedTourSection />\n </Layouts.Content>\n </Box>\n )}\n </Page.Main>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PasswordSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst PasswordSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.change-password',\n defaultMessage: 'Change password',\n })}\n </Typography>\n {[\n [\n {\n label: formatMessage({\n id: 'Auth.form.currentPassword.label',\n defaultMessage: 'Current Password',\n }),\n name: 'currentPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n [\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n size: 6,\n type: 'password' as const,\n },\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n ].map((row, index) => (\n <Grid.Root key={index} gap={5}>\n {row.map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n ))}\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PreferencesSection\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PreferencesSectionProps {\n localeNames: Record<string, string>;\n}\n\nconst PreferencesSection = ({ localeNames }: PreferencesSectionProps) => {\n const { formatMessage } = useIntl();\n const themesToDisplay = useTypedSelector((state) => state.admin_app.theme.availableThemes);\n\n return (\n <Panel>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'Settings.profile.form.section.experience.title',\n defaultMessage: 'Experience',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'Settings.profile.form.section.experience.interfaceLanguageHelp',\n defaultMessage:\n 'Preference changes will apply only to you. More information is available {here}.',\n },\n {\n here: (\n <Box\n tag=\"a\"\n color=\"primary600\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#locales\"\n >\n {formatMessage({\n id: 'Settings.profile.form.section.experience.here',\n defaultMessage: 'here',\n })}\n </Box>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Grid.Root gap={5}>\n {[\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage.hint',\n defaultMessage: 'This will only display your own interface in the chosen language.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage',\n defaultMessage: 'Interface language',\n }),\n name: 'preferedLanguage',\n options: Object.entries(localeNames).map(([value, label]) => ({\n label,\n value,\n })),\n placeholder: formatMessage({\n id: 'global.select',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.hint',\n defaultMessage: 'Displays your interface in the chosen mode.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.label',\n defaultMessage: 'Interface mode',\n }),\n name: 'currentTheme',\n options: [\n {\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.option-system-label',\n defaultMessage: 'Use system settings',\n }),\n value: 'system',\n },\n ...themesToDisplay.map((theme) => ({\n label: formatMessage(\n {\n id: 'Settings.profile.form.section.experience.mode.option-label',\n defaultMessage: '{name} mode',\n },\n {\n name: formatMessage({\n id: theme,\n defaultMessage: upperFirst(theme),\n }),\n }\n ),\n value: theme,\n })),\n ],\n placeholder: formatMessage({\n id: 'app.components.Select.placeholder',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UserInfoSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst UserInfoSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.profile',\n defaultMessage: 'Profile',\n })}\n </Typography>\n <Grid.Root gap={5}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n }),\n name: 'firstname',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 6,\n type: 'email' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n }),\n name: 'username',\n size: 6,\n type: 'string' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst GuidedTourSection = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const dispatch = useGuidedTour('ProfilePage', (s) => s.dispatch);\n\n const onClickReset = () => {\n dispatch({ type: 'reset_all_tours' });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'tours.profile.notification.success.reset',\n defaultMessage: 'Guided tour reset',\n }),\n });\n };\n\n return (\n <Panel alignItems=\"start\">\n <Flex direction=\"column\" alignItems=\"start\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'tours.profile.title',\n defaultMessage: 'Guided tour',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage({\n id: 'tours.profile.description',\n defaultMessage: 'You can reset the guided tour at any time.',\n })}\n </Typography>\n </Flex>\n <Button variant=\"tertiary\" onClick={onClickReset}>\n {formatMessage({\n id: 'tours.profile.reset',\n defaultMessage: 'Reset guided tour',\n })}\n </Button>\n </Panel>\n );\n};\n\nexport { ProfilePage };\n"],"names":["PROFILE_VALIDTION_SCHEMA","yup","object","shape","COMMON_USER_SCHEMA","currentPassword","string","when","password","confirmPassword","passSchema","required","id","translatedErrors","defaultMessage","nullable","preferedLanguage","Panel","children","flexProps","_jsx","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Flex","direction","alignItems","gap","ProfilePage","isDesktop","useIsDesktop","localeNames","useTypedSelector","state","admin_app","language","formatMessage","useIntl","trackUsage","useTracking","toggleNotification","useNotification","notifyStatus","useNotifyAT","currentTheme","theme","dispatch","useTypedDispatch","_unstableFormatValidationErrors","formatValidationErrors","_unstableFormatAPIError","formatApiError","useAPIErrorHandler","user","useAuth","React","useEffect","type","message","updateMe","isLoading","isSubmittingForm","useUpdateMeMutation","data","dataSSO","error","useIsSSOLockedQuery","undefined","skip","window","strapi","isEE","features","isEnabled","handleSubmit","body","setErrors","_confirmPassword","bodyRest","dataToSend","_password","_currentPassword","passwordRequestBodyRest","res","setAppTheme","newMode","isBaseQueryError","name","Page","Loading","hasLockedRole","isSSOLocked","email","firstname","lastname","username","initialData","_Fragment","_jsxs","Main","aria-busy","Title","Form","method","onSubmit","initialValues","validationSchema","isSubmitting","modified","Layouts","Header","title","getDisplayName","primaryAction","Button","startIcon","Check","loading","disabled","fullWidth","Content","UserInfoSection","PasswordSection","PreferencesSection","process","env","NODE_ENV","GuidedTourSection","Typography","variant","tag","label","size","autoComplete","map","row","index","Grid","Root","field","Item","xs","m","col","InputRenderer","themesToDisplay","availableThemes","here","color","target","rel","href","hint","options","Object","entries","value","placeholder","upperFirst","useGuidedTour","s","onClickReset","onClick"],"mappings":"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"}
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var designSystem = require('@strapi/design-system');
|
|
6
|
+
var icons = require('@strapi/icons');
|
|
7
|
+
var reactIntl = require('react-intl');
|
|
8
|
+
var reactRouterDom = require('react-router-dom');
|
|
9
|
+
var ConfirmDialog = require('../components/ConfirmDialog.js');
|
|
10
|
+
var Layout = require('../components/Layouts/Layout.js');
|
|
11
|
+
var PageHelpers = require('../components/PageHelpers.js');
|
|
12
|
+
var RelativeTime = require('../components/RelativeTime.js');
|
|
13
|
+
var Auth = require('../features/Auth.js');
|
|
14
|
+
var Notifications = require('../features/Notifications.js');
|
|
15
|
+
var useAPIErrorHandler = require('../hooks/useAPIErrorHandler.js');
|
|
16
|
+
var auth = require('../services/auth.js');
|
|
17
|
+
var baseQuery = require('../utils/baseQuery.js');
|
|
18
|
+
|
|
19
|
+
function _interopNamespace(e) {
|
|
20
|
+
if (e && e.__esModule) return e;
|
|
21
|
+
var n = Object.create(null);
|
|
22
|
+
if (e) {
|
|
23
|
+
Object.keys(e).forEach(function (k) {
|
|
24
|
+
if (k !== 'default') {
|
|
25
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
26
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
get: function () { return e[k]; }
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
n.default = e;
|
|
34
|
+
return Object.freeze(n);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
38
|
+
|
|
39
|
+
/* -------------------------------------------------------------------------------------------------
|
|
40
|
+
* SessionsPage
|
|
41
|
+
* -----------------------------------------------------------------------------------------------*/ const SessionsPage = ()=>{
|
|
42
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
43
|
+
const navigate = reactRouterDom.useNavigate();
|
|
44
|
+
const { toggleNotification } = Notifications.useNotification();
|
|
45
|
+
const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler.useAPIErrorHandler();
|
|
46
|
+
const logout = Auth.useAuth('SessionsPage', (state)=>state.logout);
|
|
47
|
+
const { data: sessions = [], isLoading, error } = auth.useGetActiveSessionsQuery();
|
|
48
|
+
const [revokeSession] = auth.useRevokeSessionMutation();
|
|
49
|
+
const [revokeAllSessions] = auth.useRevokeAllSessionsMutation();
|
|
50
|
+
const handleLogoutAndRedirect = React__namespace.useCallback(async ()=>{
|
|
51
|
+
await logout();
|
|
52
|
+
navigate('/auth/login');
|
|
53
|
+
}, [
|
|
54
|
+
logout,
|
|
55
|
+
navigate
|
|
56
|
+
]);
|
|
57
|
+
const notifyError = React__namespace.useCallback((error)=>{
|
|
58
|
+
toggleNotification({
|
|
59
|
+
type: 'danger',
|
|
60
|
+
message: error && baseQuery.isBaseQueryError(error) ? formatAPIError(error) : formatMessage({
|
|
61
|
+
id: 'notification.error',
|
|
62
|
+
defaultMessage: 'An error occurred'
|
|
63
|
+
})
|
|
64
|
+
});
|
|
65
|
+
}, [
|
|
66
|
+
formatAPIError,
|
|
67
|
+
formatMessage,
|
|
68
|
+
toggleNotification
|
|
69
|
+
]);
|
|
70
|
+
const runSessionMutation = React__namespace.useCallback(async (action, onSuccess)=>{
|
|
71
|
+
try {
|
|
72
|
+
const res = await action();
|
|
73
|
+
if (res && 'error' in res && res.error) {
|
|
74
|
+
notifyError(res.error);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
await onSuccess();
|
|
78
|
+
} catch {
|
|
79
|
+
notifyError();
|
|
80
|
+
}
|
|
81
|
+
}, [
|
|
82
|
+
notifyError
|
|
83
|
+
]);
|
|
84
|
+
const handleRevoke = async (session)=>{
|
|
85
|
+
await runSessionMutation(()=>revokeSession(session.id), async ()=>{
|
|
86
|
+
if (session.current) {
|
|
87
|
+
await handleLogoutAndRedirect();
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
toggleNotification({
|
|
91
|
+
type: 'success',
|
|
92
|
+
message: formatMessage({
|
|
93
|
+
id: 'Settings.sessions.revoke.success',
|
|
94
|
+
defaultMessage: 'Session ended'
|
|
95
|
+
})
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
};
|
|
99
|
+
const handleRevokeOthers = async ()=>{
|
|
100
|
+
await runSessionMutation(()=>revokeAllSessions({
|
|
101
|
+
keepCurrent: true
|
|
102
|
+
}), ()=>{
|
|
103
|
+
toggleNotification({
|
|
104
|
+
type: 'success',
|
|
105
|
+
message: formatMessage({
|
|
106
|
+
id: 'Settings.sessions.revokeOthers.success',
|
|
107
|
+
defaultMessage: 'Other sessions ended'
|
|
108
|
+
})
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
const handleRevokeAll = async ()=>{
|
|
113
|
+
await runSessionMutation(()=>revokeAllSessions(undefined), handleLogoutAndRedirect);
|
|
114
|
+
};
|
|
115
|
+
if (isLoading) {
|
|
116
|
+
return /*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.Loading, {});
|
|
117
|
+
}
|
|
118
|
+
if (error) {
|
|
119
|
+
return /*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.Error, {});
|
|
120
|
+
}
|
|
121
|
+
return /*#__PURE__*/ jsxRuntime.jsxs(PageHelpers.Page.Main, {
|
|
122
|
+
children: [
|
|
123
|
+
/*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.Title, {
|
|
124
|
+
children: formatMessage({
|
|
125
|
+
id: 'Settings.sessions.title',
|
|
126
|
+
defaultMessage: 'Active Devices'
|
|
127
|
+
})
|
|
128
|
+
}),
|
|
129
|
+
/*#__PURE__*/ jsxRuntime.jsx(Layout.Layouts.Header, {
|
|
130
|
+
title: formatMessage({
|
|
131
|
+
id: 'Settings.sessions.title',
|
|
132
|
+
defaultMessage: 'Active Devices'
|
|
133
|
+
}),
|
|
134
|
+
subtitle: formatMessage({
|
|
135
|
+
id: 'Settings.sessions.subtitle',
|
|
136
|
+
defaultMessage: 'These are the devices and sessions currently signed in to your account.'
|
|
137
|
+
}),
|
|
138
|
+
primaryAction: sessions.length > 0 ? /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
139
|
+
gap: 2,
|
|
140
|
+
children: [
|
|
141
|
+
sessions.length > 1 ? /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Dialog.Root, {
|
|
142
|
+
children: [
|
|
143
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Dialog.Trigger, {
|
|
144
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
|
|
145
|
+
variant: "secondary",
|
|
146
|
+
startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.SignOut, {}),
|
|
147
|
+
children: formatMessage({
|
|
148
|
+
id: 'Settings.sessions.revokeOthers',
|
|
149
|
+
defaultMessage: 'Log out of other devices'
|
|
150
|
+
})
|
|
151
|
+
})
|
|
152
|
+
}),
|
|
153
|
+
/*#__PURE__*/ jsxRuntime.jsx(ConfirmDialog.ConfirmDialog, {
|
|
154
|
+
onConfirm: handleRevokeOthers,
|
|
155
|
+
children: formatMessage({
|
|
156
|
+
id: 'Settings.sessions.revokeOthers.confirm',
|
|
157
|
+
defaultMessage: 'Are you sure? This will end every other active session. You will stay signed in on this device.'
|
|
158
|
+
})
|
|
159
|
+
})
|
|
160
|
+
]
|
|
161
|
+
}) : null,
|
|
162
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Dialog.Root, {
|
|
163
|
+
children: [
|
|
164
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Dialog.Trigger, {
|
|
165
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
|
|
166
|
+
variant: "danger-light",
|
|
167
|
+
startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.SignOut, {}),
|
|
168
|
+
children: formatMessage({
|
|
169
|
+
id: 'Settings.sessions.revokeAll',
|
|
170
|
+
defaultMessage: 'Log out of all devices'
|
|
171
|
+
})
|
|
172
|
+
})
|
|
173
|
+
}),
|
|
174
|
+
/*#__PURE__*/ jsxRuntime.jsx(ConfirmDialog.ConfirmDialog, {
|
|
175
|
+
onConfirm: handleRevokeAll,
|
|
176
|
+
children: formatMessage({
|
|
177
|
+
id: 'Settings.sessions.revokeAll.confirm',
|
|
178
|
+
defaultMessage: 'Are you sure? This will end every active session, including this one, and you will need to log in again.'
|
|
179
|
+
})
|
|
180
|
+
})
|
|
181
|
+
]
|
|
182
|
+
})
|
|
183
|
+
]
|
|
184
|
+
}) : undefined
|
|
185
|
+
}),
|
|
186
|
+
/*#__PURE__*/ jsxRuntime.jsx(Layout.Layouts.Content, {
|
|
187
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
188
|
+
background: "neutral0",
|
|
189
|
+
hasRadius: true,
|
|
190
|
+
shadow: "filterShadow",
|
|
191
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Table, {
|
|
192
|
+
colCount: 4,
|
|
193
|
+
rowCount: sessions.length,
|
|
194
|
+
children: [
|
|
195
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Thead, {
|
|
196
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Tr, {
|
|
197
|
+
children: [
|
|
198
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Th, {
|
|
199
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
200
|
+
variant: "sigma",
|
|
201
|
+
children: formatMessage({
|
|
202
|
+
id: 'Settings.sessions.device',
|
|
203
|
+
defaultMessage: 'Device'
|
|
204
|
+
})
|
|
205
|
+
})
|
|
206
|
+
}),
|
|
207
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Th, {
|
|
208
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
209
|
+
variant: "sigma",
|
|
210
|
+
children: formatMessage({
|
|
211
|
+
id: 'Settings.sessions.loginAt',
|
|
212
|
+
defaultMessage: 'Signed in'
|
|
213
|
+
})
|
|
214
|
+
})
|
|
215
|
+
}),
|
|
216
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Th, {
|
|
217
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
218
|
+
variant: "sigma",
|
|
219
|
+
children: formatMessage({
|
|
220
|
+
id: 'Settings.sessions.lastActiveAt',
|
|
221
|
+
defaultMessage: 'Last used'
|
|
222
|
+
})
|
|
223
|
+
})
|
|
224
|
+
}),
|
|
225
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Th, {
|
|
226
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
227
|
+
variant: "sigma",
|
|
228
|
+
children: formatMessage({
|
|
229
|
+
id: 'Settings.sessions.actions',
|
|
230
|
+
defaultMessage: 'Actions'
|
|
231
|
+
})
|
|
232
|
+
})
|
|
233
|
+
})
|
|
234
|
+
]
|
|
235
|
+
})
|
|
236
|
+
}),
|
|
237
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Tbody, {
|
|
238
|
+
children: sessions.map((session)=>/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Tr, {
|
|
239
|
+
children: [
|
|
240
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Td, {
|
|
241
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
242
|
+
gap: 2,
|
|
243
|
+
children: [
|
|
244
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
245
|
+
textColor: "neutral800",
|
|
246
|
+
children: session.deviceName ?? (session.deviceId ? session.deviceId.slice(0, 8) : formatMessage({
|
|
247
|
+
id: 'Settings.sessions.unknownDevice',
|
|
248
|
+
defaultMessage: 'Unknown device'
|
|
249
|
+
}))
|
|
250
|
+
}),
|
|
251
|
+
session.current && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Badge, {
|
|
252
|
+
children: formatMessage({
|
|
253
|
+
id: 'Settings.sessions.current',
|
|
254
|
+
defaultMessage: 'This device'
|
|
255
|
+
})
|
|
256
|
+
})
|
|
257
|
+
]
|
|
258
|
+
})
|
|
259
|
+
}),
|
|
260
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Td, {
|
|
261
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
262
|
+
textColor: "neutral800",
|
|
263
|
+
children: session.loginAt ? /*#__PURE__*/ jsxRuntime.jsx(RelativeTime.RelativeTime, {
|
|
264
|
+
timestamp: new Date(session.loginAt)
|
|
265
|
+
}) : '-'
|
|
266
|
+
})
|
|
267
|
+
}),
|
|
268
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Td, {
|
|
269
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
270
|
+
textColor: "neutral800",
|
|
271
|
+
children: session.lastActiveAt ? /*#__PURE__*/ jsxRuntime.jsx(RelativeTime.RelativeTime, {
|
|
272
|
+
timestamp: new Date(session.lastActiveAt)
|
|
273
|
+
}) : '-'
|
|
274
|
+
})
|
|
275
|
+
}),
|
|
276
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Td, {
|
|
277
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
278
|
+
justifyContent: "end",
|
|
279
|
+
onClick: (e)=>e.stopPropagation(),
|
|
280
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Dialog.Root, {
|
|
281
|
+
children: [
|
|
282
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Dialog.Trigger, {
|
|
283
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
|
|
284
|
+
label: formatMessage({
|
|
285
|
+
id: 'Settings.sessions.revoke',
|
|
286
|
+
defaultMessage: 'End session'
|
|
287
|
+
}),
|
|
288
|
+
variant: "ghost",
|
|
289
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(icons.SignOut, {})
|
|
290
|
+
})
|
|
291
|
+
}),
|
|
292
|
+
/*#__PURE__*/ jsxRuntime.jsx(ConfirmDialog.ConfirmDialog, {
|
|
293
|
+
onConfirm: ()=>handleRevoke(session),
|
|
294
|
+
children: session.current ? formatMessage({
|
|
295
|
+
id: 'Settings.sessions.revoke.confirmCurrent',
|
|
296
|
+
defaultMessage: 'This is the device you are currently using. Ending this session will log you out.'
|
|
297
|
+
}) : formatMessage({
|
|
298
|
+
id: 'Settings.sessions.revoke.confirm',
|
|
299
|
+
defaultMessage: 'Are you sure you want to end this session? The device will need to log in again.'
|
|
300
|
+
})
|
|
301
|
+
})
|
|
302
|
+
]
|
|
303
|
+
})
|
|
304
|
+
})
|
|
305
|
+
})
|
|
306
|
+
]
|
|
307
|
+
}, session.id))
|
|
308
|
+
})
|
|
309
|
+
]
|
|
310
|
+
})
|
|
311
|
+
})
|
|
312
|
+
})
|
|
313
|
+
]
|
|
314
|
+
});
|
|
315
|
+
};
|
|
316
|
+
|
|
317
|
+
exports.SessionsPage = SessionsPage;
|
|
318
|
+
//# sourceMappingURL=SessionsPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionsPage.js","sources":["../../../../../admin/src/pages/SessionsPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Badge,\n Box,\n Button,\n Dialog,\n Flex,\n IconButton,\n Table,\n Tbody,\n Td,\n Th,\n Thead,\n Tr,\n Typography,\n} from '@strapi/design-system';\nimport { SignOut } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { ConfirmDialog } from '../components/ConfirmDialog';\nimport { Layouts } from '../components/Layouts/Layout';\nimport { Page } from '../components/PageHelpers';\nimport { RelativeTime } from '../components/RelativeTime';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useAPIErrorHandler } from '../hooks/useAPIErrorHandler';\nimport {\n useGetActiveSessionsQuery,\n useRevokeAllSessionsMutation,\n useRevokeSessionMutation,\n} from '../services/auth';\nimport { isBaseQueryError } from '../utils/baseQuery';\n\nimport type { SanitizedAdminSession } from '../../../shared/contracts/sessions';\n\n/* -------------------------------------------------------------------------------------------------\n * SessionsPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst SessionsPage = () => {\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const logout = useAuth('SessionsPage', (state) => state.logout);\n\n const { data: sessions = [], isLoading, error } = useGetActiveSessionsQuery();\n const [revokeSession] = useRevokeSessionMutation();\n const [revokeAllSessions] = useRevokeAllSessionsMutation();\n\n const handleLogoutAndRedirect = React.useCallback(async () => {\n await logout();\n navigate('/auth/login');\n }, [logout, navigate]);\n\n const notifyError = React.useCallback(\n (error?: unknown) => {\n toggleNotification({\n type: 'danger',\n message:\n error && isBaseQueryError(error)\n ? formatAPIError(error)\n : formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n },\n [formatAPIError, formatMessage, toggleNotification]\n );\n\n const runSessionMutation = React.useCallback(\n async (\n action: () => Promise<{ error?: unknown } | { data: unknown } | void>,\n onSuccess: () => void | Promise<void>\n ) => {\n try {\n const res = await action();\n\n if (res && 'error' in res && res.error) {\n notifyError(res.error);\n return;\n }\n\n await onSuccess();\n } catch {\n notifyError();\n }\n },\n [notifyError]\n );\n\n const handleRevoke = async (session: SanitizedAdminSession) => {\n await runSessionMutation(\n () => revokeSession(session.id),\n async () => {\n if (session.current) {\n await handleLogoutAndRedirect();\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'Settings.sessions.revoke.success',\n defaultMessage: 'Session ended',\n }),\n });\n }\n );\n };\n\n const handleRevokeOthers = async () => {\n await runSessionMutation(\n () => revokeAllSessions({ keepCurrent: true }),\n () => {\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'Settings.sessions.revokeOthers.success',\n defaultMessage: 'Other sessions ended',\n }),\n });\n }\n );\n };\n\n const handleRevokeAll = async () => {\n await runSessionMutation(() => revokeAllSessions(undefined), handleLogoutAndRedirect);\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error) {\n return <Page.Error />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage({\n id: 'Settings.sessions.title',\n defaultMessage: 'Active Devices',\n })}\n </Page.Title>\n <Layouts.Header\n title={formatMessage({\n id: 'Settings.sessions.title',\n defaultMessage: 'Active Devices',\n })}\n subtitle={formatMessage({\n id: 'Settings.sessions.subtitle',\n defaultMessage: 'These are the devices and sessions currently signed in to your account.',\n })}\n primaryAction={\n sessions.length > 0 ? (\n <Flex gap={2}>\n {sessions.length > 1 ? (\n <Dialog.Root>\n <Dialog.Trigger>\n <Button variant=\"secondary\" startIcon={<SignOut />}>\n {formatMessage({\n id: 'Settings.sessions.revokeOthers',\n defaultMessage: 'Log out of other devices',\n })}\n </Button>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleRevokeOthers}>\n {formatMessage({\n id: 'Settings.sessions.revokeOthers.confirm',\n defaultMessage:\n 'Are you sure? This will end every other active session. You will stay signed in on this device.',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n ) : null}\n <Dialog.Root>\n <Dialog.Trigger>\n <Button variant=\"danger-light\" startIcon={<SignOut />}>\n {formatMessage({\n id: 'Settings.sessions.revokeAll',\n defaultMessage: 'Log out of all devices',\n })}\n </Button>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleRevokeAll}>\n {formatMessage({\n id: 'Settings.sessions.revokeAll.confirm',\n defaultMessage:\n 'Are you sure? This will end every active session, including this one, and you will need to log in again.',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </Flex>\n ) : undefined\n }\n />\n <Layouts.Content>\n <Box background=\"neutral0\" hasRadius shadow=\"filterShadow\">\n <Table colCount={4} rowCount={sessions.length}>\n <Thead>\n <Tr>\n <Th>\n <Typography variant=\"sigma\">\n {formatMessage({ id: 'Settings.sessions.device', defaultMessage: 'Device' })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">\n {formatMessage({\n id: 'Settings.sessions.loginAt',\n defaultMessage: 'Signed in',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">\n {formatMessage({\n id: 'Settings.sessions.lastActiveAt',\n defaultMessage: 'Last used',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">\n {formatMessage({ id: 'Settings.sessions.actions', defaultMessage: 'Actions' })}\n </Typography>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {sessions.map((session) => (\n <Tr key={session.id}>\n <Td>\n <Flex gap={2}>\n <Typography textColor=\"neutral800\">\n {session.deviceName ??\n (session.deviceId\n ? session.deviceId.slice(0, 8)\n : formatMessage({\n id: 'Settings.sessions.unknownDevice',\n defaultMessage: 'Unknown device',\n }))}\n </Typography>\n {session.current && (\n <Badge>\n {formatMessage({\n id: 'Settings.sessions.current',\n defaultMessage: 'This device',\n })}\n </Badge>\n )}\n </Flex>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">\n {session.loginAt ? (\n <RelativeTime timestamp={new Date(session.loginAt)} />\n ) : (\n '-'\n )}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">\n {session.lastActiveAt ? (\n <RelativeTime timestamp={new Date(session.lastActiveAt)} />\n ) : (\n '-'\n )}\n </Typography>\n </Td>\n <Td>\n <Flex justifyContent=\"end\" onClick={(e) => e.stopPropagation()}>\n <Dialog.Root>\n <Dialog.Trigger>\n <IconButton\n label={formatMessage({\n id: 'Settings.sessions.revoke',\n defaultMessage: 'End session',\n })}\n variant=\"ghost\"\n >\n <SignOut />\n </IconButton>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={() => handleRevoke(session)}>\n {session.current\n ? formatMessage({\n id: 'Settings.sessions.revoke.confirmCurrent',\n defaultMessage:\n 'This is the device you are currently using. Ending this session will log you out.',\n })\n : formatMessage({\n id: 'Settings.sessions.revoke.confirm',\n defaultMessage:\n 'Are you sure you want to end this session? The device will need to log in again.',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </Flex>\n </Td>\n </Tr>\n ))}\n </Tbody>\n </Table>\n </Box>\n </Layouts.Content>\n </Page.Main>\n );\n};\n\nexport { SessionsPage };\n"],"names":["SessionsPage","formatMessage","useIntl","navigate","useNavigate","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","logout","useAuth","state","data","sessions","isLoading","error","useGetActiveSessionsQuery","revokeSession","useRevokeSessionMutation","revokeAllSessions","useRevokeAllSessionsMutation","handleLogoutAndRedirect","React","useCallback","notifyError","type","message","isBaseQueryError","id","defaultMessage","runSessionMutation","action","onSuccess","res","handleRevoke","session","current","handleRevokeOthers","keepCurrent","handleRevokeAll","undefined","_jsx","Page","Loading","Error","_jsxs","Main","Title","Layouts","Header","title","subtitle","primaryAction","length","Flex","gap","Dialog","Root","Trigger","Button","variant","startIcon","SignOut","ConfirmDialog","onConfirm","Content","Box","background","hasRadius","shadow","Table","colCount","rowCount","Thead","Tr","Th","Typography","Tbody","map","Td","textColor","deviceName","deviceId","slice","Badge","loginAt","RelativeTime","timestamp","Date","lastActiveAt","justifyContent","onClick","e","stopPropagation","IconButton","label"],"mappings":"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"}
|