@verdaccio/ui-components 5.0.0-next-9.8 → 5.0.0-next-9.10
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/build/Theme/ResetStyles.d.ts +1 -1
- package/build/Theme/StyleBaseline.d.ts +1 -2
- package/build/Theme/ThemeProvider.d.ts +1 -1
- package/build/Theme/modes.d.ts +13 -1
- package/build/Theme/modes.js +18 -3
- package/build/Theme/modes.js.map +1 -1
- package/build/Theme/modes.mjs +16 -2
- package/build/Theme/modes.mjs.map +1 -1
- package/build/Theme/theme.d.ts +27 -3
- package/build/Theme/theme.js.map +1 -1
- package/build/Theme/theme.mjs.map +1 -1
- package/build/api/use-data-mutation.d.ts +3 -3
- package/build/api/use-data.d.ts +2 -2
- package/build/components/ActionBar/ActionBar.d.ts +1 -1
- package/build/components/ActionBar/ActionBarAction.d.ts +7 -2
- package/build/components/ActionBar/ActionBarAction.mjs +2 -2
- package/build/components/ActionBar/ActionBarAction.mjs.map +1 -1
- package/build/components/AppRoute/AppRoute.d.ts +1 -1
- package/build/components/AppRoute/AppRoute.js +54 -47
- package/build/components/AppRoute/AppRoute.js.map +1 -1
- package/build/components/AppRoute/AppRoute.mjs +54 -47
- package/build/components/AppRoute/AppRoute.mjs.map +1 -1
- package/build/components/Author/Author.d.ts +1 -1
- package/build/components/Author/styles.d.ts +9 -2
- package/build/components/CopyClipboard/CopyToClipBoard.d.ts +1 -1
- package/build/components/CopyClipboard/utils.d.ts +1 -1
- package/build/components/Dependencies/Dependencies.d.ts +1 -1
- package/build/components/Dependencies/DependencyBlock.d.ts +15 -7
- package/build/components/Dependencies/DependencyBlock.mjs +2 -2
- package/build/components/Dependencies/DependencyBlock.mjs.map +1 -1
- package/build/components/Dependencies/index.js +1 -1
- package/build/components/Dependencies/types.d.ts +1 -1
- package/build/components/Deprecated/Deprecated.d.ts +1 -1
- package/build/components/Developers/Developers.d.ts +8 -3
- package/build/components/Developers/Title.d.ts +1 -1
- package/build/components/Developers/Title.mjs +2 -2
- package/build/components/Developers/Title.mjs.map +1 -1
- package/build/components/Developers/get-unique-developer-values.d.ts +1 -1
- package/build/components/Distribution/Dist.d.ts +2 -2
- package/build/components/Distribution/styles.d.ts +12 -3
- package/build/components/Distribution/styles.mjs +2 -2
- package/build/components/Distribution/styles.mjs.map +1 -1
- package/build/components/Engines/Engines.d.ts +2 -2
- package/build/components/Engines/styles.d.ts +9 -2
- package/build/components/Engines/styles.mjs +2 -2
- package/build/components/Engines/styles.mjs.map +1 -1
- package/build/components/ErrorBoundary/ErrorBoundary.d.ts +1 -2
- package/build/components/Forbidden/Forbidden.d.ts +1 -1
- package/build/components/FundButton/FundButton.d.ts +1 -1
- package/build/components/FundButton/FundButton.js +1 -1
- package/build/components/FundButton/FundButton.js.map +1 -1
- package/build/components/FundButton/FundButton.mjs +1 -1
- package/build/components/FundButton/FundButton.mjs.map +1 -1
- package/build/components/HeaderInfoDialog/HeaderInfoDialog.d.ts +1 -1
- package/build/components/Heading/Heading.d.ts +2 -2
- package/build/components/Heading/Heading.mjs +2 -2
- package/build/components/Heading/Heading.mjs.map +1 -1
- package/build/components/Help/Help.d.ts +1 -1
- package/build/components/Help/Help.mjs +3 -3
- package/build/components/Help/Help.mjs.map +1 -1
- package/build/components/Help/styles.d.ts +3 -1
- package/build/components/Icons/DevsIcons/CommonJS.d.ts +1 -1
- package/build/components/Icons/DevsIcons/ES6Module.d.ts +1 -1
- package/build/components/Icons/DevsIcons/Git.d.ts +1 -1
- package/build/components/Icons/DevsIcons/NodeJS.d.ts +1 -1
- package/build/components/Icons/DevsIcons/TypeScript.d.ts +1 -1
- package/build/components/Icons/DevsIcons/commonjs.svg +4 -0
- package/build/components/Icons/DevsIcons/es6module.svg +4 -0
- package/build/components/Icons/DevsIcons/git.svg +4 -0
- package/build/components/Icons/DevsIcons/nodejs.svg +6 -0
- package/build/components/Icons/DevsIcons/typescript.svg +4 -0
- package/build/components/Icons/Earth.d.ts +1 -1
- package/build/components/Icons/FileBinary.d.ts +1 -1
- package/build/components/Icons/Law.d.ts +1 -1
- package/build/components/Icons/License.d.ts +1 -1
- package/build/components/Icons/Managers/Npm.d.ts +1 -1
- package/build/components/Icons/Managers/Pnpm.d.ts +1 -1
- package/build/components/Icons/Managers/Yarn.d.ts +1 -1
- package/build/components/Icons/Managers/npm.svg +15 -0
- package/build/components/Icons/Managers/pnpm.svg +1 -0
- package/build/components/Icons/Managers/yarn.svg +1 -0
- package/build/components/Icons/SvgIcon.d.ts +2 -2
- package/build/components/Icons/Time.d.ts +1 -1
- package/build/components/Icons/Version.d.ts +1 -1
- package/build/components/Install/Install.d.ts +3 -3
- package/build/components/Install/InstallListItem.d.ts +1 -1
- package/build/components/Keywords/KeywordListItems.d.ts +1 -1
- package/build/components/Keywords/Keywords.d.ts +2 -2
- package/build/components/Keywords/Keywords.mjs +2 -2
- package/build/components/Keywords/Keywords.mjs.map +1 -1
- package/build/components/Label/Label.d.ts +2 -2
- package/build/components/Link/Link.d.ts +1 -1
- package/build/components/Link/Link.mjs +2 -2
- package/build/components/Link/Link.mjs.map +1 -1
- package/build/components/LinkExternal/LinkExternal.d.ts +1 -1
- package/build/components/Loading/Loading.d.ts +1 -1
- package/build/components/Loading/Spinner/Spinner.d.ts +1 -1
- package/build/components/Loading/styles.d.ts +7 -7
- package/build/components/LoginDialog/LoginDialog.d.ts +1 -1
- package/build/components/LoginDialog/LoginDialogCloseButton.d.ts +1 -1
- package/build/components/LoginDialog/LoginDialogCloseButton.js +2 -2
- package/build/components/LoginDialog/LoginDialogCloseButton.js.map +1 -1
- package/build/components/LoginDialog/LoginDialogCloseButton.mjs +2 -2
- package/build/components/LoginDialog/LoginDialogCloseButton.mjs.map +1 -1
- package/build/components/LoginDialog/LoginDialogForm.d.ts +1 -1
- package/build/components/LoginDialog/LoginDialogFormError.d.ts +1 -1
- package/build/components/LoginForm/Login.d.ts +2 -2
- package/build/components/LoginForm/Login.mjs +2 -2
- package/build/components/LoginForm/Login.mjs.map +1 -1
- package/build/components/LoginForm/PasswordField.d.ts +3 -3
- package/build/components/LoginForm/UsernameField.d.ts +3 -3
- package/build/components/LoginForm/styles.d.ts +1 -1
- package/build/components/LoginForm/styles.js +2 -2
- package/build/components/LoginForm/styles.js.map +1 -1
- package/build/components/LoginForm/styles.mjs +2 -2
- package/build/components/LoginForm/styles.mjs.map +1 -1
- package/build/components/LoginForm/useLoginForm.d.ts +17 -17
- package/build/components/Logo/Logo.d.ts +1 -1
- package/build/components/Logo/img/logo-black-and-white.svg +1 -0
- package/build/components/Logo/img/logo.svg +1 -0
- package/build/components/MenuItem/MenuItem.d.ts +2 -2
- package/build/components/NoItems/NoItems.d.ts +1 -1
- package/build/components/NoItems/NoItems.mjs +2 -2
- package/build/components/NoItems/NoItems.mjs.map +1 -1
- package/build/components/NotFound/NotFound.d.ts +1 -1
- package/build/components/NotFound/img/package.svg +1 -0
- package/build/components/Package/Package.d.ts +3 -3
- package/build/components/Package/Package.js.map +1 -1
- package/build/components/Package/Package.mjs +2 -2
- package/build/components/Package/Package.mjs.map +1 -1
- package/build/components/Package/styles.d.ts +39 -29
- package/build/components/PackageList/PackageList.d.ts +2 -2
- package/build/components/Person/Person.d.ts +2 -2
- package/build/components/Person/PersonTooltip.d.ts +2 -2
- package/build/components/Person/PersonTooltip.mjs +2 -2
- package/build/components/Person/PersonTooltip.mjs.map +1 -1
- package/build/components/Person/utils.d.ts +1 -1
- package/build/components/RawViewer/RawViewer.d.ts +1 -1
- package/build/components/Readme/Readme.d.ts +2 -5
- package/build/components/Readme/Readme.js +6 -6
- package/build/components/Readme/Readme.js.map +1 -1
- package/build/components/Readme/Readme.mjs +6 -6
- package/build/components/Readme/Readme.mjs.map +1 -1
- package/build/components/Readme/github-markdown.css +1592 -0
- package/build/components/Readme/hljs-github-dark.css +117 -0
- package/build/components/Readme/hljs-github-light.css +117 -0
- package/build/components/RegistryInfoDialog/RegistryInfoDialog.d.ts +2 -2
- package/build/components/RegistryInfoDialog/styles.d.ts +11 -7
- package/build/components/RegistryInfoDialog/types.d.ts +1 -1
- package/build/components/Repository/Repository.d.ts +1 -1
- package/build/components/Repository/Repository.mjs +2 -2
- package/build/components/Repository/Repository.mjs.map +1 -1
- package/build/components/Search/AutoComplete/AutoComplete.d.ts +2 -3
- package/build/components/Search/AutoComplete/styles.d.ts +3 -3
- package/build/components/Search/Search.d.ts +1 -1
- package/build/components/Search/SearchItem.d.ts +4 -4
- package/build/components/Search/styles.d.ts +10 -6
- package/build/components/SettingsMenu/SettingsMenu.d.ts +1 -1
- package/build/components/SideBarTitle/SideBarTitle.d.ts +1 -1
- package/build/components/UnAuthorized/UnAuthorized.d.ts +1 -1
- package/build/components/UpLinks/UpLinks.d.ts +1 -1
- package/build/components/UpLinks/UplinkLink.d.ts +1 -1
- package/build/components/UpLinks/index.js +1 -1
- package/build/components/UpLinks/styles.d.ts +11 -7
- package/build/components/UpLinks/styles.mjs +2 -2
- package/build/components/UpLinks/styles.mjs.map +1 -1
- package/build/components/Versions/HistoryList.d.ts +2 -2
- package/build/components/Versions/TagList.d.ts +2 -2
- package/build/components/Versions/Versions.d.ts +7 -2
- package/build/components/Versions/Versions.mjs +2 -2
- package/build/components/Versions/Versions.mjs.map +1 -1
- package/build/components/Versions/index.js +1 -1
- package/build/components/Versions/styles.d.ts +6 -6
- package/build/components/Versions/types.d.ts +1 -1
- package/build/configuration.d.ts +1 -1
- package/build/hooks/useOnClickOutside.d.ts +1 -1
- package/build/index.d.ts +0 -3
- package/build/index.js +59 -62
- package/build/index.mjs +2 -6
- package/build/layouts/Security/Dialog.d.ts +1 -1
- package/build/layouts/Version/Version.d.ts +1 -1
- package/build/pages/Front/index.js +1 -1
- package/build/pages/Version/Version.d.ts +1 -1
- package/build/pages/Version/index.js +1 -1
- package/build/providers/AppConfigurationProvider/AppConfigurationProvider.d.ts +2 -2
- package/build/providers/AuthProvider/AuthProvider.d.ts +2 -3
- package/build/providers/AuthProvider/AuthProvider.js +11 -10
- package/build/providers/AuthProvider/AuthProvider.js.map +1 -1
- package/build/providers/AuthProvider/AuthProvider.mjs +12 -11
- package/build/providers/AuthProvider/AuthProvider.mjs.map +1 -1
- package/build/providers/AuthProvider/types.d.ts +1 -1
- package/build/providers/AuthProvider/utils.d.ts +1 -1
- package/build/providers/DownloadProvider/DownloadProvider.d.ts +1 -2
- package/build/providers/ManifestsProvider/ManifestsProvider.d.ts +2 -3
- package/build/providers/ManifestsProvider/README.md +22 -0
- package/build/providers/PersistenceSettingProvider/PersistenceSettingProvider.d.ts +1 -2
- package/build/providers/SearchProvider/SearchProvider.d.ts +2 -3
- package/build/providers/TranslatorProvider/TranslatorProvider.d.ts +2 -3
- package/build/providers/VersionProvider/README.md +22 -0
- package/build/providers/VersionProvider/VersionProvider.d.ts +2 -2
- package/build/routes/SecurityRoutes.d.ts +1 -1
- package/build/sections/Detail/ContainerContent.d.ts +1 -1
- package/build/sections/Detail/Detail.d.ts +1 -1
- package/build/sections/Detail/ReadmeSection.d.ts +1 -1
- package/build/sections/Detail/Tabs.d.ts +1 -1
- package/build/sections/Footer/Footer.d.ts +1 -1
- package/build/sections/Footer/styles.d.ts +17 -17
- package/build/sections/Header/Header.d.ts +1 -1
- package/build/sections/Header/HeaderGreetings.d.ts +1 -1
- package/build/sections/Header/HeaderLeft.d.ts +1 -1
- package/build/sections/Header/HeaderMenu.d.ts +1 -2
- package/build/sections/Header/HeaderMenu.js +10 -11
- package/build/sections/Header/HeaderMenu.js.map +1 -1
- package/build/sections/Header/HeaderMenu.mjs +10 -11
- package/build/sections/Header/HeaderMenu.mjs.map +1 -1
- package/build/sections/Header/HeaderRight.d.ts +1 -1
- package/build/sections/Header/HeaderSettingsDialog.d.ts +1 -1
- package/build/sections/Header/HeaderToolTip.d.ts +2 -2
- package/build/sections/Header/HeaderToolTipIcon.d.ts +1 -1
- package/build/sections/Header/LanguageSwitch.d.ts +12 -3
- package/build/sections/Header/LanguageSwitch.mjs +2 -2
- package/build/sections/Header/LanguageSwitch.mjs.map +1 -1
- package/build/sections/Header/RegistryInfoContent/RegistryInfoContent.d.ts +7 -8
- package/build/sections/Header/RegistryInfoContent/RegistryInfoContent.mjs +5 -5
- package/build/sections/Header/RegistryInfoContent/RegistryInfoContent.mjs.map +1 -1
- package/build/sections/Header/RegistryInfoContent/styles.d.ts +7 -7
- package/build/sections/Header/styles.d.ts +33 -19
- package/build/sections/Home/Home.d.ts +1 -1
- package/build/sections/Security/AddUser.d.ts +1 -1
- package/build/sections/Security/AddUser.js +0 -1
- package/build/sections/Security/AddUser.js.map +1 -1
- package/build/sections/Security/AddUser.mjs +0 -1
- package/build/sections/Security/AddUser.mjs.map +1 -1
- package/build/sections/Security/ChangePassword.d.ts +1 -1
- package/build/sections/Security/ChangePassword.js +0 -1
- package/build/sections/Security/ChangePassword.js.map +1 -1
- package/build/sections/Security/ChangePassword.mjs +0 -1
- package/build/sections/Security/ChangePassword.mjs.map +1 -1
- package/build/sections/Security/Login.d.ts +1 -1
- package/build/sections/Security/Login.js +4 -6
- package/build/sections/Security/Login.js.map +1 -1
- package/build/sections/Security/Login.mjs +5 -7
- package/build/sections/Security/Login.mjs.map +1 -1
- package/build/sections/Security/Success.d.ts +1 -1
- package/build/sections/Security/styles.d.ts +5 -3
- package/build/sections/Security/styles.js +1 -1
- package/build/sections/Security/styles.js.map +1 -1
- package/build/sections/Security/styles.mjs +1 -1
- package/build/sections/Security/styles.mjs.map +1 -1
- package/build/sections/SideBar/Sidebar.d.ts +1 -1
- package/build/types/index.d.ts +1 -1
- package/build/types/packageMeta.d.ts +1 -1
- package/build/ui-components.css +941 -313
- package/build/utils/cli-utils.d.ts +1 -1
- package/build/utils/loadable.d.ts +1 -1
- package/build/utils/utils.d.ts +2 -2
- package/package.json +7 -8
- package/build/pages/Security/index.js +0 -4
- package/build/pages/Security/index.mjs +0 -4
- package/build/test/i18n-config.d.ts +0 -2
- package/build/test/test-react-testing-library.d.ts +0 -23
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChangePassword.js","names":[],"sources":["../../../src/sections/Security/ChangePassword.tsx"],"sourcesContent":["import { yupResolver } from '@hookform/resolvers/yup';\nimport { Button, Typography } from '@mui/material';\nimport React, { useCallback, useEffect } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate } from 'react-router';\n\nimport { useDataMutation } from '../../api/use-data-mutation';\nimport LoginDialogFormError from '../../components/LoginDialog/LoginDialogFormError';\nimport { getConfiguration } from '../../configuration';\nimport SecurityLayout from '../../layouts/Security/Dialog';\nimport { normalizeAuthError } from '../../providers/AuthProvider/utils';\nimport { stripTrailingSlash } from '../../store/utils';\nimport { Route } from '../../utils';\nimport { APIRoute } from '../../utils/routes';\nimport type { ChangePasswordFormValues } from '../../utils/schemas';\nimport { changePasswordSchema } from '../../utils/schemas';\nimport { MessageType } from './Success';\nimport { SecurityContainer, SecurityForm, SecurityTextField } from './styles';\n\nconst ChangePassword: React.FC = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const configuration = getConfiguration();\n const basePath = stripTrailingSlash(configuration.base);\n const changePasswordEnabled = configuration?.flags?.changePassword;\n\n const form = useForm<ChangePasswordFormValues>({\n mode: 'onChange',\n defaultValues: {\n username: '',\n oldPassword: '',\n newPassword: '',\n confirmPassword: '',\n },\n resolver: yupResolver(changePasswordSchema),\n });\n\n const {\n setError,\n handleSubmit,\n register,\n formState: { isValid, errors },\n } = form;\n\n const { trigger } = useDataMutation<{ ok: string }>(basePath, APIRoute.RESET_PASSWORD, 'PUT');\n\n const handleChangePassword = useCallback(\n async (body: { password: { old: string; new: string } }) => {\n try {\n await trigger(body);\n } catch (err) {\n throw normalizeAuthError(err);\n }\n },\n [trigger]\n );\n\n const onSubmit = useCallback(\n async (data: ChangePasswordFormValues) => {\n try {\n await handleChangePassword({\n password: {\n old: data.oldPassword,\n new: data.newPassword,\n },\n });\n navigate(`${Route.SUCCESS}?messageType=${MessageType.ChangePassword}`);\n } catch {\n setError('root', {\n type: 'server',\n message: 'Failed to change password',\n });\n }\n },\n [handleChangePassword, setError, navigate]\n );\n\n useEffect(() => {\n if (!changePasswordEnabled) {\n navigate('/');\n }\n }, [changePasswordEnabled, navigate]);\n\n return changePasswordEnabled ? (\n <SecurityLayout>\n <SecurityContainer>\n <SecurityForm
|
|
1
|
+
{"version":3,"file":"ChangePassword.js","names":[],"sources":["../../../src/sections/Security/ChangePassword.tsx"],"sourcesContent":["import { yupResolver } from '@hookform/resolvers/yup';\nimport { Button, Typography } from '@mui/material';\nimport React, { useCallback, useEffect } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate } from 'react-router';\n\nimport { useDataMutation } from '../../api/use-data-mutation';\nimport LoginDialogFormError from '../../components/LoginDialog/LoginDialogFormError';\nimport { getConfiguration } from '../../configuration';\nimport SecurityLayout from '../../layouts/Security/Dialog';\nimport { normalizeAuthError } from '../../providers/AuthProvider/utils';\nimport { stripTrailingSlash } from '../../store/utils';\nimport { Route } from '../../utils';\nimport { APIRoute } from '../../utils/routes';\nimport type { ChangePasswordFormValues } from '../../utils/schemas';\nimport { changePasswordSchema } from '../../utils/schemas';\nimport { MessageType } from './Success';\nimport { SecurityContainer, SecurityForm, SecurityTextField } from './styles';\n\nconst ChangePassword: React.FC = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const configuration = getConfiguration();\n const basePath = stripTrailingSlash(configuration.base);\n const changePasswordEnabled = configuration?.flags?.changePassword;\n\n const form = useForm<ChangePasswordFormValues>({\n mode: 'onChange',\n defaultValues: {\n username: '',\n oldPassword: '',\n newPassword: '',\n confirmPassword: '',\n },\n resolver: yupResolver(changePasswordSchema),\n });\n\n const {\n setError,\n handleSubmit,\n register,\n formState: { isValid, errors },\n } = form;\n\n const { trigger } = useDataMutation<{ ok: string }>(basePath, APIRoute.RESET_PASSWORD, 'PUT');\n\n const handleChangePassword = useCallback(\n async (body: { password: { old: string; new: string } }) => {\n try {\n await trigger(body);\n } catch (err) {\n throw normalizeAuthError(err);\n }\n },\n [trigger]\n );\n\n const onSubmit = useCallback(\n async (data: ChangePasswordFormValues) => {\n try {\n await handleChangePassword({\n password: {\n old: data.oldPassword,\n new: data.newPassword,\n },\n });\n navigate(`${Route.SUCCESS}?messageType=${MessageType.ChangePassword}`);\n } catch {\n setError('root', {\n type: 'server',\n message: 'Failed to change password',\n });\n }\n },\n [handleChangePassword, setError, navigate]\n );\n\n useEffect(() => {\n if (!changePasswordEnabled) {\n navigate('/');\n }\n }, [changePasswordEnabled, navigate]);\n\n return changePasswordEnabled ? (\n <SecurityLayout>\n <SecurityContainer>\n <SecurityForm onSubmit={handleSubmit(onSubmit)}>\n <Typography align=\"center\" component=\"h1\" gutterBottom={true} variant=\"h4\">\n {t('security.changePassword.title')}\n </Typography>\n <SecurityTextField\n error={!!errors.username}\n helperText={errors.username?.message}\n label={t('security.changePassword.username')}\n {...register('username')}\n required={true}\n />\n <SecurityTextField\n error={!!errors.oldPassword}\n helperText={errors.oldPassword?.message}\n label={t('security.changePassword.oldPassword')}\n {...register('oldPassword')}\n required={true}\n type=\"password\"\n />\n <SecurityTextField\n error={!!errors.newPassword}\n helperText={errors.newPassword?.message}\n label={t('security.changePassword.newPassword')}\n {...register('newPassword')}\n required={true}\n type=\"password\"\n />\n <SecurityTextField\n error={!!errors.confirmPassword}\n helperText={errors.confirmPassword?.message}\n label={t('security.changePassword.confirmPassword')}\n {...register('confirmPassword')}\n required={true}\n type=\"password\"\n />\n {errors.root && <LoginDialogFormError error={errors.root} />}\n <Button\n color=\"primary\"\n disabled={!isValid}\n fullWidth={true}\n sx={{ mt: 2 }}\n type=\"submit\"\n variant=\"contained\"\n >\n {t('security.changePassword.submit')}\n </Button>\n </SecurityForm>\n </SecurityContainer>\n </SecurityLayout>\n ) : null;\n};\n\nexport default ChangePassword;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAoBA,IAAM,uBAAiC;CACrC,MAAM,EAAE,OAAA,GAAA,cAAA,iBAAsB;CAC9B,MAAM,YAAA,GAAA,aAAA,cAAwB;CAC9B,MAAM,gBAAgB,sBAAA,kBAAkB;CACxC,MAAM,WAAW,cAAA,mBAAmB,cAAc,KAAK;CACvD,MAAM,wBAAwB,eAAe,OAAO;CAapD,MAAM,EACJ,UACA,cACA,UACA,WAAW,EAAE,SAAS,cAAA,GAAA,gBAAA,SAfuB;EAC7C,MAAM;EACN,eAAe;GACb,UAAU;GACV,aAAa;GACb,aAAa;GACb,iBAAiB;GAClB;EACD,WAAA,GAAA,wBAAA,aAAsB,gBAAA,qBAAqB;EAC5C,CAAC;CASF,MAAM,EAAE,YAAY,0BAAA,gBAAgC,UAAU,eAAA,SAAS,gBAAgB,MAAM;CAE7F,MAAM,wBAAA,GAAA,MAAA,aACJ,OAAO,SAAqD;AAC1D,MAAI;AACF,SAAM,QAAQ,KAAK;WACZ,KAAK;AACZ,SAAM,gBAAA,mBAAmB,IAAI;;IAGjC,CAAC,QAAQ,CACV;CAED,MAAM,YAAA,GAAA,MAAA,aACJ,OAAO,SAAmC;AACxC,MAAI;AACF,SAAM,qBAAqB,EACzB,UAAU;IACR,KAAK,KAAK;IACV,KAAK,KAAK;IACX,EACF,CAAC;AACF,YAAS,GAAG,eAAA,MAAM,QAAQ,eAAe,gBAAA,YAAY,iBAAiB;UAChE;AACN,YAAS,QAAQ;IACf,MAAM;IACN,SAAS;IACV,CAAC;;IAGN;EAAC;EAAsB;EAAU;EAAS,CAC3C;AAED,EAAA,GAAA,MAAA,iBAAgB;AACd,MAAI,CAAC,sBACH,UAAS,IAAI;IAEd,CAAC,uBAAuB,SAAS,CAAC;AAErC,QAAO,wBACL,iBAAA,GAAA,kBAAA,KAAC,eAAA,SAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAAC,eAAA,mBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,MAAC,eAAA,cAAD;EAAc,UAAU,aAAa,SAAS;YAA9C;GACE,iBAAA,GAAA,kBAAA,KAAC,cAAA,YAAD;IAAY,OAAM;IAAS,WAAU;IAAK,cAAc;IAAM,SAAQ;cACnE,EAAE,gCAAgC;IACxB,CAAA;GACb,iBAAA,GAAA,kBAAA,KAAC,eAAA,mBAAD;IACE,OAAO,CAAC,CAAC,OAAO;IAChB,YAAY,OAAO,UAAU;IAC7B,OAAO,EAAE,mCAAmC;IAC5C,GAAI,SAAS,WAAW;IACxB,UAAU;IACV,CAAA;GACF,iBAAA,GAAA,kBAAA,KAAC,eAAA,mBAAD;IACE,OAAO,CAAC,CAAC,OAAO;IAChB,YAAY,OAAO,aAAa;IAChC,OAAO,EAAE,sCAAsC;IAC/C,GAAI,SAAS,cAAc;IAC3B,UAAU;IACV,MAAK;IACL,CAAA;GACF,iBAAA,GAAA,kBAAA,KAAC,eAAA,mBAAD;IACE,OAAO,CAAC,CAAC,OAAO;IAChB,YAAY,OAAO,aAAa;IAChC,OAAO,EAAE,sCAAsC;IAC/C,GAAI,SAAS,cAAc;IAC3B,UAAU;IACV,MAAK;IACL,CAAA;GACF,iBAAA,GAAA,kBAAA,KAAC,eAAA,mBAAD;IACE,OAAO,CAAC,CAAC,OAAO;IAChB,YAAY,OAAO,iBAAiB;IACpC,OAAO,EAAE,0CAA0C;IACnD,GAAI,SAAS,kBAAkB;IAC/B,UAAU;IACV,MAAK;IACL,CAAA;GACD,OAAO,QAAQ,iBAAA,GAAA,kBAAA,KAAC,6BAAA,SAAD,EAAsB,OAAO,OAAO,MAAQ,CAAA;GAC5D,iBAAA,GAAA,kBAAA,KAAC,cAAA,QAAD;IACE,OAAM;IACN,UAAU,CAAC;IACX,WAAW;IACX,IAAI,EAAE,IAAI,GAAG;IACb,MAAK;IACL,SAAQ;cAEP,EAAE,iCAAiC;IAC7B,CAAA;GACI;KACG,CAAA,EACL,CAAA,GACf"}
|
|
@@ -63,7 +63,6 @@ var ChangePassword = () => {
|
|
|
63
63
|
if (!changePasswordEnabled) navigate("/");
|
|
64
64
|
}, [changePasswordEnabled, navigate]);
|
|
65
65
|
return changePasswordEnabled ? /* @__PURE__ */ jsx(SecurityLayout, { children: /* @__PURE__ */ jsx(SecurityContainer, { children: /* @__PURE__ */ jsxs(SecurityForm, {
|
|
66
|
-
component: "form",
|
|
67
66
|
onSubmit: handleSubmit(onSubmit),
|
|
68
67
|
children: [
|
|
69
68
|
/* @__PURE__ */ jsx(Typography, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChangePassword.mjs","names":[],"sources":["../../../src/sections/Security/ChangePassword.tsx"],"sourcesContent":["import { yupResolver } from '@hookform/resolvers/yup';\nimport { Button, Typography } from '@mui/material';\nimport React, { useCallback, useEffect } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate } from 'react-router';\n\nimport { useDataMutation } from '../../api/use-data-mutation';\nimport LoginDialogFormError from '../../components/LoginDialog/LoginDialogFormError';\nimport { getConfiguration } from '../../configuration';\nimport SecurityLayout from '../../layouts/Security/Dialog';\nimport { normalizeAuthError } from '../../providers/AuthProvider/utils';\nimport { stripTrailingSlash } from '../../store/utils';\nimport { Route } from '../../utils';\nimport { APIRoute } from '../../utils/routes';\nimport type { ChangePasswordFormValues } from '../../utils/schemas';\nimport { changePasswordSchema } from '../../utils/schemas';\nimport { MessageType } from './Success';\nimport { SecurityContainer, SecurityForm, SecurityTextField } from './styles';\n\nconst ChangePassword: React.FC = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const configuration = getConfiguration();\n const basePath = stripTrailingSlash(configuration.base);\n const changePasswordEnabled = configuration?.flags?.changePassword;\n\n const form = useForm<ChangePasswordFormValues>({\n mode: 'onChange',\n defaultValues: {\n username: '',\n oldPassword: '',\n newPassword: '',\n confirmPassword: '',\n },\n resolver: yupResolver(changePasswordSchema),\n });\n\n const {\n setError,\n handleSubmit,\n register,\n formState: { isValid, errors },\n } = form;\n\n const { trigger } = useDataMutation<{ ok: string }>(basePath, APIRoute.RESET_PASSWORD, 'PUT');\n\n const handleChangePassword = useCallback(\n async (body: { password: { old: string; new: string } }) => {\n try {\n await trigger(body);\n } catch (err) {\n throw normalizeAuthError(err);\n }\n },\n [trigger]\n );\n\n const onSubmit = useCallback(\n async (data: ChangePasswordFormValues) => {\n try {\n await handleChangePassword({\n password: {\n old: data.oldPassword,\n new: data.newPassword,\n },\n });\n navigate(`${Route.SUCCESS}?messageType=${MessageType.ChangePassword}`);\n } catch {\n setError('root', {\n type: 'server',\n message: 'Failed to change password',\n });\n }\n },\n [handleChangePassword, setError, navigate]\n );\n\n useEffect(() => {\n if (!changePasswordEnabled) {\n navigate('/');\n }\n }, [changePasswordEnabled, navigate]);\n\n return changePasswordEnabled ? (\n <SecurityLayout>\n <SecurityContainer>\n <SecurityForm
|
|
1
|
+
{"version":3,"file":"ChangePassword.mjs","names":[],"sources":["../../../src/sections/Security/ChangePassword.tsx"],"sourcesContent":["import { yupResolver } from '@hookform/resolvers/yup';\nimport { Button, Typography } from '@mui/material';\nimport React, { useCallback, useEffect } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate } from 'react-router';\n\nimport { useDataMutation } from '../../api/use-data-mutation';\nimport LoginDialogFormError from '../../components/LoginDialog/LoginDialogFormError';\nimport { getConfiguration } from '../../configuration';\nimport SecurityLayout from '../../layouts/Security/Dialog';\nimport { normalizeAuthError } from '../../providers/AuthProvider/utils';\nimport { stripTrailingSlash } from '../../store/utils';\nimport { Route } from '../../utils';\nimport { APIRoute } from '../../utils/routes';\nimport type { ChangePasswordFormValues } from '../../utils/schemas';\nimport { changePasswordSchema } from '../../utils/schemas';\nimport { MessageType } from './Success';\nimport { SecurityContainer, SecurityForm, SecurityTextField } from './styles';\n\nconst ChangePassword: React.FC = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const configuration = getConfiguration();\n const basePath = stripTrailingSlash(configuration.base);\n const changePasswordEnabled = configuration?.flags?.changePassword;\n\n const form = useForm<ChangePasswordFormValues>({\n mode: 'onChange',\n defaultValues: {\n username: '',\n oldPassword: '',\n newPassword: '',\n confirmPassword: '',\n },\n resolver: yupResolver(changePasswordSchema),\n });\n\n const {\n setError,\n handleSubmit,\n register,\n formState: { isValid, errors },\n } = form;\n\n const { trigger } = useDataMutation<{ ok: string }>(basePath, APIRoute.RESET_PASSWORD, 'PUT');\n\n const handleChangePassword = useCallback(\n async (body: { password: { old: string; new: string } }) => {\n try {\n await trigger(body);\n } catch (err) {\n throw normalizeAuthError(err);\n }\n },\n [trigger]\n );\n\n const onSubmit = useCallback(\n async (data: ChangePasswordFormValues) => {\n try {\n await handleChangePassword({\n password: {\n old: data.oldPassword,\n new: data.newPassword,\n },\n });\n navigate(`${Route.SUCCESS}?messageType=${MessageType.ChangePassword}`);\n } catch {\n setError('root', {\n type: 'server',\n message: 'Failed to change password',\n });\n }\n },\n [handleChangePassword, setError, navigate]\n );\n\n useEffect(() => {\n if (!changePasswordEnabled) {\n navigate('/');\n }\n }, [changePasswordEnabled, navigate]);\n\n return changePasswordEnabled ? (\n <SecurityLayout>\n <SecurityContainer>\n <SecurityForm onSubmit={handleSubmit(onSubmit)}>\n <Typography align=\"center\" component=\"h1\" gutterBottom={true} variant=\"h4\">\n {t('security.changePassword.title')}\n </Typography>\n <SecurityTextField\n error={!!errors.username}\n helperText={errors.username?.message}\n label={t('security.changePassword.username')}\n {...register('username')}\n required={true}\n />\n <SecurityTextField\n error={!!errors.oldPassword}\n helperText={errors.oldPassword?.message}\n label={t('security.changePassword.oldPassword')}\n {...register('oldPassword')}\n required={true}\n type=\"password\"\n />\n <SecurityTextField\n error={!!errors.newPassword}\n helperText={errors.newPassword?.message}\n label={t('security.changePassword.newPassword')}\n {...register('newPassword')}\n required={true}\n type=\"password\"\n />\n <SecurityTextField\n error={!!errors.confirmPassword}\n helperText={errors.confirmPassword?.message}\n label={t('security.changePassword.confirmPassword')}\n {...register('confirmPassword')}\n required={true}\n type=\"password\"\n />\n {errors.root && <LoginDialogFormError error={errors.root} />}\n <Button\n color=\"primary\"\n disabled={!isValid}\n fullWidth={true}\n sx={{ mt: 2 }}\n type=\"submit\"\n variant=\"contained\"\n >\n {t('security.changePassword.submit')}\n </Button>\n </SecurityForm>\n </SecurityContainer>\n </SecurityLayout>\n ) : null;\n};\n\nexport default ChangePassword;\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAoBA,IAAM,uBAAiC;CACrC,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,WAAW,aAAa;CAC9B,MAAM,gBAAgB,kBAAkB;CACxC,MAAM,WAAW,mBAAmB,cAAc,KAAK;CACvD,MAAM,wBAAwB,eAAe,OAAO;CAapD,MAAM,EACJ,UACA,cACA,UACA,WAAW,EAAE,SAAS,aAfX,QAAkC;EAC7C,MAAM;EACN,eAAe;GACb,UAAU;GACV,aAAa;GACb,aAAa;GACb,iBAAiB;GAClB;EACD,UAAU,YAAY,qBAAqB;EAC5C,CAAC;CASF,MAAM,EAAE,YAAY,gBAAgC,UAAU,SAAS,gBAAgB,MAAM;CAE7F,MAAM,uBAAuB,YAC3B,OAAO,SAAqD;AAC1D,MAAI;AACF,SAAM,QAAQ,KAAK;WACZ,KAAK;AACZ,SAAM,mBAAmB,IAAI;;IAGjC,CAAC,QAAQ,CACV;CAED,MAAM,WAAW,YACf,OAAO,SAAmC;AACxC,MAAI;AACF,SAAM,qBAAqB,EACzB,UAAU;IACR,KAAK,KAAK;IACV,KAAK,KAAK;IACX,EACF,CAAC;AACF,YAAS,GAAG,QAAM,QAAQ,eAAe,YAAY,iBAAiB;UAChE;AACN,YAAS,QAAQ;IACf,MAAM;IACN,SAAS;IACV,CAAC;;IAGN;EAAC;EAAsB;EAAU;EAAS,CAC3C;AAED,iBAAgB;AACd,MAAI,CAAC,sBACH,UAAS,IAAI;IAEd,CAAC,uBAAuB,SAAS,CAAC;AAErC,QAAO,wBACL,oBAAC,gBAAD,EAAA,UACE,oBAAC,mBAAD,EAAA,UACE,qBAAC,cAAD;EAAc,UAAU,aAAa,SAAS;YAA9C;GACE,oBAAC,YAAD;IAAY,OAAM;IAAS,WAAU;IAAK,cAAc;IAAM,SAAQ;cACnE,EAAE,gCAAgC;IACxB,CAAA;GACb,oBAAC,mBAAD;IACE,OAAO,CAAC,CAAC,OAAO;IAChB,YAAY,OAAO,UAAU;IAC7B,OAAO,EAAE,mCAAmC;IAC5C,GAAI,SAAS,WAAW;IACxB,UAAU;IACV,CAAA;GACF,oBAAC,mBAAD;IACE,OAAO,CAAC,CAAC,OAAO;IAChB,YAAY,OAAO,aAAa;IAChC,OAAO,EAAE,sCAAsC;IAC/C,GAAI,SAAS,cAAc;IAC3B,UAAU;IACV,MAAK;IACL,CAAA;GACF,oBAAC,mBAAD;IACE,OAAO,CAAC,CAAC,OAAO;IAChB,YAAY,OAAO,aAAa;IAChC,OAAO,EAAE,sCAAsC;IAC/C,GAAI,SAAS,cAAc;IAC3B,UAAU;IACV,MAAK;IACL,CAAA;GACF,oBAAC,mBAAD;IACE,OAAO,CAAC,CAAC,OAAO;IAChB,YAAY,OAAO,iBAAiB;IACpC,OAAO,EAAE,0CAA0C;IACnD,GAAI,SAAS,kBAAkB;IAC/B,UAAU;IACV,MAAK;IACL,CAAA;GACD,OAAO,QAAQ,oBAAC,sBAAD,EAAsB,OAAO,OAAO,MAAQ,CAAA;GAC5D,oBAAC,QAAD;IACE,OAAM;IACN,UAAU,CAAC;IACX,WAAW;IACX,IAAI,EAAE,IAAI,GAAG;IACb,MAAK;IACL,SAAQ;cAEP,EAAE,iCAAiC;IAC7B,CAAA;GACI;KACG,CAAA,EACL,CAAA,GACf"}
|
|
@@ -33,14 +33,14 @@ var Login = () => {
|
|
|
33
33
|
const { next } = require_utils$2.getSecurityUrlParams(location);
|
|
34
34
|
const createUserEnabled = configuration?.flags?.createUser;
|
|
35
35
|
const addUserLink = require_routes.Route.ADD_USER + (next ? "?next=" + next : "");
|
|
36
|
-
const {
|
|
36
|
+
const { trigger } = require_use_data_mutation.useDataMutation(basePath, next, "POST");
|
|
37
37
|
const { setError, handleSubmit, register, formState: { isValid, errors } } = (0, react_hook_form.useForm)({
|
|
38
38
|
mode: "onChange",
|
|
39
39
|
resolver: (0, _hookform_resolvers_yup.yupResolver)(require_schemas.loginSchema)
|
|
40
40
|
});
|
|
41
41
|
const handleLogin = async (body) => {
|
|
42
42
|
try {
|
|
43
|
-
await trigger(body);
|
|
43
|
+
return await trigger(body);
|
|
44
44
|
} catch (err) {
|
|
45
45
|
throw require_utils$1.normalizeAuthError(err);
|
|
46
46
|
}
|
|
@@ -50,7 +50,8 @@ var Login = () => {
|
|
|
50
50
|
}, [navigate]);
|
|
51
51
|
const onSubmit = (0, react.useCallback)(async (data) => {
|
|
52
52
|
try {
|
|
53
|
-
await handleLogin?.(data);
|
|
53
|
+
const result = await handleLogin?.(data);
|
|
54
|
+
if (result && result.username && result.token) require_storage.saveAuth(result.username, result.token);
|
|
54
55
|
onSuccess();
|
|
55
56
|
} catch {
|
|
56
57
|
setError("root", {
|
|
@@ -63,9 +64,6 @@ var Login = () => {
|
|
|
63
64
|
setError,
|
|
64
65
|
onSuccess
|
|
65
66
|
]);
|
|
66
|
-
(0, react.useEffect)(() => {
|
|
67
|
-
if (data && !isMutating && data.username && data.token) require_storage.saveAuth(data.username, data.token);
|
|
68
|
-
}, [data, isMutating]);
|
|
69
67
|
return !next ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_NotFound.default, {}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Dialog.default, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_styles$1.SecurityContainer, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_styles$1.SecurityForm, { children: [
|
|
70
68
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_styles.default, {}),
|
|
71
69
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Login.default, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Login.js","names":[],"sources":["../../../src/sections/Security/Login.tsx"],"sourcesContent":["import { yupResolver } from '@hookform/resolvers/yup';\nimport { Link, Typography } from '@mui/material';\nimport React, { useCallback
|
|
1
|
+
{"version":3,"file":"Login.js","names":[],"sources":["../../../src/sections/Security/Login.tsx"],"sourcesContent":["import { yupResolver } from '@hookform/resolvers/yup';\nimport { Link, Typography } from '@mui/material';\nimport React, { useCallback } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate } from 'react-router';\n\nimport { useDataMutation } from '../../api/use-data-mutation';\nimport type { LoginFormValues } from '../../components/LoginForm/Login';\nimport LoginForm from '../../components/LoginForm/Login';\nimport LoginFormHeader from '../../components/LoginForm/styles';\nimport NotFound from '../../components/NotFound';\nimport { getConfiguration } from '../../configuration';\nimport SecurityLayout from '../../layouts/Security/Dialog';\nimport type { LoginBody } from '../../providers/AuthProvider/types';\nimport { normalizeAuthError } from '../../providers/AuthProvider/utils';\nimport { saveAuth } from '../../store/storage';\nimport { stripTrailingSlash } from '../../store/utils';\nimport { Route } from '../../utils';\nimport { loginSchema } from '../../utils/schemas';\nimport { MessageType } from './Success';\nimport { SecurityContainer, SecurityForm } from './styles';\nimport { getSecurityUrlParams } from './utils';\n\nconst configuration = getConfiguration();\nconst basePath = stripTrailingSlash(configuration.base);\n\nconst Login: React.FC = () => {\n const { t } = useTranslation();\n const location = useLocation();\n const navigate = useNavigate();\n const { next } = getSecurityUrlParams(location);\n const createUserEnabled = configuration?.flags?.createUser;\n const addUserLink = Route.ADD_USER + (next ? '?next=' + next : '');\n\n const { trigger } = useDataMutation<LoginBody>(basePath, next, 'POST');\n\n const form = useForm<LoginFormValues>({\n mode: 'onChange',\n resolver: yupResolver(loginSchema),\n });\n\n const {\n setError,\n handleSubmit,\n register,\n formState: { isValid, errors },\n } = form;\n\n const handleLogin = async (body: { username: string; password: string }) => {\n try {\n return await trigger(body);\n } catch (err) {\n throw normalizeAuthError(err);\n }\n };\n\n const onSuccess = useCallback(() => {\n navigate(`${Route.SUCCESS}?messageType=${MessageType.Login}`);\n }, [navigate]);\n\n const onSubmit = useCallback(\n async (data: LoginFormValues) => {\n try {\n const result = await handleLogin?.(data);\n if (result && result.username && result.token) {\n saveAuth(result.username, result.token);\n }\n onSuccess();\n } catch {\n setError('root', {\n type: 'server',\n // TODO: add translation key\n message: 'Invalid username or password',\n });\n }\n },\n [handleLogin, setError, onSuccess]\n );\n\n return !next ? (\n <NotFound />\n ) : (\n <SecurityLayout>\n <SecurityContainer>\n <SecurityForm>\n <LoginFormHeader />\n <LoginForm\n errors={errors}\n handleSubmit={handleSubmit}\n isValid={isValid}\n onSubmit={onSubmit}\n register={register}\n />\n {createUserEnabled && (\n <Typography align=\"center\" sx={{ mt: 2, fontSize: 12 }} variant=\"body2\">\n {t('security.login.noUserQuestion')}\n <Link href={addUserLink} sx={{ ml: 1 }}>\n {t('security.login.createUser')}\n </Link>\n </Typography>\n )}\n </SecurityForm>\n </SecurityContainer>\n </SecurityLayout>\n );\n};\n\nexport default Login;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,IAAM,gBAAgB,sBAAA,kBAAkB;AACxC,IAAM,WAAW,cAAA,mBAAmB,cAAc,KAAK;AAEvD,IAAM,cAAwB;CAC5B,MAAM,EAAE,OAAA,GAAA,cAAA,iBAAsB;CAC9B,MAAM,YAAA,GAAA,aAAA,cAAwB;CAC9B,MAAM,YAAA,GAAA,aAAA,cAAwB;CAC9B,MAAM,EAAE,SAAS,gBAAA,qBAAqB,SAAS;CAC/C,MAAM,oBAAoB,eAAe,OAAO;CAChD,MAAM,cAAc,eAAA,MAAM,YAAY,OAAO,WAAW,OAAO;CAE/D,MAAM,EAAE,YAAY,0BAAA,gBAA2B,UAAU,MAAM,OAAO;CAOtE,MAAM,EACJ,UACA,cACA,UACA,WAAW,EAAE,SAAS,cAAA,GAAA,gBAAA,SATc;EACpC,MAAM;EACN,WAAA,GAAA,wBAAA,aAAsB,gBAAA,YAAY;EACnC,CAAC;CASF,MAAM,cAAc,OAAO,SAAiD;AAC1E,MAAI;AACF,UAAO,MAAM,QAAQ,KAAK;WACnB,KAAK;AACZ,SAAM,gBAAA,mBAAmB,IAAI;;;CAIjC,MAAM,aAAA,GAAA,MAAA,mBAA8B;AAClC,WAAS,GAAG,eAAA,MAAM,QAAQ,eAAe,gBAAA,YAAY,QAAQ;IAC5D,CAAC,SAAS,CAAC;CAEd,MAAM,YAAA,GAAA,MAAA,aACJ,OAAO,SAA0B;AAC/B,MAAI;GACF,MAAM,SAAS,MAAM,cAAc,KAAK;AACxC,OAAI,UAAU,OAAO,YAAY,OAAO,MACtC,iBAAA,SAAS,OAAO,UAAU,OAAO,MAAM;AAEzC,cAAW;UACL;AACN,YAAS,QAAQ;IACf,MAAM;IAEN,SAAS;IACV,CAAC;;IAGN;EAAC;EAAa;EAAU;EAAU,CACnC;AAED,QAAO,CAAC,OACN,iBAAA,GAAA,kBAAA,KAAC,iBAAA,SAAD,EAAY,CAAA,GAEZ,iBAAA,GAAA,kBAAA,KAAC,eAAA,SAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAAC,iBAAA,mBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,MAAC,iBAAA,cAAD,EAAA,UAAA;EACE,iBAAA,GAAA,kBAAA,KAAC,eAAA,SAAD,EAAmB,CAAA;EACnB,iBAAA,GAAA,kBAAA,KAAC,cAAA,SAAD;GACU;GACM;GACL;GACC;GACA;GACV,CAAA;EACD,qBACC,iBAAA,GAAA,kBAAA,MAAC,cAAA,YAAD;GAAY,OAAM;GAAS,IAAI;IAAE,IAAI;IAAG,UAAU;IAAI;GAAE,SAAQ;aAAhE,CACG,EAAE,gCAAgC,EACnC,iBAAA,GAAA,kBAAA,KAAC,cAAA,MAAD;IAAM,MAAM;IAAa,IAAI,EAAE,IAAI,GAAG;cACnC,EAAE,4BAA4B;IAC1B,CAAA,CACI;;EAEF,EAAA,CAAA,EACG,CAAA,EACL,CAAA"}
|
|
@@ -14,7 +14,7 @@ import SecurityLayout from "../../layouts/Security/Dialog.mjs";
|
|
|
14
14
|
import { SecurityContainer, SecurityForm } from "./styles.mjs";
|
|
15
15
|
import { MessageType } from "./Success.mjs";
|
|
16
16
|
import { getSecurityUrlParams } from "./utils.mjs";
|
|
17
|
-
import { useCallback
|
|
17
|
+
import { useCallback } from "react";
|
|
18
18
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
19
19
|
import { useTranslation } from "react-i18next";
|
|
20
20
|
import { useLocation, useNavigate } from "react-router";
|
|
@@ -31,14 +31,14 @@ var Login = () => {
|
|
|
31
31
|
const { next } = getSecurityUrlParams(location);
|
|
32
32
|
const createUserEnabled = configuration?.flags?.createUser;
|
|
33
33
|
const addUserLink = Route$1.ADD_USER + (next ? "?next=" + next : "");
|
|
34
|
-
const {
|
|
34
|
+
const { trigger } = useDataMutation(basePath, next, "POST");
|
|
35
35
|
const { setError, handleSubmit, register, formState: { isValid, errors } } = useForm({
|
|
36
36
|
mode: "onChange",
|
|
37
37
|
resolver: yupResolver(loginSchema)
|
|
38
38
|
});
|
|
39
39
|
const handleLogin = async (body) => {
|
|
40
40
|
try {
|
|
41
|
-
await trigger(body);
|
|
41
|
+
return await trigger(body);
|
|
42
42
|
} catch (err) {
|
|
43
43
|
throw normalizeAuthError(err);
|
|
44
44
|
}
|
|
@@ -48,7 +48,8 @@ var Login = () => {
|
|
|
48
48
|
}, [navigate]);
|
|
49
49
|
const onSubmit = useCallback(async (data) => {
|
|
50
50
|
try {
|
|
51
|
-
await handleLogin?.(data);
|
|
51
|
+
const result = await handleLogin?.(data);
|
|
52
|
+
if (result && result.username && result.token) saveAuth(result.username, result.token);
|
|
52
53
|
onSuccess();
|
|
53
54
|
} catch {
|
|
54
55
|
setError("root", {
|
|
@@ -61,9 +62,6 @@ var Login = () => {
|
|
|
61
62
|
setError,
|
|
62
63
|
onSuccess
|
|
63
64
|
]);
|
|
64
|
-
useEffect(() => {
|
|
65
|
-
if (data && !isMutating && data.username && data.token) saveAuth(data.username, data.token);
|
|
66
|
-
}, [data, isMutating]);
|
|
67
65
|
return !next ? /* @__PURE__ */ jsx(NotFound, {}) : /* @__PURE__ */ jsx(SecurityLayout, { children: /* @__PURE__ */ jsx(SecurityContainer, { children: /* @__PURE__ */ jsxs(SecurityForm, { children: [
|
|
68
66
|
/* @__PURE__ */ jsx(LoginFormHeader, {}),
|
|
69
67
|
/* @__PURE__ */ jsx(LoginForm, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Login.mjs","names":[],"sources":["../../../src/sections/Security/Login.tsx"],"sourcesContent":["import { yupResolver } from '@hookform/resolvers/yup';\nimport { Link, Typography } from '@mui/material';\nimport React, { useCallback
|
|
1
|
+
{"version":3,"file":"Login.mjs","names":[],"sources":["../../../src/sections/Security/Login.tsx"],"sourcesContent":["import { yupResolver } from '@hookform/resolvers/yup';\nimport { Link, Typography } from '@mui/material';\nimport React, { useCallback } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate } from 'react-router';\n\nimport { useDataMutation } from '../../api/use-data-mutation';\nimport type { LoginFormValues } from '../../components/LoginForm/Login';\nimport LoginForm from '../../components/LoginForm/Login';\nimport LoginFormHeader from '../../components/LoginForm/styles';\nimport NotFound from '../../components/NotFound';\nimport { getConfiguration } from '../../configuration';\nimport SecurityLayout from '../../layouts/Security/Dialog';\nimport type { LoginBody } from '../../providers/AuthProvider/types';\nimport { normalizeAuthError } from '../../providers/AuthProvider/utils';\nimport { saveAuth } from '../../store/storage';\nimport { stripTrailingSlash } from '../../store/utils';\nimport { Route } from '../../utils';\nimport { loginSchema } from '../../utils/schemas';\nimport { MessageType } from './Success';\nimport { SecurityContainer, SecurityForm } from './styles';\nimport { getSecurityUrlParams } from './utils';\n\nconst configuration = getConfiguration();\nconst basePath = stripTrailingSlash(configuration.base);\n\nconst Login: React.FC = () => {\n const { t } = useTranslation();\n const location = useLocation();\n const navigate = useNavigate();\n const { next } = getSecurityUrlParams(location);\n const createUserEnabled = configuration?.flags?.createUser;\n const addUserLink = Route.ADD_USER + (next ? '?next=' + next : '');\n\n const { trigger } = useDataMutation<LoginBody>(basePath, next, 'POST');\n\n const form = useForm<LoginFormValues>({\n mode: 'onChange',\n resolver: yupResolver(loginSchema),\n });\n\n const {\n setError,\n handleSubmit,\n register,\n formState: { isValid, errors },\n } = form;\n\n const handleLogin = async (body: { username: string; password: string }) => {\n try {\n return await trigger(body);\n } catch (err) {\n throw normalizeAuthError(err);\n }\n };\n\n const onSuccess = useCallback(() => {\n navigate(`${Route.SUCCESS}?messageType=${MessageType.Login}`);\n }, [navigate]);\n\n const onSubmit = useCallback(\n async (data: LoginFormValues) => {\n try {\n const result = await handleLogin?.(data);\n if (result && result.username && result.token) {\n saveAuth(result.username, result.token);\n }\n onSuccess();\n } catch {\n setError('root', {\n type: 'server',\n // TODO: add translation key\n message: 'Invalid username or password',\n });\n }\n },\n [handleLogin, setError, onSuccess]\n );\n\n return !next ? (\n <NotFound />\n ) : (\n <SecurityLayout>\n <SecurityContainer>\n <SecurityForm>\n <LoginFormHeader />\n <LoginForm\n errors={errors}\n handleSubmit={handleSubmit}\n isValid={isValid}\n onSubmit={onSubmit}\n register={register}\n />\n {createUserEnabled && (\n <Typography align=\"center\" sx={{ mt: 2, fontSize: 12 }} variant=\"body2\">\n {t('security.login.noUserQuestion')}\n <Link href={addUserLink} sx={{ ml: 1 }}>\n {t('security.login.createUser')}\n </Link>\n </Typography>\n )}\n </SecurityForm>\n </SecurityContainer>\n </SecurityLayout>\n );\n};\n\nexport default Login;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAwBA,IAAM,gBAAgB,kBAAkB;AACxC,IAAM,WAAW,mBAAmB,cAAc,KAAK;AAEvD,IAAM,cAAwB;CAC5B,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,WAAW,aAAa;CAC9B,MAAM,WAAW,aAAa;CAC9B,MAAM,EAAE,SAAS,qBAAqB,SAAS;CAC/C,MAAM,oBAAoB,eAAe,OAAO;CAChD,MAAM,cAAc,QAAM,YAAY,OAAO,WAAW,OAAO;CAE/D,MAAM,EAAE,YAAY,gBAA2B,UAAU,MAAM,OAAO;CAOtE,MAAM,EACJ,UACA,cACA,UACA,WAAW,EAAE,SAAS,aATX,QAAyB;EACpC,MAAM;EACN,UAAU,YAAY,YAAY;EACnC,CAAC;CASF,MAAM,cAAc,OAAO,SAAiD;AAC1E,MAAI;AACF,UAAO,MAAM,QAAQ,KAAK;WACnB,KAAK;AACZ,SAAM,mBAAmB,IAAI;;;CAIjC,MAAM,YAAY,kBAAkB;AAClC,WAAS,GAAG,QAAM,QAAQ,eAAe,YAAY,QAAQ;IAC5D,CAAC,SAAS,CAAC;CAEd,MAAM,WAAW,YACf,OAAO,SAA0B;AAC/B,MAAI;GACF,MAAM,SAAS,MAAM,cAAc,KAAK;AACxC,OAAI,UAAU,OAAO,YAAY,OAAO,MACtC,UAAS,OAAO,UAAU,OAAO,MAAM;AAEzC,cAAW;UACL;AACN,YAAS,QAAQ;IACf,MAAM;IAEN,SAAS;IACV,CAAC;;IAGN;EAAC;EAAa;EAAU;EAAU,CACnC;AAED,QAAO,CAAC,OACN,oBAAC,UAAD,EAAY,CAAA,GAEZ,oBAAC,gBAAD,EAAA,UACE,oBAAC,mBAAD,EAAA,UACE,qBAAC,cAAD,EAAA,UAAA;EACE,oBAAC,iBAAD,EAAmB,CAAA;EACnB,oBAAC,WAAD;GACU;GACM;GACL;GACC;GACA;GACV,CAAA;EACD,qBACC,qBAAC,YAAD;GAAY,OAAM;GAAS,IAAI;IAAE,IAAI;IAAG,UAAU;IAAI;GAAE,SAAQ;aAAhE,CACG,EAAE,gCAAgC,EACnC,oBAAC,QAAD;IAAM,MAAM;IAAa,IAAI,EAAE,IAAI,GAAG;cACnC,EAAE,4BAA4B;IAC1B,CAAA,CACI;;EAEF,EAAA,CAAA,EACG,CAAA,EACL,CAAA"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
export declare const SecurityContainer:
|
|
2
|
-
export declare const SecurityForm:
|
|
3
|
-
export declare const SecurityTextField:
|
|
1
|
+
export declare const SecurityContainer: import('@emotion/styled').StyledComponent<import('@mui/system').BoxOwnProps<import('@mui/material').Theme> & Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof import('@mui/system').BoxOwnProps<import('@mui/material').Theme>> & import('@mui/system').MUIStyledCommonProps<import('@mui/material/styles/createTheme').Theme>, {}, {}>;
|
|
2
|
+
export declare const SecurityForm: import('@emotion/styled').StyledComponent<import('@mui/system').MUIStyledCommonProps<import('@mui/material/styles/createTheme').Theme>, import('react').DetailedHTMLProps<import('react').FormHTMLAttributes<HTMLFormElement>, HTMLFormElement>, {}>;
|
|
3
|
+
export declare const SecurityTextField: import('@emotion/styled').StyledComponent<{
|
|
4
|
+
variant?: import('@mui/material').TextFieldVariants | undefined;
|
|
5
|
+
} & Omit<import('@mui/material').OutlinedTextFieldProps | import('@mui/material').FilledTextFieldProps | import('@mui/material').StandardTextFieldProps, "variant"> & import('@mui/system').MUIStyledCommonProps<import('@mui/material/styles/createTheme').Theme>, {}, {}>;
|
|
@@ -11,7 +11,7 @@ var SecurityContainer = (0, _mui_material_styles.styled)(_mui_material.Box)(({ t
|
|
|
11
11
|
padding: theme.spacing(2),
|
|
12
12
|
backgroundColor: theme.palette.background.default
|
|
13
13
|
}));
|
|
14
|
-
var SecurityForm = (0, _mui_material_styles.styled)(
|
|
14
|
+
var SecurityForm = (0, _mui_material_styles.styled)("form")(({ theme }) => ({
|
|
15
15
|
width: "100%",
|
|
16
16
|
maxWidth: 420,
|
|
17
17
|
padding: theme.spacing(4),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","names":[],"sources":["../../../src/sections/Security/styles.ts"],"sourcesContent":["import { Box, TextField } from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nexport const SecurityContainer = styled(Box)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: '100%',\n padding: theme.spacing(2),\n backgroundColor: theme.palette.background.default,\n}));\n\nexport const SecurityForm = styled(
|
|
1
|
+
{"version":3,"file":"styles.js","names":[],"sources":["../../../src/sections/Security/styles.ts"],"sourcesContent":["import { Box, TextField } from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nexport const SecurityContainer = styled(Box)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: '100%',\n padding: theme.spacing(2),\n backgroundColor: theme.palette.background.default,\n}));\n\nexport const SecurityForm = styled('form')(({ theme }) => ({\n width: '100%',\n maxWidth: 420,\n padding: theme.spacing(4),\n backgroundColor: theme.palette.background.paper,\n borderRadius: theme.shape.borderRadius,\n boxShadow: theme.shadows[3],\n}));\n\nexport const SecurityTextField = styled(TextField)(({ theme }) => ({\n width: '100%',\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n}));\n"],"mappings":";;;;AAGA,IAAa,qBAAA,GAAA,qBAAA,QAA2B,cAAA,IAAI,EAAE,EAAE,aAAa;CAC3D,SAAS;CACT,eAAe;CACf,YAAY;CACZ,gBAAgB;CAChB,WAAW;CACX,SAAS,MAAM,QAAQ,EAAE;CACzB,iBAAiB,MAAM,QAAQ,WAAW;CAC3C,EAAE;AAEH,IAAa,gBAAA,GAAA,qBAAA,QAAsB,OAAO,EAAE,EAAE,aAAa;CACzD,OAAO;CACP,UAAU;CACV,SAAS,MAAM,QAAQ,EAAE;CACzB,iBAAiB,MAAM,QAAQ,WAAW;CAC1C,cAAc,MAAM,MAAM;CAC1B,WAAW,MAAM,QAAQ;CAC1B,EAAE;AAEH,IAAa,qBAAA,GAAA,qBAAA,QAA2B,cAAA,UAAU,EAAE,EAAE,aAAa;CACjE,OAAO;CACP,WAAW,MAAM,QAAQ,EAAE;CAC3B,cAAc,MAAM,QAAQ,EAAE;CAC/B,EAAE"}
|
|
@@ -10,7 +10,7 @@ var SecurityContainer = styled(Box)(({ theme }) => ({
|
|
|
10
10
|
padding: theme.spacing(2),
|
|
11
11
|
backgroundColor: theme.palette.background.default
|
|
12
12
|
}));
|
|
13
|
-
var SecurityForm = styled(
|
|
13
|
+
var SecurityForm = styled("form")(({ theme }) => ({
|
|
14
14
|
width: "100%",
|
|
15
15
|
maxWidth: 420,
|
|
16
16
|
padding: theme.spacing(4),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.mjs","names":[],"sources":["../../../src/sections/Security/styles.ts"],"sourcesContent":["import { Box, TextField } from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nexport const SecurityContainer = styled(Box)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: '100%',\n padding: theme.spacing(2),\n backgroundColor: theme.palette.background.default,\n}));\n\nexport const SecurityForm = styled(
|
|
1
|
+
{"version":3,"file":"styles.mjs","names":[],"sources":["../../../src/sections/Security/styles.ts"],"sourcesContent":["import { Box, TextField } from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nexport const SecurityContainer = styled(Box)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: '100%',\n padding: theme.spacing(2),\n backgroundColor: theme.palette.background.default,\n}));\n\nexport const SecurityForm = styled('form')(({ theme }) => ({\n width: '100%',\n maxWidth: 420,\n padding: theme.spacing(4),\n backgroundColor: theme.palette.background.paper,\n borderRadius: theme.shape.borderRadius,\n boxShadow: theme.shadows[3],\n}));\n\nexport const SecurityTextField = styled(TextField)(({ theme }) => ({\n width: '100%',\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n}));\n"],"mappings":";;;AAGA,IAAa,oBAAoB,OAAO,IAAI,EAAE,EAAE,aAAa;CAC3D,SAAS;CACT,eAAe;CACf,YAAY;CACZ,gBAAgB;CAChB,WAAW;CACX,SAAS,MAAM,QAAQ,EAAE;CACzB,iBAAiB,MAAM,QAAQ,WAAW;CAC3C,EAAE;AAEH,IAAa,eAAe,OAAO,OAAO,EAAE,EAAE,aAAa;CACzD,OAAO;CACP,UAAU;CACV,SAAS,MAAM,QAAQ,EAAE;CACzB,iBAAiB,MAAM,QAAQ,WAAW;CAC1C,cAAc,MAAM,MAAM;CAC1B,WAAW,MAAM,QAAQ;CAC1B,EAAE;AAEH,IAAa,oBAAoB,OAAO,UAAU,EAAE,EAAE,aAAa;CACjE,OAAO;CACP,WAAW,MAAM,QAAQ,EAAE;CAC3B,cAAc,MAAM,QAAQ,EAAE;CAC/B,EAAE"}
|
package/build/types/index.d.ts
CHANGED