@strapi/admin 5.13.0-beta.0 → 5.13.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/layouts/AuthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.js +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.mjs +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.js +4 -76
- package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.mjs +5 -77
- package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +19 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs +21 -3
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js +4 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs +4 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js +32 -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/EditViewPage.mjs +32 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs.map +1 -1
- package/dist/admin/admin/src/translations/ru.json.js +14 -1
- package/dist/admin/admin/src/translations/ru.json.js.map +1 -1
- package/dist/admin/admin/src/translations/ru.json.mjs +14 -1
- package/dist/admin/admin/src/translations/ru.json.mjs.map +1 -1
- package/dist/admin/src/pages/Settings/components/Tokens/FormHead.d.ts +4 -1
- package/dist/server/server/src/content-types/api-token.js +7 -0
- package/dist/server/server/src/content-types/api-token.js.map +1 -1
- package/dist/server/server/src/content-types/api-token.mjs +7 -0
- package/dist/server/server/src/content-types/api-token.mjs.map +1 -1
- package/dist/server/server/src/services/api-token.js +21 -3
- package/dist/server/server/src/services/api-token.js.map +1 -1
- package/dist/server/server/src/services/api-token.mjs +21 -3
- package/dist/server/server/src/services/api-token.mjs.map +1 -1
- package/dist/server/server/src/services/encryption.js +62 -0
- package/dist/server/server/src/services/encryption.js.map +1 -0
- package/dist/server/server/src/services/encryption.mjs +60 -0
- package/dist/server/server/src/services/encryption.mjs.map +1 -0
- package/dist/server/server/src/services/index.js +3 -1
- package/dist/server/server/src/services/index.js.map +1 -1
- package/dist/server/server/src/services/index.mjs +3 -1
- package/dist/server/server/src/services/index.mjs.map +1 -1
- package/dist/server/src/content-types/api-token.d.ts +7 -0
- package/dist/server/src/content-types/api-token.d.ts.map +1 -1
- package/dist/server/src/content-types/index.d.ts +7 -0
- package/dist/server/src/content-types/index.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +11 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/services/api-token.d.ts.map +1 -1
- package/dist/server/src/services/encryption.d.ts +6 -0
- package/dist/server/src/services/encryption.d.ts.map +1 -0
- package/dist/server/src/services/index.d.ts +4 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/shared/contracts/api-token.d.ts +1 -0
- package/dist/shared/contracts/api-token.d.ts.map +1 -1
- package/package.json +7 -7
- package/dist/admin/admin/src/pages/Home/components/ContentManagerWidgets.js +0 -179
- package/dist/admin/admin/src/pages/Home/components/ContentManagerWidgets.js.map +0 -1
- package/dist/admin/admin/src/pages/Home/components/ContentManagerWidgets.mjs +0 -176
- package/dist/admin/admin/src/pages/Home/components/ContentManagerWidgets.mjs.map +0 -1
- package/dist/admin/admin/src/services/homepage.js +0 -28
- package/dist/admin/admin/src/services/homepage.js.map +0 -1
- package/dist/admin/admin/src/services/homepage.mjs +0 -26
- package/dist/admin/admin/src/services/homepage.mjs.map +0 -1
- package/dist/admin/src/pages/Home/components/ContentManagerWidgets.d.ts +0 -3
- package/dist/admin/src/services/homepage.d.ts +0 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthenticatedLayout.js","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { GuidedTourModal } from '../components/GuidedTour/Modal';\nimport { useGuidedTour } from '../components/GuidedTour/Provider';\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useOnce } from '../hooks/useOnce';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const setGuidedTourVisibility = useGuidedTour(\n 'AdminLayout',\n (state) => state.setGuidedTourVisibility\n );\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n
|
|
1
|
+
{"version":3,"file":"AuthenticatedLayout.js","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { GuidedTourModal } from '../components/GuidedTour/Modal';\nimport { useGuidedTour } from '../components/GuidedTour/Provider';\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useOnce } from '../hooks/useOnce';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const setGuidedTourVisibility = useGuidedTour(\n 'AdminLayout',\n (state) => state.setGuidedTourVisibility\n );\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n const userRoles = useAuth('AuthenticatedApp', (state) => state.user?.roles);\n\n React.useEffect(() => {\n if (userRoles) {\n const isUserSuperAdmin = userRoles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin && appInfo?.autoReload) {\n setGuidedTourVisibility(true);\n }\n }\n }, [userRoles, appInfo?.autoReload, setGuidedTourVisibility]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n /**\n * Make sure the event is only send once after accessing the admin panel\n * and not at runtime for example when regenerating the permissions with the ctb\n * or with i18n\n */\n useOnce(() => {\n trackUsage('didAccessAuthenticatedAdministration');\n });\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex alignItems=\"flex-start\">\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n />\n <Box flex={1}>\n <Outlet />\n <GuidedTourModal />\n </Box>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","setGuidedTourVisibility","useGuidedTour","state","formatMessage","useIntl","userInfo","useAuth","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","userRoles","roles","isUserSuperAdmin","find","code","autoReload","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","useMenu","checkLatestStrapiVersion","useOnce","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","alignItems","LeftMenu","flex","Outlet","GuidedTourModal","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthenticatedLayout.mjs","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { GuidedTourModal } from '../components/GuidedTour/Modal';\nimport { useGuidedTour } from '../components/GuidedTour/Provider';\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useOnce } from '../hooks/useOnce';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const setGuidedTourVisibility = useGuidedTour(\n 'AdminLayout',\n (state) => state.setGuidedTourVisibility\n );\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n
|
|
1
|
+
{"version":3,"file":"AuthenticatedLayout.mjs","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { GuidedTourModal } from '../components/GuidedTour/Modal';\nimport { useGuidedTour } from '../components/GuidedTour/Provider';\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useOnce } from '../hooks/useOnce';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const setGuidedTourVisibility = useGuidedTour(\n 'AdminLayout',\n (state) => state.setGuidedTourVisibility\n );\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n const userRoles = useAuth('AuthenticatedApp', (state) => state.user?.roles);\n\n React.useEffect(() => {\n if (userRoles) {\n const isUserSuperAdmin = userRoles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin && appInfo?.autoReload) {\n setGuidedTourVisibility(true);\n }\n }\n }, [userRoles, appInfo?.autoReload, setGuidedTourVisibility]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n /**\n * Make sure the event is only send once after accessing the admin panel\n * and not at runtime for example when regenerating the permissions with the ctb\n * or with i18n\n */\n useOnce(() => {\n trackUsage('didAccessAuthenticatedAdministration');\n });\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex alignItems=\"flex-start\">\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n />\n <Box flex={1}>\n <Outlet />\n <GuidedTourModal />\n </Box>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","setGuidedTourVisibility","useGuidedTour","state","formatMessage","useIntl","userInfo","useAuth","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","userRoles","roles","isUserSuperAdmin","find","code","autoReload","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","useMenu","checkLatestStrapiVersion","useOnce","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","alignItems","LeftMenu","flex","Outlet","GuidedTourModal","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"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"}
|
|
@@ -132,7 +132,7 @@ const REGISTER_ADMIN_SCHEMA = yup__namespace.object().shape({
|
|
|
132
132
|
defaultMessage: 'Password is required'
|
|
133
133
|
}).nullable(),
|
|
134
134
|
confirmPassword: yup__namespace.string().required({
|
|
135
|
-
id: translatedErrors.translatedErrors.required,
|
|
135
|
+
id: translatedErrors.translatedErrors.required.id,
|
|
136
136
|
defaultMessage: 'Confirm password is required'
|
|
137
137
|
}).nullable().oneOf([
|
|
138
138
|
yup__namespace.ref('password'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Register.js","sources":["../../../../../../../admin/src/pages/Auth/components/Register.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Typography, Link } from '@strapi/design-system';\nimport omit from 'lodash/omit';\nimport { useIntl } from 'react-intl';\nimport { NavLink, Navigate, useNavigate, useMatch, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\nimport { ValidationError } from 'yup';\n\nimport {\n Register as RegisterUser,\n RegisterAdmin,\n} from '../../../../../shared/contracts/authentication';\nimport { Form, FormHelpers } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { useGuidedTour } from '../../../components/GuidedTour/Provider';\nimport { useNpsSurveySettings } from '../../../components/NpsSurvey';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { useTypedDispatch } from '../../../core/store/hooks';\nimport { useNotification } from '../../../features/Notifications';\nimport { useTracking } from '../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../hooks/useAPIErrorHandler';\nimport { LayoutContent, UnauthenticatedLayout } from '../../../layouts/UnauthenticatedLayout';\nimport { login } from '../../../reducer';\nimport {\n useGetRegistrationInfoQuery,\n useRegisterAdminMutation,\n useRegisterUserMutation,\n} from '../../../services/auth';\nimport { isBaseQueryError } from '../../../utils/baseQuery';\nimport { getByteSize } from '../../../utils/strings';\nimport { translatedErrors } from '../../../utils/translatedErrors';\n\nconst REGISTER_USER_SCHEMA = yup.object().shape({\n firstname: yup.string().trim().required(translatedErrors.required).nullable(),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n .test(\n 'max-bytes',\n {\n id: 'components.Input.error.contain.maxBytes',\n defaultMessage: 'Password must be less than 73 bytes',\n },\n function (value) {\n if (!value || typeof value !== 'string') return true; // validated elsewhere\n\n const byteSize = getByteSize(value);\n return byteSize <= 72;\n }\n )\n .matches(/[a-z]/, {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n })\n .matches(/[A-Z]/, {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n })\n .matches(/\\d/, {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Confirm password is required',\n })\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n })\n .nullable(),\n registrationToken: yup.string().required({\n id: translatedErrors.required.id,\n defaultMessage: 'Registration token is required',\n }),\n});\n\nconst REGISTER_ADMIN_SCHEMA = yup.object().shape({\n firstname: yup\n .string()\n .trim()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Firstname is required',\n })\n .nullable(),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n .test(\n 'max-bytes',\n {\n id: 'components.Input.error.contain.maxBytes',\n defaultMessage: 'Password must be less than 73 bytes',\n },\n function (value) {\n if (!value) return true;\n return new TextEncoder().encode(value).length <= 72;\n }\n )\n .matches(/[a-z]/, {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n })\n .matches(/[A-Z]/, {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n })\n .matches(/\\d/, {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required,\n defaultMessage: 'Confirm password is required',\n })\n .nullable()\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n }),\n email: yup\n .string()\n .email({\n id: translatedErrors.email.id,\n defaultMessage: 'Not a valid email',\n })\n .strict()\n .lowercase({\n id: translatedErrors.lowercase.id,\n defaultMessage: 'Email must be lowercase',\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Email is required',\n })\n .nullable(),\n});\n\ninterface RegisterProps {\n hasAdmin?: boolean;\n}\n\ninterface RegisterFormValues {\n firstname: string;\n lastname: string;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n}\n\nconst Register = ({ hasAdmin }: RegisterProps) => {\n const { toggleNotification } = useNotification();\n const navigate = useNavigate();\n const [submitCount, setSubmitCount] = React.useState(0);\n const [apiError, setApiError] = React.useState<string>();\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const setSkipped = useGuidedTour('Register', (state) => state.setSkipped);\n const { search: searchString } = useLocation();\n const query = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const match = useMatch('/auth/:authType');\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const { setNpsSurveySettings } = useNpsSurveySettings();\n\n const registrationToken = query.get('registrationToken');\n\n const { data: userInfo, error } = useGetRegistrationInfoQuery(registrationToken as string, {\n skip: !registrationToken,\n });\n\n React.useEffect(() => {\n if (error) {\n const message: string = isBaseQueryError(error)\n ? formatAPIError(error)\n : (error.message ?? '');\n\n toggleNotification({\n type: 'danger',\n message,\n });\n\n navigate(`/auth/oops?info=${encodeURIComponent(message)}`);\n }\n }, [error, formatAPIError, navigate, toggleNotification]);\n\n const [registerAdmin] = useRegisterAdminMutation();\n const [registerUser] = useRegisterUserMutation();\n const dispatch = useTypedDispatch();\n\n const handleRegisterAdmin = async (\n { news, ...body }: RegisterAdmin.Request['body'] & { news: boolean },\n setFormErrors: FormHelpers<RegisterFormValues>['setErrors']\n ) => {\n const res = await registerAdmin(body);\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n\n const { roles } = res.data.user;\n\n if (roles) {\n const isUserSuperAdmin = roles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin) {\n localStorage.setItem('GUIDED_TOUR_SKIPPED', JSON.stringify(false));\n setSkipped(false);\n trackUsage('didLaunchGuidedtour');\n }\n }\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n navigate({\n pathname: '/usecase',\n search: `?hasAdmin=${true}`,\n });\n } else {\n navigate('/');\n }\n } else {\n if (isBaseQueryError(res.error)) {\n trackUsage('didNotCreateFirstAdmin');\n\n if (res.error.name === 'ValidationError') {\n setFormErrors(formatValidationErrors(res.error));\n return;\n }\n\n setApiError(formatAPIError(res.error));\n }\n }\n };\n\n const handleRegisterUser = async (\n { news, ...body }: RegisterUser.Request['body'] & { news: boolean },\n setFormErrors: FormHelpers<RegisterFormValues>['setErrors']\n ) => {\n const res = await registerUser(body);\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n navigate({\n pathname: '/usecase',\n search: `?hasAdmin=${hasAdmin}`,\n });\n } else {\n navigate('/');\n }\n } else {\n if (isBaseQueryError(res.error)) {\n trackUsage('didNotCreateFirstAdmin');\n\n if (res.error.name === 'ValidationError') {\n setFormErrors(formatValidationErrors(res.error));\n return;\n }\n\n setApiError(formatAPIError(res.error));\n }\n }\n };\n\n if (\n !match ||\n (match.params.authType !== 'register' && match.params.authType !== 'register-admin')\n ) {\n return <Navigate to=\"/\" />;\n }\n\n const isAdminRegistration = match.params.authType === 'register-admin';\n\n const schema = isAdminRegistration ? REGISTER_ADMIN_SCHEMA : REGISTER_USER_SCHEMA;\n\n return (\n <UnauthenticatedLayout>\n <LayoutContent>\n <Flex direction=\"column\" alignItems=\"center\" gap={3}>\n <Logo />\n\n <Typography tag=\"h1\" variant=\"alpha\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.welcome.title',\n defaultMessage: 'Welcome to Strapi!',\n })}\n </Typography>\n <Typography variant=\"epsilon\" textColor=\"neutral600\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.register.subtitle',\n defaultMessage:\n 'Credentials are only used to authenticate in Strapi. All saved data will be stored in your database.',\n })}\n </Typography>\n {apiError ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {apiError}\n </Typography>\n ) : null}\n </Flex>\n <Form\n method=\"POST\"\n initialValues={\n {\n firstname: userInfo?.firstname || '',\n lastname: userInfo?.lastname || '',\n email: userInfo?.email || '',\n password: '',\n confirmPassword: '',\n registrationToken: registrationToken || undefined,\n news: false,\n } satisfies RegisterFormValues\n }\n onSubmit={async (data, helpers) => {\n const normalizedData = normalizeData(data);\n\n try {\n await schema.validate(normalizedData, { abortEarly: false });\n\n if (submitCount > 0 && isAdminRegistration) {\n trackUsage('didSubmitWithErrorsFirstAdmin', { count: submitCount.toString() });\n }\n\n if (normalizedData.registrationToken) {\n handleRegisterUser(\n {\n userInfo: omit(normalizedData, [\n 'registrationToken',\n 'confirmPassword',\n 'email',\n 'news',\n ]),\n registrationToken: normalizedData.registrationToken,\n news: normalizedData.news,\n },\n helpers.setErrors\n );\n } else {\n await handleRegisterAdmin(\n omit(normalizedData, ['registrationToken', 'confirmPassword']),\n helpers.setErrors\n );\n }\n } catch (err) {\n if (err instanceof ValidationError) {\n helpers.setErrors(\n err.inner.reduce<Record<string, string>>((acc, { message, path }) => {\n if (path && typeof message === 'object') {\n acc[path] = formatMessage(message);\n }\n return acc;\n }, {})\n );\n }\n setSubmitCount(submitCount + 1);\n }\n }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} marginTop={7}>\n <Grid.Root gap={4}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'Firstname',\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: 'Lastname',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n disabled: !isAdminRegistration,\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 12,\n type: 'email' as const,\n },\n {\n hint: formatMessage({\n id: 'Auth.form.password.hint',\n defaultMessage:\n 'Must be at least 8 characters, 1 uppercase, 1 lowercase & 1 number',\n }),\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n required: true,\n size: 12,\n type: 'password' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n required: true,\n size: 12,\n type: 'password' as const,\n },\n {\n label: formatMessage(\n {\n id: 'Auth.form.register.news.label',\n defaultMessage:\n 'Keep me updated about new features & upcoming improvements (by doing this you accept the {terms} and the {policy}).',\n },\n {\n terms: (\n <A target=\"_blank\" href=\"https://strapi.io/terms\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.terms',\n defaultMessage: 'terms',\n })}\n </A>\n ),\n policy: (\n <A target=\"_blank\" href=\"https://strapi.io/privacy\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.policy',\n defaultMessage: 'policy',\n })}\n </A>\n ),\n }\n ),\n name: 'news',\n size: 12,\n type: 'checkbox' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item key={field.name} col={size} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n <Button fullWidth size=\"L\" type=\"submit\">\n {formatMessage({\n id: 'Auth.form.button.register',\n defaultMessage: \"Let's start\",\n })}\n </Button>\n </Flex>\n </Form>\n {match?.params.authType === 'register' && (\n <Box paddingTop={4}>\n <Flex justifyContent=\"center\">\n <Link tag={NavLink} to=\"/auth/login\">\n {formatMessage({\n id: 'Auth.link.signin.account',\n defaultMessage: 'Already have an account?',\n })}\n </Link>\n </Flex>\n </Box>\n )}\n </LayoutContent>\n </UnauthenticatedLayout>\n );\n};\n\ninterface RegisterFormValues {\n firstname: string;\n lastname: string;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n}\n\ntype StringKeys<T> = {\n [K in keyof T]: T[K] extends string | undefined ? K : never;\n}[keyof T];\n\n/**\n * @description Trims all values but the password & sets lastName to null if it's a falsey value.\n */\nfunction normalizeData(data: RegisterFormValues) {\n return Object.entries(data).reduce(\n (acc, [key, value]) => {\n type PasswordKeys = Extract<keyof RegisterFormValues, 'password' | 'confirmPassword'>;\n type RegisterFormStringValues = Exclude<\n keyof Pick<RegisterFormValues, StringKeys<RegisterFormValues>>,\n PasswordKeys\n >;\n\n if (!['password', 'confirmPassword'].includes(key) && typeof value === 'string') {\n acc[key as RegisterFormStringValues] = value.trim();\n\n if (key === 'lastname') {\n acc[key] = value || undefined;\n }\n } else {\n acc[key as PasswordKeys] = value;\n }\n\n return acc;\n },\n {} as {\n firstname: string;\n lastname: string | undefined;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n }\n );\n}\n\nconst A = styled.a`\n color: ${({ theme }) => theme.colors.primary600};\n`;\n\nexport { Register };\nexport type { RegisterProps };\n"],"names":["REGISTER_USER_SCHEMA","yup","object","shape","firstname","string","trim","required","translatedErrors","nullable","lastname","password","min","id","minLength","defaultMessage","values","test","value","byteSize","getByteSize","matches","message","confirmPassword","oneOf","ref","registrationToken","REGISTER_ADMIN_SCHEMA","TextEncoder","encode","length","email","strict","lowercase","Register","hasAdmin","toggleNotification","useNotification","navigate","useNavigate","submitCount","setSubmitCount","React","useState","apiError","setApiError","trackUsage","useTracking","formatMessage","useIntl","setSkipped","useGuidedTour","state","search","searchString","useLocation","query","useMemo","URLSearchParams","match","useMatch","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","setNpsSurveySettings","useNpsSurveySettings","get","data","userInfo","error","useGetRegistrationInfoQuery","skip","useEffect","isBaseQueryError","type","encodeURIComponent","registerAdmin","useRegisterAdminMutation","registerUser","useRegisterUserMutation","dispatch","useTypedDispatch","handleRegisterAdmin","news","body","setFormErrors","res","login","token","roles","user","isUserSuperAdmin","find","code","localStorage","setItem","JSON","stringify","s","enabled","pathname","name","handleRegisterUser","params","authType","_jsx","Navigate","to","isAdminRegistration","schema","UnauthenticatedLayout","_jsxs","LayoutContent","Flex","direction","alignItems","gap","Logo","Typography","tag","variant","textAlign","textColor","role","tabIndex","Form","method","initialValues","undefined","onSubmit","helpers","normalizedData","normalizeData","validate","abortEarly","count","toString","omit","setErrors","err","ValidationError","inner","reduce","acc","path","marginTop","Grid","Root","label","size","disabled","hint","terms","A","target","href","rel","policy","map","field","Item","col","InputRenderer","Button","fullWidth","Box","paddingTop","justifyContent","Link","NavLink","Object","entries","key","includes","styled","a","theme","colors","primary600"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Register.js","sources":["../../../../../../../admin/src/pages/Auth/components/Register.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Typography, Link } from '@strapi/design-system';\nimport omit from 'lodash/omit';\nimport { useIntl } from 'react-intl';\nimport { NavLink, Navigate, useNavigate, useMatch, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\nimport { ValidationError } from 'yup';\n\nimport {\n Register as RegisterUser,\n RegisterAdmin,\n} from '../../../../../shared/contracts/authentication';\nimport { Form, FormHelpers } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { useGuidedTour } from '../../../components/GuidedTour/Provider';\nimport { useNpsSurveySettings } from '../../../components/NpsSurvey';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { useTypedDispatch } from '../../../core/store/hooks';\nimport { useNotification } from '../../../features/Notifications';\nimport { useTracking } from '../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../hooks/useAPIErrorHandler';\nimport { LayoutContent, UnauthenticatedLayout } from '../../../layouts/UnauthenticatedLayout';\nimport { login } from '../../../reducer';\nimport {\n useGetRegistrationInfoQuery,\n useRegisterAdminMutation,\n useRegisterUserMutation,\n} from '../../../services/auth';\nimport { isBaseQueryError } from '../../../utils/baseQuery';\nimport { getByteSize } from '../../../utils/strings';\nimport { translatedErrors } from '../../../utils/translatedErrors';\n\nconst REGISTER_USER_SCHEMA = yup.object().shape({\n firstname: yup.string().trim().required(translatedErrors.required).nullable(),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n .test(\n 'max-bytes',\n {\n id: 'components.Input.error.contain.maxBytes',\n defaultMessage: 'Password must be less than 73 bytes',\n },\n function (value) {\n if (!value || typeof value !== 'string') return true; // validated elsewhere\n\n const byteSize = getByteSize(value);\n return byteSize <= 72;\n }\n )\n .matches(/[a-z]/, {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n })\n .matches(/[A-Z]/, {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n })\n .matches(/\\d/, {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Confirm password is required',\n })\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n })\n .nullable(),\n registrationToken: yup.string().required({\n id: translatedErrors.required.id,\n defaultMessage: 'Registration token is required',\n }),\n});\n\nconst REGISTER_ADMIN_SCHEMA = yup.object().shape({\n firstname: yup\n .string()\n .trim()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Firstname is required',\n })\n .nullable(),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n .test(\n 'max-bytes',\n {\n id: 'components.Input.error.contain.maxBytes',\n defaultMessage: 'Password must be less than 73 bytes',\n },\n function (value) {\n if (!value) return true;\n return new TextEncoder().encode(value).length <= 72;\n }\n )\n .matches(/[a-z]/, {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n })\n .matches(/[A-Z]/, {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n })\n .matches(/\\d/, {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Confirm password is required',\n })\n .nullable()\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n }),\n email: yup\n .string()\n .email({\n id: translatedErrors.email.id,\n defaultMessage: 'Not a valid email',\n })\n .strict()\n .lowercase({\n id: translatedErrors.lowercase.id,\n defaultMessage: 'Email must be lowercase',\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Email is required',\n })\n .nullable(),\n});\n\ninterface RegisterProps {\n hasAdmin?: boolean;\n}\n\ninterface RegisterFormValues {\n firstname: string;\n lastname: string;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n}\n\nconst Register = ({ hasAdmin }: RegisterProps) => {\n const { toggleNotification } = useNotification();\n const navigate = useNavigate();\n const [submitCount, setSubmitCount] = React.useState(0);\n const [apiError, setApiError] = React.useState<string>();\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const setSkipped = useGuidedTour('Register', (state) => state.setSkipped);\n const { search: searchString } = useLocation();\n const query = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const match = useMatch('/auth/:authType');\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const { setNpsSurveySettings } = useNpsSurveySettings();\n\n const registrationToken = query.get('registrationToken');\n\n const { data: userInfo, error } = useGetRegistrationInfoQuery(registrationToken as string, {\n skip: !registrationToken,\n });\n\n React.useEffect(() => {\n if (error) {\n const message: string = isBaseQueryError(error)\n ? formatAPIError(error)\n : (error.message ?? '');\n\n toggleNotification({\n type: 'danger',\n message,\n });\n\n navigate(`/auth/oops?info=${encodeURIComponent(message)}`);\n }\n }, [error, formatAPIError, navigate, toggleNotification]);\n\n const [registerAdmin] = useRegisterAdminMutation();\n const [registerUser] = useRegisterUserMutation();\n const dispatch = useTypedDispatch();\n\n const handleRegisterAdmin = async (\n { news, ...body }: RegisterAdmin.Request['body'] & { news: boolean },\n setFormErrors: FormHelpers<RegisterFormValues>['setErrors']\n ) => {\n const res = await registerAdmin(body);\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n\n const { roles } = res.data.user;\n\n if (roles) {\n const isUserSuperAdmin = roles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin) {\n localStorage.setItem('GUIDED_TOUR_SKIPPED', JSON.stringify(false));\n setSkipped(false);\n trackUsage('didLaunchGuidedtour');\n }\n }\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n navigate({\n pathname: '/usecase',\n search: `?hasAdmin=${true}`,\n });\n } else {\n navigate('/');\n }\n } else {\n if (isBaseQueryError(res.error)) {\n trackUsage('didNotCreateFirstAdmin');\n\n if (res.error.name === 'ValidationError') {\n setFormErrors(formatValidationErrors(res.error));\n return;\n }\n\n setApiError(formatAPIError(res.error));\n }\n }\n };\n\n const handleRegisterUser = async (\n { news, ...body }: RegisterUser.Request['body'] & { news: boolean },\n setFormErrors: FormHelpers<RegisterFormValues>['setErrors']\n ) => {\n const res = await registerUser(body);\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n navigate({\n pathname: '/usecase',\n search: `?hasAdmin=${hasAdmin}`,\n });\n } else {\n navigate('/');\n }\n } else {\n if (isBaseQueryError(res.error)) {\n trackUsage('didNotCreateFirstAdmin');\n\n if (res.error.name === 'ValidationError') {\n setFormErrors(formatValidationErrors(res.error));\n return;\n }\n\n setApiError(formatAPIError(res.error));\n }\n }\n };\n\n if (\n !match ||\n (match.params.authType !== 'register' && match.params.authType !== 'register-admin')\n ) {\n return <Navigate to=\"/\" />;\n }\n\n const isAdminRegistration = match.params.authType === 'register-admin';\n\n const schema = isAdminRegistration ? REGISTER_ADMIN_SCHEMA : REGISTER_USER_SCHEMA;\n\n return (\n <UnauthenticatedLayout>\n <LayoutContent>\n <Flex direction=\"column\" alignItems=\"center\" gap={3}>\n <Logo />\n\n <Typography tag=\"h1\" variant=\"alpha\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.welcome.title',\n defaultMessage: 'Welcome to Strapi!',\n })}\n </Typography>\n <Typography variant=\"epsilon\" textColor=\"neutral600\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.register.subtitle',\n defaultMessage:\n 'Credentials are only used to authenticate in Strapi. All saved data will be stored in your database.',\n })}\n </Typography>\n {apiError ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {apiError}\n </Typography>\n ) : null}\n </Flex>\n <Form\n method=\"POST\"\n initialValues={\n {\n firstname: userInfo?.firstname || '',\n lastname: userInfo?.lastname || '',\n email: userInfo?.email || '',\n password: '',\n confirmPassword: '',\n registrationToken: registrationToken || undefined,\n news: false,\n } satisfies RegisterFormValues\n }\n onSubmit={async (data, helpers) => {\n const normalizedData = normalizeData(data);\n\n try {\n await schema.validate(normalizedData, { abortEarly: false });\n\n if (submitCount > 0 && isAdminRegistration) {\n trackUsage('didSubmitWithErrorsFirstAdmin', { count: submitCount.toString() });\n }\n\n if (normalizedData.registrationToken) {\n handleRegisterUser(\n {\n userInfo: omit(normalizedData, [\n 'registrationToken',\n 'confirmPassword',\n 'email',\n 'news',\n ]),\n registrationToken: normalizedData.registrationToken,\n news: normalizedData.news,\n },\n helpers.setErrors\n );\n } else {\n await handleRegisterAdmin(\n omit(normalizedData, ['registrationToken', 'confirmPassword']),\n helpers.setErrors\n );\n }\n } catch (err) {\n if (err instanceof ValidationError) {\n helpers.setErrors(\n err.inner.reduce<Record<string, string>>((acc, { message, path }) => {\n if (path && typeof message === 'object') {\n acc[path] = formatMessage(message);\n }\n return acc;\n }, {})\n );\n }\n setSubmitCount(submitCount + 1);\n }\n }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} marginTop={7}>\n <Grid.Root gap={4}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'Firstname',\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: 'Lastname',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n disabled: !isAdminRegistration,\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 12,\n type: 'email' as const,\n },\n {\n hint: formatMessage({\n id: 'Auth.form.password.hint',\n defaultMessage:\n 'Must be at least 8 characters, 1 uppercase, 1 lowercase & 1 number',\n }),\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n required: true,\n size: 12,\n type: 'password' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n required: true,\n size: 12,\n type: 'password' as const,\n },\n {\n label: formatMessage(\n {\n id: 'Auth.form.register.news.label',\n defaultMessage:\n 'Keep me updated about new features & upcoming improvements (by doing this you accept the {terms} and the {policy}).',\n },\n {\n terms: (\n <A target=\"_blank\" href=\"https://strapi.io/terms\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.terms',\n defaultMessage: 'terms',\n })}\n </A>\n ),\n policy: (\n <A target=\"_blank\" href=\"https://strapi.io/privacy\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.policy',\n defaultMessage: 'policy',\n })}\n </A>\n ),\n }\n ),\n name: 'news',\n size: 12,\n type: 'checkbox' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item key={field.name} col={size} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n <Button fullWidth size=\"L\" type=\"submit\">\n {formatMessage({\n id: 'Auth.form.button.register',\n defaultMessage: \"Let's start\",\n })}\n </Button>\n </Flex>\n </Form>\n {match?.params.authType === 'register' && (\n <Box paddingTop={4}>\n <Flex justifyContent=\"center\">\n <Link tag={NavLink} to=\"/auth/login\">\n {formatMessage({\n id: 'Auth.link.signin.account',\n defaultMessage: 'Already have an account?',\n })}\n </Link>\n </Flex>\n </Box>\n )}\n </LayoutContent>\n </UnauthenticatedLayout>\n );\n};\n\ninterface RegisterFormValues {\n firstname: string;\n lastname: string;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n}\n\ntype StringKeys<T> = {\n [K in keyof T]: T[K] extends string | undefined ? K : never;\n}[keyof T];\n\n/**\n * @description Trims all values but the password & sets lastName to null if it's a falsey value.\n */\nfunction normalizeData(data: RegisterFormValues) {\n return Object.entries(data).reduce(\n (acc, [key, value]) => {\n type PasswordKeys = Extract<keyof RegisterFormValues, 'password' | 'confirmPassword'>;\n type RegisterFormStringValues = Exclude<\n keyof Pick<RegisterFormValues, StringKeys<RegisterFormValues>>,\n PasswordKeys\n >;\n\n if (!['password', 'confirmPassword'].includes(key) && typeof value === 'string') {\n acc[key as RegisterFormStringValues] = value.trim();\n\n if (key === 'lastname') {\n acc[key] = value || undefined;\n }\n } else {\n acc[key as PasswordKeys] = value;\n }\n\n return acc;\n },\n {} as {\n firstname: string;\n lastname: string | undefined;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n }\n );\n}\n\nconst A = styled.a`\n color: ${({ theme }) => theme.colors.primary600};\n`;\n\nexport { Register };\nexport type { RegisterProps };\n"],"names":["REGISTER_USER_SCHEMA","yup","object","shape","firstname","string","trim","required","translatedErrors","nullable","lastname","password","min","id","minLength","defaultMessage","values","test","value","byteSize","getByteSize","matches","message","confirmPassword","oneOf","ref","registrationToken","REGISTER_ADMIN_SCHEMA","TextEncoder","encode","length","email","strict","lowercase","Register","hasAdmin","toggleNotification","useNotification","navigate","useNavigate","submitCount","setSubmitCount","React","useState","apiError","setApiError","trackUsage","useTracking","formatMessage","useIntl","setSkipped","useGuidedTour","state","search","searchString","useLocation","query","useMemo","URLSearchParams","match","useMatch","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","setNpsSurveySettings","useNpsSurveySettings","get","data","userInfo","error","useGetRegistrationInfoQuery","skip","useEffect","isBaseQueryError","type","encodeURIComponent","registerAdmin","useRegisterAdminMutation","registerUser","useRegisterUserMutation","dispatch","useTypedDispatch","handleRegisterAdmin","news","body","setFormErrors","res","login","token","roles","user","isUserSuperAdmin","find","code","localStorage","setItem","JSON","stringify","s","enabled","pathname","name","handleRegisterUser","params","authType","_jsx","Navigate","to","isAdminRegistration","schema","UnauthenticatedLayout","_jsxs","LayoutContent","Flex","direction","alignItems","gap","Logo","Typography","tag","variant","textAlign","textColor","role","tabIndex","Form","method","initialValues","undefined","onSubmit","helpers","normalizedData","normalizeData","validate","abortEarly","count","toString","omit","setErrors","err","ValidationError","inner","reduce","acc","path","marginTop","Grid","Root","label","size","disabled","hint","terms","A","target","href","rel","policy","map","field","Item","col","InputRenderer","Button","fullWidth","Box","paddingTop","justifyContent","Link","NavLink","Object","entries","key","includes","styled","a","theme","colors","primary600"],"mappings":"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"}
|
|
@@ -111,7 +111,7 @@ const REGISTER_ADMIN_SCHEMA = yup.object().shape({
|
|
|
111
111
|
defaultMessage: 'Password is required'
|
|
112
112
|
}).nullable(),
|
|
113
113
|
confirmPassword: yup.string().required({
|
|
114
|
-
id: errorsTrads.required,
|
|
114
|
+
id: errorsTrads.required.id,
|
|
115
115
|
defaultMessage: 'Confirm password is required'
|
|
116
116
|
}).nullable().oneOf([
|
|
117
117
|
yup.ref('password'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Register.mjs","sources":["../../../../../../../admin/src/pages/Auth/components/Register.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Typography, Link } from '@strapi/design-system';\nimport omit from 'lodash/omit';\nimport { useIntl } from 'react-intl';\nimport { NavLink, Navigate, useNavigate, useMatch, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\nimport { ValidationError } from 'yup';\n\nimport {\n Register as RegisterUser,\n RegisterAdmin,\n} from '../../../../../shared/contracts/authentication';\nimport { Form, FormHelpers } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { useGuidedTour } from '../../../components/GuidedTour/Provider';\nimport { useNpsSurveySettings } from '../../../components/NpsSurvey';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { useTypedDispatch } from '../../../core/store/hooks';\nimport { useNotification } from '../../../features/Notifications';\nimport { useTracking } from '../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../hooks/useAPIErrorHandler';\nimport { LayoutContent, UnauthenticatedLayout } from '../../../layouts/UnauthenticatedLayout';\nimport { login } from '../../../reducer';\nimport {\n useGetRegistrationInfoQuery,\n useRegisterAdminMutation,\n useRegisterUserMutation,\n} from '../../../services/auth';\nimport { isBaseQueryError } from '../../../utils/baseQuery';\nimport { getByteSize } from '../../../utils/strings';\nimport { translatedErrors } from '../../../utils/translatedErrors';\n\nconst REGISTER_USER_SCHEMA = yup.object().shape({\n firstname: yup.string().trim().required(translatedErrors.required).nullable(),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n .test(\n 'max-bytes',\n {\n id: 'components.Input.error.contain.maxBytes',\n defaultMessage: 'Password must be less than 73 bytes',\n },\n function (value) {\n if (!value || typeof value !== 'string') return true; // validated elsewhere\n\n const byteSize = getByteSize(value);\n return byteSize <= 72;\n }\n )\n .matches(/[a-z]/, {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n })\n .matches(/[A-Z]/, {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n })\n .matches(/\\d/, {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Confirm password is required',\n })\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n })\n .nullable(),\n registrationToken: yup.string().required({\n id: translatedErrors.required.id,\n defaultMessage: 'Registration token is required',\n }),\n});\n\nconst REGISTER_ADMIN_SCHEMA = yup.object().shape({\n firstname: yup\n .string()\n .trim()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Firstname is required',\n })\n .nullable(),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n .test(\n 'max-bytes',\n {\n id: 'components.Input.error.contain.maxBytes',\n defaultMessage: 'Password must be less than 73 bytes',\n },\n function (value) {\n if (!value) return true;\n return new TextEncoder().encode(value).length <= 72;\n }\n )\n .matches(/[a-z]/, {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n })\n .matches(/[A-Z]/, {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n })\n .matches(/\\d/, {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required,\n defaultMessage: 'Confirm password is required',\n })\n .nullable()\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n }),\n email: yup\n .string()\n .email({\n id: translatedErrors.email.id,\n defaultMessage: 'Not a valid email',\n })\n .strict()\n .lowercase({\n id: translatedErrors.lowercase.id,\n defaultMessage: 'Email must be lowercase',\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Email is required',\n })\n .nullable(),\n});\n\ninterface RegisterProps {\n hasAdmin?: boolean;\n}\n\ninterface RegisterFormValues {\n firstname: string;\n lastname: string;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n}\n\nconst Register = ({ hasAdmin }: RegisterProps) => {\n const { toggleNotification } = useNotification();\n const navigate = useNavigate();\n const [submitCount, setSubmitCount] = React.useState(0);\n const [apiError, setApiError] = React.useState<string>();\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const setSkipped = useGuidedTour('Register', (state) => state.setSkipped);\n const { search: searchString } = useLocation();\n const query = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const match = useMatch('/auth/:authType');\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const { setNpsSurveySettings } = useNpsSurveySettings();\n\n const registrationToken = query.get('registrationToken');\n\n const { data: userInfo, error } = useGetRegistrationInfoQuery(registrationToken as string, {\n skip: !registrationToken,\n });\n\n React.useEffect(() => {\n if (error) {\n const message: string = isBaseQueryError(error)\n ? formatAPIError(error)\n : (error.message ?? '');\n\n toggleNotification({\n type: 'danger',\n message,\n });\n\n navigate(`/auth/oops?info=${encodeURIComponent(message)}`);\n }\n }, [error, formatAPIError, navigate, toggleNotification]);\n\n const [registerAdmin] = useRegisterAdminMutation();\n const [registerUser] = useRegisterUserMutation();\n const dispatch = useTypedDispatch();\n\n const handleRegisterAdmin = async (\n { news, ...body }: RegisterAdmin.Request['body'] & { news: boolean },\n setFormErrors: FormHelpers<RegisterFormValues>['setErrors']\n ) => {\n const res = await registerAdmin(body);\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n\n const { roles } = res.data.user;\n\n if (roles) {\n const isUserSuperAdmin = roles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin) {\n localStorage.setItem('GUIDED_TOUR_SKIPPED', JSON.stringify(false));\n setSkipped(false);\n trackUsage('didLaunchGuidedtour');\n }\n }\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n navigate({\n pathname: '/usecase',\n search: `?hasAdmin=${true}`,\n });\n } else {\n navigate('/');\n }\n } else {\n if (isBaseQueryError(res.error)) {\n trackUsage('didNotCreateFirstAdmin');\n\n if (res.error.name === 'ValidationError') {\n setFormErrors(formatValidationErrors(res.error));\n return;\n }\n\n setApiError(formatAPIError(res.error));\n }\n }\n };\n\n const handleRegisterUser = async (\n { news, ...body }: RegisterUser.Request['body'] & { news: boolean },\n setFormErrors: FormHelpers<RegisterFormValues>['setErrors']\n ) => {\n const res = await registerUser(body);\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n navigate({\n pathname: '/usecase',\n search: `?hasAdmin=${hasAdmin}`,\n });\n } else {\n navigate('/');\n }\n } else {\n if (isBaseQueryError(res.error)) {\n trackUsage('didNotCreateFirstAdmin');\n\n if (res.error.name === 'ValidationError') {\n setFormErrors(formatValidationErrors(res.error));\n return;\n }\n\n setApiError(formatAPIError(res.error));\n }\n }\n };\n\n if (\n !match ||\n (match.params.authType !== 'register' && match.params.authType !== 'register-admin')\n ) {\n return <Navigate to=\"/\" />;\n }\n\n const isAdminRegistration = match.params.authType === 'register-admin';\n\n const schema = isAdminRegistration ? REGISTER_ADMIN_SCHEMA : REGISTER_USER_SCHEMA;\n\n return (\n <UnauthenticatedLayout>\n <LayoutContent>\n <Flex direction=\"column\" alignItems=\"center\" gap={3}>\n <Logo />\n\n <Typography tag=\"h1\" variant=\"alpha\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.welcome.title',\n defaultMessage: 'Welcome to Strapi!',\n })}\n </Typography>\n <Typography variant=\"epsilon\" textColor=\"neutral600\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.register.subtitle',\n defaultMessage:\n 'Credentials are only used to authenticate in Strapi. All saved data will be stored in your database.',\n })}\n </Typography>\n {apiError ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {apiError}\n </Typography>\n ) : null}\n </Flex>\n <Form\n method=\"POST\"\n initialValues={\n {\n firstname: userInfo?.firstname || '',\n lastname: userInfo?.lastname || '',\n email: userInfo?.email || '',\n password: '',\n confirmPassword: '',\n registrationToken: registrationToken || undefined,\n news: false,\n } satisfies RegisterFormValues\n }\n onSubmit={async (data, helpers) => {\n const normalizedData = normalizeData(data);\n\n try {\n await schema.validate(normalizedData, { abortEarly: false });\n\n if (submitCount > 0 && isAdminRegistration) {\n trackUsage('didSubmitWithErrorsFirstAdmin', { count: submitCount.toString() });\n }\n\n if (normalizedData.registrationToken) {\n handleRegisterUser(\n {\n userInfo: omit(normalizedData, [\n 'registrationToken',\n 'confirmPassword',\n 'email',\n 'news',\n ]),\n registrationToken: normalizedData.registrationToken,\n news: normalizedData.news,\n },\n helpers.setErrors\n );\n } else {\n await handleRegisterAdmin(\n omit(normalizedData, ['registrationToken', 'confirmPassword']),\n helpers.setErrors\n );\n }\n } catch (err) {\n if (err instanceof ValidationError) {\n helpers.setErrors(\n err.inner.reduce<Record<string, string>>((acc, { message, path }) => {\n if (path && typeof message === 'object') {\n acc[path] = formatMessage(message);\n }\n return acc;\n }, {})\n );\n }\n setSubmitCount(submitCount + 1);\n }\n }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} marginTop={7}>\n <Grid.Root gap={4}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'Firstname',\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: 'Lastname',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n disabled: !isAdminRegistration,\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 12,\n type: 'email' as const,\n },\n {\n hint: formatMessage({\n id: 'Auth.form.password.hint',\n defaultMessage:\n 'Must be at least 8 characters, 1 uppercase, 1 lowercase & 1 number',\n }),\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n required: true,\n size: 12,\n type: 'password' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n required: true,\n size: 12,\n type: 'password' as const,\n },\n {\n label: formatMessage(\n {\n id: 'Auth.form.register.news.label',\n defaultMessage:\n 'Keep me updated about new features & upcoming improvements (by doing this you accept the {terms} and the {policy}).',\n },\n {\n terms: (\n <A target=\"_blank\" href=\"https://strapi.io/terms\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.terms',\n defaultMessage: 'terms',\n })}\n </A>\n ),\n policy: (\n <A target=\"_blank\" href=\"https://strapi.io/privacy\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.policy',\n defaultMessage: 'policy',\n })}\n </A>\n ),\n }\n ),\n name: 'news',\n size: 12,\n type: 'checkbox' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item key={field.name} col={size} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n <Button fullWidth size=\"L\" type=\"submit\">\n {formatMessage({\n id: 'Auth.form.button.register',\n defaultMessage: \"Let's start\",\n })}\n </Button>\n </Flex>\n </Form>\n {match?.params.authType === 'register' && (\n <Box paddingTop={4}>\n <Flex justifyContent=\"center\">\n <Link tag={NavLink} to=\"/auth/login\">\n {formatMessage({\n id: 'Auth.link.signin.account',\n defaultMessage: 'Already have an account?',\n })}\n </Link>\n </Flex>\n </Box>\n )}\n </LayoutContent>\n </UnauthenticatedLayout>\n );\n};\n\ninterface RegisterFormValues {\n firstname: string;\n lastname: string;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n}\n\ntype StringKeys<T> = {\n [K in keyof T]: T[K] extends string | undefined ? K : never;\n}[keyof T];\n\n/**\n * @description Trims all values but the password & sets lastName to null if it's a falsey value.\n */\nfunction normalizeData(data: RegisterFormValues) {\n return Object.entries(data).reduce(\n (acc, [key, value]) => {\n type PasswordKeys = Extract<keyof RegisterFormValues, 'password' | 'confirmPassword'>;\n type RegisterFormStringValues = Exclude<\n keyof Pick<RegisterFormValues, StringKeys<RegisterFormValues>>,\n PasswordKeys\n >;\n\n if (!['password', 'confirmPassword'].includes(key) && typeof value === 'string') {\n acc[key as RegisterFormStringValues] = value.trim();\n\n if (key === 'lastname') {\n acc[key] = value || undefined;\n }\n } else {\n acc[key as PasswordKeys] = value;\n }\n\n return acc;\n },\n {} as {\n firstname: string;\n lastname: string | undefined;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n }\n );\n}\n\nconst A = styled.a`\n color: ${({ theme }) => theme.colors.primary600};\n`;\n\nexport { Register };\nexport type { RegisterProps };\n"],"names":["REGISTER_USER_SCHEMA","yup","object","shape","firstname","string","trim","required","translatedErrors","nullable","lastname","password","min","id","minLength","defaultMessage","values","test","value","byteSize","getByteSize","matches","message","confirmPassword","oneOf","ref","registrationToken","REGISTER_ADMIN_SCHEMA","TextEncoder","encode","length","email","strict","lowercase","Register","hasAdmin","toggleNotification","useNotification","navigate","useNavigate","submitCount","setSubmitCount","React","useState","apiError","setApiError","trackUsage","useTracking","formatMessage","useIntl","setSkipped","useGuidedTour","state","search","searchString","useLocation","query","useMemo","URLSearchParams","match","useMatch","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","setNpsSurveySettings","useNpsSurveySettings","get","data","userInfo","error","useGetRegistrationInfoQuery","skip","useEffect","isBaseQueryError","type","encodeURIComponent","registerAdmin","useRegisterAdminMutation","registerUser","useRegisterUserMutation","dispatch","useTypedDispatch","handleRegisterAdmin","news","body","setFormErrors","res","login","token","roles","user","isUserSuperAdmin","find","code","localStorage","setItem","JSON","stringify","s","enabled","pathname","name","handleRegisterUser","params","authType","_jsx","Navigate","to","isAdminRegistration","schema","UnauthenticatedLayout","_jsxs","LayoutContent","Flex","direction","alignItems","gap","Logo","Typography","tag","variant","textAlign","textColor","role","tabIndex","Form","method","initialValues","undefined","onSubmit","helpers","normalizedData","normalizeData","validate","abortEarly","count","toString","omit","setErrors","err","ValidationError","inner","reduce","acc","path","marginTop","Grid","Root","label","size","disabled","hint","terms","A","target","href","rel","policy","map","field","Item","col","InputRenderer","Button","fullWidth","Box","paddingTop","justifyContent","Link","NavLink","Object","entries","key","includes","styled","a","theme","colors","primary600"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Register.mjs","sources":["../../../../../../../admin/src/pages/Auth/components/Register.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Typography, Link } from '@strapi/design-system';\nimport omit from 'lodash/omit';\nimport { useIntl } from 'react-intl';\nimport { NavLink, Navigate, useNavigate, useMatch, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\nimport { ValidationError } from 'yup';\n\nimport {\n Register as RegisterUser,\n RegisterAdmin,\n} from '../../../../../shared/contracts/authentication';\nimport { Form, FormHelpers } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { useGuidedTour } from '../../../components/GuidedTour/Provider';\nimport { useNpsSurveySettings } from '../../../components/NpsSurvey';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { useTypedDispatch } from '../../../core/store/hooks';\nimport { useNotification } from '../../../features/Notifications';\nimport { useTracking } from '../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../hooks/useAPIErrorHandler';\nimport { LayoutContent, UnauthenticatedLayout } from '../../../layouts/UnauthenticatedLayout';\nimport { login } from '../../../reducer';\nimport {\n useGetRegistrationInfoQuery,\n useRegisterAdminMutation,\n useRegisterUserMutation,\n} from '../../../services/auth';\nimport { isBaseQueryError } from '../../../utils/baseQuery';\nimport { getByteSize } from '../../../utils/strings';\nimport { translatedErrors } from '../../../utils/translatedErrors';\n\nconst REGISTER_USER_SCHEMA = yup.object().shape({\n firstname: yup.string().trim().required(translatedErrors.required).nullable(),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n .test(\n 'max-bytes',\n {\n id: 'components.Input.error.contain.maxBytes',\n defaultMessage: 'Password must be less than 73 bytes',\n },\n function (value) {\n if (!value || typeof value !== 'string') return true; // validated elsewhere\n\n const byteSize = getByteSize(value);\n return byteSize <= 72;\n }\n )\n .matches(/[a-z]/, {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n })\n .matches(/[A-Z]/, {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n })\n .matches(/\\d/, {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Confirm password is required',\n })\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n })\n .nullable(),\n registrationToken: yup.string().required({\n id: translatedErrors.required.id,\n defaultMessage: 'Registration token is required',\n }),\n});\n\nconst REGISTER_ADMIN_SCHEMA = yup.object().shape({\n firstname: yup\n .string()\n .trim()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Firstname is required',\n })\n .nullable(),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n .test(\n 'max-bytes',\n {\n id: 'components.Input.error.contain.maxBytes',\n defaultMessage: 'Password must be less than 73 bytes',\n },\n function (value) {\n if (!value) return true;\n return new TextEncoder().encode(value).length <= 72;\n }\n )\n .matches(/[a-z]/, {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n })\n .matches(/[A-Z]/, {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n })\n .matches(/\\d/, {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Confirm password is required',\n })\n .nullable()\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n }),\n email: yup\n .string()\n .email({\n id: translatedErrors.email.id,\n defaultMessage: 'Not a valid email',\n })\n .strict()\n .lowercase({\n id: translatedErrors.lowercase.id,\n defaultMessage: 'Email must be lowercase',\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Email is required',\n })\n .nullable(),\n});\n\ninterface RegisterProps {\n hasAdmin?: boolean;\n}\n\ninterface RegisterFormValues {\n firstname: string;\n lastname: string;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n}\n\nconst Register = ({ hasAdmin }: RegisterProps) => {\n const { toggleNotification } = useNotification();\n const navigate = useNavigate();\n const [submitCount, setSubmitCount] = React.useState(0);\n const [apiError, setApiError] = React.useState<string>();\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const setSkipped = useGuidedTour('Register', (state) => state.setSkipped);\n const { search: searchString } = useLocation();\n const query = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const match = useMatch('/auth/:authType');\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const { setNpsSurveySettings } = useNpsSurveySettings();\n\n const registrationToken = query.get('registrationToken');\n\n const { data: userInfo, error } = useGetRegistrationInfoQuery(registrationToken as string, {\n skip: !registrationToken,\n });\n\n React.useEffect(() => {\n if (error) {\n const message: string = isBaseQueryError(error)\n ? formatAPIError(error)\n : (error.message ?? '');\n\n toggleNotification({\n type: 'danger',\n message,\n });\n\n navigate(`/auth/oops?info=${encodeURIComponent(message)}`);\n }\n }, [error, formatAPIError, navigate, toggleNotification]);\n\n const [registerAdmin] = useRegisterAdminMutation();\n const [registerUser] = useRegisterUserMutation();\n const dispatch = useTypedDispatch();\n\n const handleRegisterAdmin = async (\n { news, ...body }: RegisterAdmin.Request['body'] & { news: boolean },\n setFormErrors: FormHelpers<RegisterFormValues>['setErrors']\n ) => {\n const res = await registerAdmin(body);\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n\n const { roles } = res.data.user;\n\n if (roles) {\n const isUserSuperAdmin = roles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin) {\n localStorage.setItem('GUIDED_TOUR_SKIPPED', JSON.stringify(false));\n setSkipped(false);\n trackUsage('didLaunchGuidedtour');\n }\n }\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n navigate({\n pathname: '/usecase',\n search: `?hasAdmin=${true}`,\n });\n } else {\n navigate('/');\n }\n } else {\n if (isBaseQueryError(res.error)) {\n trackUsage('didNotCreateFirstAdmin');\n\n if (res.error.name === 'ValidationError') {\n setFormErrors(formatValidationErrors(res.error));\n return;\n }\n\n setApiError(formatAPIError(res.error));\n }\n }\n };\n\n const handleRegisterUser = async (\n { news, ...body }: RegisterUser.Request['body'] & { news: boolean },\n setFormErrors: FormHelpers<RegisterFormValues>['setErrors']\n ) => {\n const res = await registerUser(body);\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n navigate({\n pathname: '/usecase',\n search: `?hasAdmin=${hasAdmin}`,\n });\n } else {\n navigate('/');\n }\n } else {\n if (isBaseQueryError(res.error)) {\n trackUsage('didNotCreateFirstAdmin');\n\n if (res.error.name === 'ValidationError') {\n setFormErrors(formatValidationErrors(res.error));\n return;\n }\n\n setApiError(formatAPIError(res.error));\n }\n }\n };\n\n if (\n !match ||\n (match.params.authType !== 'register' && match.params.authType !== 'register-admin')\n ) {\n return <Navigate to=\"/\" />;\n }\n\n const isAdminRegistration = match.params.authType === 'register-admin';\n\n const schema = isAdminRegistration ? REGISTER_ADMIN_SCHEMA : REGISTER_USER_SCHEMA;\n\n return (\n <UnauthenticatedLayout>\n <LayoutContent>\n <Flex direction=\"column\" alignItems=\"center\" gap={3}>\n <Logo />\n\n <Typography tag=\"h1\" variant=\"alpha\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.welcome.title',\n defaultMessage: 'Welcome to Strapi!',\n })}\n </Typography>\n <Typography variant=\"epsilon\" textColor=\"neutral600\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.register.subtitle',\n defaultMessage:\n 'Credentials are only used to authenticate in Strapi. All saved data will be stored in your database.',\n })}\n </Typography>\n {apiError ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {apiError}\n </Typography>\n ) : null}\n </Flex>\n <Form\n method=\"POST\"\n initialValues={\n {\n firstname: userInfo?.firstname || '',\n lastname: userInfo?.lastname || '',\n email: userInfo?.email || '',\n password: '',\n confirmPassword: '',\n registrationToken: registrationToken || undefined,\n news: false,\n } satisfies RegisterFormValues\n }\n onSubmit={async (data, helpers) => {\n const normalizedData = normalizeData(data);\n\n try {\n await schema.validate(normalizedData, { abortEarly: false });\n\n if (submitCount > 0 && isAdminRegistration) {\n trackUsage('didSubmitWithErrorsFirstAdmin', { count: submitCount.toString() });\n }\n\n if (normalizedData.registrationToken) {\n handleRegisterUser(\n {\n userInfo: omit(normalizedData, [\n 'registrationToken',\n 'confirmPassword',\n 'email',\n 'news',\n ]),\n registrationToken: normalizedData.registrationToken,\n news: normalizedData.news,\n },\n helpers.setErrors\n );\n } else {\n await handleRegisterAdmin(\n omit(normalizedData, ['registrationToken', 'confirmPassword']),\n helpers.setErrors\n );\n }\n } catch (err) {\n if (err instanceof ValidationError) {\n helpers.setErrors(\n err.inner.reduce<Record<string, string>>((acc, { message, path }) => {\n if (path && typeof message === 'object') {\n acc[path] = formatMessage(message);\n }\n return acc;\n }, {})\n );\n }\n setSubmitCount(submitCount + 1);\n }\n }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} marginTop={7}>\n <Grid.Root gap={4}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'Firstname',\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: 'Lastname',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n disabled: !isAdminRegistration,\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 12,\n type: 'email' as const,\n },\n {\n hint: formatMessage({\n id: 'Auth.form.password.hint',\n defaultMessage:\n 'Must be at least 8 characters, 1 uppercase, 1 lowercase & 1 number',\n }),\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n required: true,\n size: 12,\n type: 'password' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n required: true,\n size: 12,\n type: 'password' as const,\n },\n {\n label: formatMessage(\n {\n id: 'Auth.form.register.news.label',\n defaultMessage:\n 'Keep me updated about new features & upcoming improvements (by doing this you accept the {terms} and the {policy}).',\n },\n {\n terms: (\n <A target=\"_blank\" href=\"https://strapi.io/terms\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.terms',\n defaultMessage: 'terms',\n })}\n </A>\n ),\n policy: (\n <A target=\"_blank\" href=\"https://strapi.io/privacy\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.policy',\n defaultMessage: 'policy',\n })}\n </A>\n ),\n }\n ),\n name: 'news',\n size: 12,\n type: 'checkbox' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item key={field.name} col={size} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n <Button fullWidth size=\"L\" type=\"submit\">\n {formatMessage({\n id: 'Auth.form.button.register',\n defaultMessage: \"Let's start\",\n })}\n </Button>\n </Flex>\n </Form>\n {match?.params.authType === 'register' && (\n <Box paddingTop={4}>\n <Flex justifyContent=\"center\">\n <Link tag={NavLink} to=\"/auth/login\">\n {formatMessage({\n id: 'Auth.link.signin.account',\n defaultMessage: 'Already have an account?',\n })}\n </Link>\n </Flex>\n </Box>\n )}\n </LayoutContent>\n </UnauthenticatedLayout>\n );\n};\n\ninterface RegisterFormValues {\n firstname: string;\n lastname: string;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n}\n\ntype StringKeys<T> = {\n [K in keyof T]: T[K] extends string | undefined ? K : never;\n}[keyof T];\n\n/**\n * @description Trims all values but the password & sets lastName to null if it's a falsey value.\n */\nfunction normalizeData(data: RegisterFormValues) {\n return Object.entries(data).reduce(\n (acc, [key, value]) => {\n type PasswordKeys = Extract<keyof RegisterFormValues, 'password' | 'confirmPassword'>;\n type RegisterFormStringValues = Exclude<\n keyof Pick<RegisterFormValues, StringKeys<RegisterFormValues>>,\n PasswordKeys\n >;\n\n if (!['password', 'confirmPassword'].includes(key) && typeof value === 'string') {\n acc[key as RegisterFormStringValues] = value.trim();\n\n if (key === 'lastname') {\n acc[key] = value || undefined;\n }\n } else {\n acc[key as PasswordKeys] = value;\n }\n\n return acc;\n },\n {} as {\n firstname: string;\n lastname: string | undefined;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n }\n );\n}\n\nconst A = styled.a`\n color: ${({ theme }) => theme.colors.primary600};\n`;\n\nexport { Register };\nexport type { RegisterProps };\n"],"names":["REGISTER_USER_SCHEMA","yup","object","shape","firstname","string","trim","required","translatedErrors","nullable","lastname","password","min","id","minLength","defaultMessage","values","test","value","byteSize","getByteSize","matches","message","confirmPassword","oneOf","ref","registrationToken","REGISTER_ADMIN_SCHEMA","TextEncoder","encode","length","email","strict","lowercase","Register","hasAdmin","toggleNotification","useNotification","navigate","useNavigate","submitCount","setSubmitCount","React","useState","apiError","setApiError","trackUsage","useTracking","formatMessage","useIntl","setSkipped","useGuidedTour","state","search","searchString","useLocation","query","useMemo","URLSearchParams","match","useMatch","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","setNpsSurveySettings","useNpsSurveySettings","get","data","userInfo","error","useGetRegistrationInfoQuery","skip","useEffect","isBaseQueryError","type","encodeURIComponent","registerAdmin","useRegisterAdminMutation","registerUser","useRegisterUserMutation","dispatch","useTypedDispatch","handleRegisterAdmin","news","body","setFormErrors","res","login","token","roles","user","isUserSuperAdmin","find","code","localStorage","setItem","JSON","stringify","s","enabled","pathname","name","handleRegisterUser","params","authType","_jsx","Navigate","to","isAdminRegistration","schema","UnauthenticatedLayout","_jsxs","LayoutContent","Flex","direction","alignItems","gap","Logo","Typography","tag","variant","textAlign","textColor","role","tabIndex","Form","method","initialValues","undefined","onSubmit","helpers","normalizedData","normalizeData","validate","abortEarly","count","toString","omit","setErrors","err","ValidationError","inner","reduce","acc","path","marginTop","Grid","Root","label","size","disabled","hint","terms","A","target","href","rel","policy","map","field","Item","col","InputRenderer","Button","fullWidth","Box","paddingTop","justifyContent","Link","NavLink","Object","entries","key","includes","styled","a","theme","colors","primary600"],"mappings":"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"}
|
|
@@ -13,7 +13,6 @@ require('../../services/admin.js');
|
|
|
13
13
|
var useEnterprise = require('../../hooks/useEnterprise.js');
|
|
14
14
|
var Auth = require('../../features/Auth.js');
|
|
15
15
|
var StrapiApp = require('../../features/StrapiApp.js');
|
|
16
|
-
var ContentManagerWidgets = require('./components/ContentManagerWidgets.js');
|
|
17
16
|
var GuidedTour = require('./components/GuidedTour.js');
|
|
18
17
|
|
|
19
18
|
function _interopNamespaceDefault(e) {
|
|
@@ -47,8 +46,7 @@ const WidgetRoot = ({ title, icon = icons.PuzzlePiece, permissions = [], childre
|
|
|
47
46
|
const shouldGrant = matchingPermissions.length >= permissions.length;
|
|
48
47
|
setPermissionStatus(shouldGrant ? 'granted' : 'forbidden');
|
|
49
48
|
};
|
|
50
|
-
if (
|
|
51
|
-
!window.strapi.future.isEnabled('unstableWidgetsApi') || !permissions || permissions.length === 0) {
|
|
49
|
+
if (!permissions || permissions.length === 0) {
|
|
52
50
|
setPermissionStatus('granted');
|
|
53
51
|
} else {
|
|
54
52
|
checkPermissions();
|
|
@@ -138,7 +136,9 @@ const WidgetRoot = ({ title, icon = icons.PuzzlePiece, permissions = [], childre
|
|
|
138
136
|
}
|
|
139
137
|
return /*#__PURE__*/ jsxRuntime.jsx(Component, {});
|
|
140
138
|
};
|
|
141
|
-
|
|
139
|
+
/* -------------------------------------------------------------------------------------------------
|
|
140
|
+
* HomePageCE
|
|
141
|
+
* -----------------------------------------------------------------------------------------------*/ const HomePageCE = ()=>{
|
|
142
142
|
const { formatMessage } = reactIntl.useIntl();
|
|
143
143
|
const user = Auth.useAuth('HomePageCE', (state)=>state.user);
|
|
144
144
|
const displayName = user?.firstname ?? user?.username ?? user?.email;
|
|
@@ -195,78 +195,6 @@ const UnstableHomePageCe = ()=>{
|
|
|
195
195
|
]
|
|
196
196
|
});
|
|
197
197
|
};
|
|
198
|
-
/* -------------------------------------------------------------------------------------------------
|
|
199
|
-
* HomePageCE
|
|
200
|
-
* -----------------------------------------------------------------------------------------------*/ const HomePageCE = ()=>{
|
|
201
|
-
const { formatMessage } = reactIntl.useIntl();
|
|
202
|
-
const user = Auth.useAuth('HomePageCE', (state)=>state.user);
|
|
203
|
-
const displayName = user?.firstname ?? user?.username ?? user?.email;
|
|
204
|
-
if (window.strapi.future.isEnabled('unstableWidgetsApi')) {
|
|
205
|
-
return /*#__PURE__*/ jsxRuntime.jsx(UnstableHomePageCe, {});
|
|
206
|
-
}
|
|
207
|
-
return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Main, {
|
|
208
|
-
children: [
|
|
209
|
-
/*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.Title, {
|
|
210
|
-
children: formatMessage({
|
|
211
|
-
id: 'HomePage.head.title',
|
|
212
|
-
defaultMessage: 'Homepage'
|
|
213
|
-
})
|
|
214
|
-
}),
|
|
215
|
-
/*#__PURE__*/ jsxRuntime.jsx(Layout.Layouts.Header, {
|
|
216
|
-
title: formatMessage({
|
|
217
|
-
id: 'HomePage.header.title',
|
|
218
|
-
defaultMessage: 'Hello {name}'
|
|
219
|
-
}, {
|
|
220
|
-
name: displayName
|
|
221
|
-
}),
|
|
222
|
-
subtitle: formatMessage({
|
|
223
|
-
id: 'HomePage.header.subtitle',
|
|
224
|
-
defaultMessage: 'Welcome to your administration panel'
|
|
225
|
-
})
|
|
226
|
-
}),
|
|
227
|
-
/*#__PURE__*/ jsxRuntime.jsx(Layout.Layouts.Content, {
|
|
228
|
-
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
229
|
-
direction: "column",
|
|
230
|
-
alignItems: "stretch",
|
|
231
|
-
gap: 8,
|
|
232
|
-
paddingBottom: 10,
|
|
233
|
-
children: [
|
|
234
|
-
/*#__PURE__*/ jsxRuntime.jsx(GuidedTour.GuidedTour, {}),
|
|
235
|
-
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Grid.Root, {
|
|
236
|
-
gap: 5,
|
|
237
|
-
children: [
|
|
238
|
-
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
|
|
239
|
-
col: 6,
|
|
240
|
-
s: 12,
|
|
241
|
-
children: /*#__PURE__*/ jsxRuntime.jsx(WidgetRoot, {
|
|
242
|
-
title: {
|
|
243
|
-
id: 'content-manager.widget.last-edited.title',
|
|
244
|
-
defaultMessage: 'Last edited entries'
|
|
245
|
-
},
|
|
246
|
-
icon: icons.Pencil,
|
|
247
|
-
children: /*#__PURE__*/ jsxRuntime.jsx(ContentManagerWidgets.LastEditedWidget, {})
|
|
248
|
-
})
|
|
249
|
-
}),
|
|
250
|
-
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
|
|
251
|
-
col: 6,
|
|
252
|
-
s: 12,
|
|
253
|
-
children: /*#__PURE__*/ jsxRuntime.jsx(WidgetRoot, {
|
|
254
|
-
title: {
|
|
255
|
-
id: 'content-manager.widget.last-published.title',
|
|
256
|
-
defaultMessage: 'Last published entries'
|
|
257
|
-
},
|
|
258
|
-
icon: icons.CheckCircle,
|
|
259
|
-
children: /*#__PURE__*/ jsxRuntime.jsx(ContentManagerWidgets.LastPublishedWidget, {})
|
|
260
|
-
})
|
|
261
|
-
})
|
|
262
|
-
]
|
|
263
|
-
})
|
|
264
|
-
]
|
|
265
|
-
})
|
|
266
|
-
})
|
|
267
|
-
]
|
|
268
|
-
});
|
|
269
|
-
};
|
|
270
198
|
/* -------------------------------------------------------------------------------------------------
|
|
271
199
|
* HomePage
|
|
272
200
|
* -----------------------------------------------------------------------------------------------*/ const HomePage = ()=>{
|