@openedx/frontend-app-authn 1.0.0-alpha.6 → 1.0.0-alpha.7
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/Main.js +1 -3
- package/dist/Main.js.map +1 -1
- package/dist/common-components/EmbeddedRegistrationRoute.js +2 -2
- package/dist/common-components/EmbeddedRegistrationRoute.js.map +1 -1
- package/dist/common-components/EnterpriseSSO.js +6 -3
- package/dist/common-components/EnterpriseSSO.js.map +1 -1
- package/dist/common-components/PasswordField.d.ts +17 -9
- package/dist/common-components/PasswordField.js +10 -6
- package/dist/common-components/PasswordField.js.map +1 -1
- package/dist/common-components/RedirectLogistration.js +7 -3
- package/dist/common-components/RedirectLogistration.js.map +1 -1
- package/dist/common-components/SocialAuthProviders.d.ts +2 -2
- package/dist/common-components/SocialAuthProviders.js +5 -4
- package/dist/common-components/SocialAuthProviders.js.map +1 -1
- package/dist/common-components/ThirdPartyAuth.js +3 -2
- package/dist/common-components/ThirdPartyAuth.js.map +1 -1
- package/dist/common-components/ThirdPartyAuthAlert.d.ts +2 -2
- package/dist/common-components/ThirdPartyAuthAlert.js +4 -4
- package/dist/common-components/ThirdPartyAuthAlert.js.map +1 -1
- package/dist/common-components/UnAuthOnlyRoute.js +5 -4
- package/dist/common-components/UnAuthOnlyRoute.js.map +1 -1
- package/dist/common-components/components/ThirdPartyAuthContext.d.ts +31 -0
- package/dist/common-components/components/ThirdPartyAuthContext.js +84 -0
- package/dist/common-components/components/ThirdPartyAuthContext.js.map +1 -0
- package/dist/common-components/data/api.d.ts +6 -0
- package/dist/common-components/data/api.js +26 -0
- package/dist/common-components/data/api.js.map +1 -0
- package/dist/common-components/data/apiHook.d.ts +9 -0
- package/dist/common-components/data/apiHook.js +14 -0
- package/dist/common-components/data/apiHook.js.map +1 -0
- package/dist/common-components/data/queryKeys.d.ts +4 -0
- package/dist/common-components/data/queryKeys.js +6 -0
- package/dist/common-components/data/queryKeys.js.map +1 -0
- package/dist/common-components/index.d.ts +0 -3
- package/dist/common-components/index.js +0 -3
- package/dist/common-components/index.js.map +1 -1
- package/dist/constants.d.ts +13 -0
- package/dist/constants.js +15 -0
- package/dist/constants.js.map +1 -1
- package/dist/data/constants.d.ts +0 -8
- package/dist/data/constants.js +0 -9
- package/dist/data/constants.js.map +1 -1
- package/dist/data/utils/dataUtils.d.ts +1 -0
- package/dist/data/utils/dataUtils.js +14 -0
- package/dist/data/utils/dataUtils.js.map +1 -1
- package/dist/data/utils/index.d.ts +1 -2
- package/dist/data/utils/index.js +1 -2
- package/dist/data/utils/index.js.map +1 -1
- package/dist/forgot-password/ForgotPasswordPage.d.ts +2 -36
- package/dist/forgot-password/ForgotPasswordPage.js +45 -44
- package/dist/forgot-password/ForgotPasswordPage.js.map +1 -1
- package/dist/forgot-password/data/api.d.ts +2 -0
- package/dist/forgot-password/data/{service.js → api.js} +13 -14
- package/dist/forgot-password/data/api.js.map +1 -0
- package/dist/forgot-password/data/apiHook.d.ts +16 -0
- package/dist/forgot-password/data/apiHook.js +26 -0
- package/dist/forgot-password/data/apiHook.js.map +1 -0
- package/dist/forgot-password/index.d.ts +0 -4
- package/dist/forgot-password/index.js +0 -4
- package/dist/forgot-password/index.js.map +1 -1
- package/dist/forgot-password/messages.js +1 -1
- package/dist/forgot-password/messages.js.map +1 -1
- package/dist/login/ChangePasswordPrompt.js +11 -5
- package/dist/login/ChangePasswordPrompt.js.map +1 -1
- package/dist/login/LoginPage.d.ts +12 -10
- package/dist/login/LoginPage.js +85 -127
- package/dist/login/LoginPage.js.map +1 -1
- package/dist/login/components/LoginContext.d.ts +21 -0
- package/dist/login/components/LoginContext.js +28 -0
- package/dist/login/components/LoginContext.js.map +1 -0
- package/dist/login/data/api.d.ts +2 -0
- package/dist/login/data/api.js +27 -0
- package/dist/login/data/api.js.map +1 -0
- package/dist/login/data/apiHook.d.ts +13 -0
- package/dist/login/data/apiHook.js +57 -0
- package/dist/login/data/apiHook.js.map +1 -0
- package/dist/login/index.d.ts +0 -3
- package/dist/login/index.js +0 -3
- package/dist/login/index.js.map +1 -1
- package/dist/logistration/Logistration.d.ts +5 -32
- package/dist/logistration/Logistration.js +28 -54
- package/dist/logistration/Logistration.js.map +1 -1
- package/dist/progressive-profiling/ProgressiveProfiling.d.ts +2 -46
- package/dist/progressive-profiling/ProgressiveProfiling.js +47 -71
- package/dist/progressive-profiling/ProgressiveProfiling.js.map +1 -1
- package/dist/progressive-profiling/ProgressiveProfilingPageModal.js +8 -1
- package/dist/progressive-profiling/ProgressiveProfilingPageModal.js.map +1 -1
- package/dist/progressive-profiling/components/ProgressiveProfilingContext.d.ts +18 -0
- package/dist/progressive-profiling/components/ProgressiveProfilingContext.js +52 -0
- package/dist/progressive-profiling/components/ProgressiveProfilingContext.js.map +1 -0
- package/dist/progressive-profiling/data/api.d.ts +2 -0
- package/dist/progressive-profiling/data/{service.js → api.js} +11 -12
- package/dist/progressive-profiling/data/api.js.map +1 -0
- package/dist/progressive-profiling/data/apiHook.d.ts +10 -0
- package/dist/progressive-profiling/data/apiHook.js +36 -0
- package/dist/progressive-profiling/data/apiHook.js.map +1 -0
- package/dist/progressive-profiling/index.d.ts +0 -2
- package/dist/progressive-profiling/index.js +0 -2
- package/dist/progressive-profiling/index.js.map +1 -1
- package/dist/register/RegistrationFields/CountryField/CountryField.d.ts +1 -1
- package/dist/register/RegistrationFields/CountryField/CountryField.js +5 -7
- package/dist/register/RegistrationFields/CountryField/CountryField.js.map +1 -1
- package/dist/register/RegistrationFields/EmailField/EmailField.js +17 -9
- package/dist/register/RegistrationFields/EmailField/EmailField.js.map +1 -1
- package/dist/register/RegistrationFields/NameField/NameField.js +14 -7
- package/dist/register/RegistrationFields/NameField/NameField.js.map +1 -1
- package/dist/register/RegistrationFields/NameField/validator.d.ts +1 -0
- package/dist/register/RegistrationFields/NameField/validator.js +4 -0
- package/dist/register/RegistrationFields/NameField/validator.js.map +1 -1
- package/dist/register/RegistrationFields/UsernameField/UsernameField.js +20 -14
- package/dist/register/RegistrationFields/UsernameField/UsernameField.js.map +1 -1
- package/dist/register/RegistrationPage.d.ts +1 -1
- package/dist/register/RegistrationPage.js +102 -59
- package/dist/register/RegistrationPage.js.map +1 -1
- package/dist/register/components/RegisterContext.d.ts +8 -0
- package/dist/register/components/RegisterContext.js +167 -0
- package/dist/register/components/RegisterContext.js.map +1 -0
- package/dist/register/components/RegistrationFailure.js +4 -1
- package/dist/register/components/RegistrationFailure.js.map +1 -1
- package/dist/register/data/api.d.ts +9 -0
- package/dist/register/data/api.js +45 -0
- package/dist/register/data/api.js.map +1 -0
- package/dist/register/data/apiHook.d.ts +33 -0
- package/dist/register/data/apiHook.js +66 -0
- package/dist/register/data/apiHook.js.map +1 -0
- package/dist/register/data/constants.d.ts +1 -0
- package/dist/register/data/constants.js +1 -0
- package/dist/register/data/constants.js.map +1 -1
- package/dist/register/index.d.ts +0 -2
- package/dist/register/index.js +0 -3
- package/dist/register/index.js.map +1 -1
- package/dist/register/messages.d.ts +10 -0
- package/dist/register/messages.js +10 -0
- package/dist/register/messages.js.map +1 -1
- package/dist/register/types.d.ts +74 -0
- package/dist/register/types.js +2 -0
- package/dist/register/types.js.map +1 -0
- package/dist/reset-password/ResetPasswordPage.d.ts +2 -32
- package/dist/reset-password/ResetPasswordPage.js +90 -58
- package/dist/reset-password/ResetPasswordPage.js.map +1 -1
- package/dist/reset-password/data/api.d.ts +4 -0
- package/dist/reset-password/data/api.js +57 -0
- package/dist/reset-password/data/api.js.map +1 -0
- package/dist/reset-password/data/apiHook.d.ts +31 -0
- package/dist/reset-password/data/apiHook.js +74 -0
- package/dist/reset-password/data/apiHook.js.map +1 -0
- package/dist/reset-password/index.d.ts +0 -4
- package/dist/reset-password/index.js +0 -4
- package/dist/reset-password/index.js.map +1 -1
- package/dist/routes.d.ts +1 -0
- package/dist/routes.js +15 -14
- package/dist/routes.js.map +1 -1
- package/dist/sass/_registration.scss +8 -10
- package/dist/slots/LoginComponentSlot/index.d.ts +12 -0
- package/dist/slots/LoginComponentSlot/index.js +11 -0
- package/dist/slots/LoginComponentSlot/index.js.map +1 -0
- package/package.json +18 -14
- package/dist/common-components/data/actions.d.ts +0 -26
- package/dist/common-components/data/actions.js +0 -22
- package/dist/common-components/data/actions.js.map +0 -1
- package/dist/common-components/data/reducers.d.ts +0 -62
- package/dist/common-components/data/reducers.js +0 -39
- package/dist/common-components/data/reducers.js.map +0 -1
- package/dist/common-components/data/sagas.d.ts +0 -12
- package/dist/common-components/data/sagas.js +0 -21
- package/dist/common-components/data/sagas.js.map +0 -1
- package/dist/common-components/data/selectors.d.ts +0 -98
- package/dist/common-components/data/selectors.js +0 -11
- package/dist/common-components/data/selectors.js.map +0 -1
- package/dist/common-components/data/service.d.ts +0 -5
- package/dist/common-components/data/service.js +0 -31
- package/dist/common-components/data/service.js.map +0 -1
- package/dist/data/configureStore.d.ts +0 -3
- package/dist/data/configureStore.js +0 -24
- package/dist/data/configureStore.js.map +0 -1
- package/dist/data/reducers.d.ts +0 -254
- package/dist/data/reducers.js +0 -17
- package/dist/data/reducers.js.map +0 -1
- package/dist/data/sagas.d.ts +0 -1
- package/dist/data/sagas.js +0 -18
- package/dist/data/sagas.js.map +0 -1
- package/dist/data/utils/reduxUtils.d.ts +0 -15
- package/dist/data/utils/reduxUtils.js +0 -29
- package/dist/data/utils/reduxUtils.js.map +0 -1
- package/dist/forgot-password/data/actions.d.ts +0 -30
- package/dist/forgot-password/data/actions.js +0 -26
- package/dist/forgot-password/data/actions.js.map +0 -1
- package/dist/forgot-password/data/reducers.d.ts +0 -13
- package/dist/forgot-password/data/reducers.js +0 -46
- package/dist/forgot-password/data/reducers.js.map +0 -1
- package/dist/forgot-password/data/sagas.d.ts +0 -4
- package/dist/forgot-password/data/sagas.js +0 -28
- package/dist/forgot-password/data/sagas.js.map +0 -1
- package/dist/forgot-password/data/selectors.d.ts +0 -23
- package/dist/forgot-password/data/selectors.js +0 -5
- package/dist/forgot-password/data/selectors.js.map +0 -1
- package/dist/forgot-password/data/service.d.ts +0 -1
- package/dist/forgot-password/data/service.js.map +0 -1
- package/dist/login/data/actions.d.ts +0 -36
- package/dist/login/data/actions.js +0 -32
- package/dist/login/data/actions.js.map +0 -1
- package/dist/login/data/reducers.d.ts +0 -82
- package/dist/login/data/reducers.js +0 -44
- package/dist/login/data/reducers.js.map +0 -1
- package/dist/login/data/sagas.d.ts +0 -10
- package/dist/login/data/sagas.js +0 -34
- package/dist/login/data/sagas.js.map +0 -1
- package/dist/login/data/service.d.ts +0 -4
- package/dist/login/data/service.js +0 -32
- package/dist/login/data/service.js.map +0 -1
- package/dist/progressive-profiling/data/actions.d.ts +0 -19
- package/dist/progressive-profiling/data/actions.js +0 -18
- package/dist/progressive-profiling/data/actions.js.map +0 -1
- package/dist/progressive-profiling/data/reducers.d.ts +0 -22
- package/dist/progressive-profiling/data/reducers.js +0 -23
- package/dist/progressive-profiling/data/reducers.js.map +0 -1
- package/dist/progressive-profiling/data/sagas.d.ts +0 -4
- package/dist/progressive-profiling/data/sagas.js +0 -17
- package/dist/progressive-profiling/data/sagas.js.map +0 -1
- package/dist/progressive-profiling/data/selectors.d.ts +0 -39
- package/dist/progressive-profiling/data/selectors.js +0 -9
- package/dist/progressive-profiling/data/selectors.js.map +0 -1
- package/dist/progressive-profiling/data/service.d.ts +0 -1
- package/dist/progressive-profiling/data/service.js.map +0 -1
- package/dist/register/data/actions.d.ts +0 -80
- package/dist/register/data/actions.js +0 -69
- package/dist/register/data/actions.js.map +0 -1
- package/dist/register/data/reducers.d.ts +0 -237
- package/dist/register/data/reducers.js +0 -86
- package/dist/register/data/reducers.js.map +0 -1
- package/dist/register/data/sagas.d.ts +0 -19
- package/dist/register/data/sagas.js +0 -45
- package/dist/register/data/sagas.js.map +0 -1
- package/dist/register/data/selectors.d.ts +0 -26
- package/dist/register/data/selectors.js +0 -25
- package/dist/register/data/selectors.js.map +0 -1
- package/dist/register/data/service.d.ts +0 -8
- package/dist/register/data/service.js +0 -46
- package/dist/register/data/service.js.map +0 -1
- package/dist/reset-password/data/actions.d.ts +0 -56
- package/dist/reset-password/data/actions.js +0 -41
- package/dist/reset-password/data/actions.js.map +0 -1
- package/dist/reset-password/data/reducers.d.ts +0 -19
- package/dist/reset-password/data/reducers.js +0 -25
- package/dist/reset-password/data/reducers.js.map +0 -1
- package/dist/reset-password/data/sagas.d.ts +0 -7
- package/dist/reset-password/data/sagas.js +0 -63
- package/dist/reset-password/data/sagas.js.map +0 -1
- package/dist/reset-password/data/selectors.d.ts +0 -23
- package/dist/reset-password/data/selectors.js +0 -5
- package/dist/reset-password/data/selectors.js.map +0 -1
- package/dist/reset-password/data/service.d.ts +0 -3
- package/dist/reset-password/data/service.js +0 -62
- package/dist/reset-password/data/service.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ForgotPasswordPage.js","sourceRoot":"","sources":["../../src/forgot-password/ForgotPasswordPage.jsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState } from 'react';\nimport { connect } from 'react-redux';\n\nimport {\n useAppConfig,\n getSiteConfig, sendPageEvent, sendTrackEvent, useIntl\n} from '@openedx/frontend-base';\nimport {\n Form,\n Hyperlink,\n Icon,\n StatefulButton,\n Tab,\n Tabs,\n} from '@openedx/paragon';\nimport { ChevronLeft } from '@openedx/paragon/icons';\nimport PropTypes from 'prop-types';\nimport { Helmet } from 'react-helmet';\nimport { useNavigate } from 'react-router-dom';\n\nimport BaseContainer from '../base-container';\nimport { FormGroup } from '../common-components';\nimport { DEFAULT_STATE, LOGIN_PAGE, VALID_EMAIL_REGEX } from '../data/constants';\nimport { updatePathWithQueryParams, windowScrollTo } from '../data/utils';\nimport { forgotPassword, setForgotPasswordFormData } from './data/actions';\nimport { forgotPasswordResultSelector } from './data/selectors';\nimport ForgotPasswordAlert from './ForgotPasswordAlert';\nimport messages from './messages';\n\nconst ForgotPasswordPage = (props) => {\n const platformName = getSiteConfig().siteName;\n const emailRegex = new RegExp(VALID_EMAIL_REGEX, 'i');\n const {\n status, submitState, emailValidationError,\n } = props;\n\n const { formatMessage } = useIntl();\n const [email, setEmail] = useState(props.email);\n const [bannerEmail, setBannerEmail] = useState('');\n const [formErrors, setFormErrors] = useState('');\n const [validationError, setValidationError] = useState(emailValidationError);\n const navigate = useNavigate();\n\n useEffect(() => {\n sendPageEvent('login_and_registration', 'reset');\n sendTrackEvent('edx.bi.password_reset_form.viewed', { category: 'user-engagement' });\n }, []);\n\n useEffect(() => {\n setValidationError(emailValidationError);\n }, [emailValidationError]);\n\n useEffect(() => {\n if (status === 'complete') {\n setEmail('');\n }\n }, [status]);\n\n const getValidationMessage = (value) => {\n let error = '';\n\n if (value === '') {\n error = formatMessage(messages['forgot.password.empty.email.field.error']);\n } else if (!emailRegex.test(value)) {\n error = formatMessage(messages['forgot.password.page.invalid.email.message']);\n }\n\n return error;\n };\n\n const handleBlur = () => {\n props.setForgotPasswordFormData({ email, emailValidationError: getValidationMessage(email) });\n };\n\n const handleFocus = () => props.setForgotPasswordFormData({ emailValidationError: '' });\n\n const handleSubmit = (e) => {\n e.preventDefault();\n setBannerEmail(email);\n\n const error = getValidationMessage(email);\n if (error) {\n setFormErrors(error);\n props.setForgotPasswordFormData({ email, emailValidationError: error });\n windowScrollTo({ left: 0, top: 0, behavior: 'smooth' });\n } else {\n props.forgotPassword(email);\n }\n };\n\n const tabTitle = (\n <div className=\"d-inline-flex flex-wrap align-items-center\">\n <Icon src={ChevronLeft} />\n <span className=\"ml-2\">{formatMessage(messages['sign.in.text'])}</span>\n </div>\n );\n\n return (\n <BaseContainer>\n <Helmet>\n <title>\n {formatMessage(\n messages['forgot.password.page.title'],\n { siteName: getSiteConfig().siteName }\n )}\n </title>\n </Helmet>\n <div>\n <Tabs activeKey=\"\" id=\"controlled-tab\" onSelect={(key) => navigate(updatePathWithQueryParams(key))}>\n <Tab title={tabTitle} eventKey={LOGIN_PAGE} />\n </Tabs>\n <div id=\"main-content\" className=\"main-content\">\n <Form id=\"forget-password-form\" name=\"forget-password-form\" className=\"mw-xs\">\n <ForgotPasswordAlert email={bannerEmail} emailError={formErrors} status={status} />\n <h2 className=\"h4\">\n {formatMessage(messages['forgot.password.page.heading'])}\n </h2>\n <p className=\"mb-4\">\n {formatMessage(messages['forgot.password.page.instructions'])}\n </p>\n <FormGroup\n floatingLabel={formatMessage(messages['forgot.password.page.email.field.label'])}\n name=\"email\"\n value={email}\n autoComplete=\"on\"\n errorMessage={validationError}\n handleChange={(e) => setEmail(e.target.value)}\n handleBlur={handleBlur}\n handleFocus={handleFocus}\n helpText={[formatMessage(messages['forgot.password.email.help.text'], { platformName })]}\n />\n <StatefulButton\n id=\"submit-forget-password\"\n name=\"submit-forget-password\"\n type=\"submit\"\n variant=\"brand\"\n className=\"forgot-password--button\"\n state={submitState}\n labels={{\n default: formatMessage(messages['forgot.password.page.submit.button']),\n pending: '',\n }}\n onClick={handleSubmit}\n onMouseDown={(e) => e.preventDefault()}\n />\n {(useAppConfig().LOGIN_ISSUE_SUPPORT_LINK) && (\n <Hyperlink\n id=\"forgot-password\"\n name=\"forgot-password\"\n className=\"ml-4 font-weight-500 text-body\"\n destination={useAppConfig().LOGIN_ISSUE_SUPPORT_LINK}\n target=\"_blank\"\n showLaunchIcon={false}\n >\n {formatMessage(messages['need.help.sign.in.text'])}\n </Hyperlink>\n )}\n <p className=\"mt-5.5 small text-gray-700\">\n {formatMessage(messages['additional.help.text'], { platformName })}\n <span>\n <Hyperlink isInline destination={`mailto:${useAppConfig().INFO_EMAIL}`}>{useAppConfig().INFO_EMAIL}</Hyperlink>\n </span>\n </p>\n </Form>\n </div>\n </div>\n </BaseContainer>\n );\n};\n\nForgotPasswordPage.propTypes = {\n email: PropTypes.string,\n emailValidationError: PropTypes.string,\n forgotPassword: PropTypes.func.isRequired,\n setForgotPasswordFormData: PropTypes.func.isRequired,\n status: PropTypes.string,\n submitState: PropTypes.string,\n};\n\nForgotPasswordPage.defaultProps = {\n email: '',\n emailValidationError: '',\n status: null,\n submitState: DEFAULT_STATE,\n};\n\nexport default connect(\n forgotPasswordResultSelector,\n {\n forgotPassword,\n setForgotPasswordFormData,\n },\n)(ForgotPasswordPage);\n"]}
|
|
1
|
+
{"version":3,"file":"ForgotPasswordPage.js","sourceRoot":"","sources":["../../src/forgot-password/ForgotPasswordPage.jsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState } from 'react';\n\nimport {\n getSiteConfig, getUrlByRouteRole, sendPageEvent, sendTrackEvent, useAppConfig, useIntl,\n} from '@openedx/frontend-base';\nimport {\n Form,\n Hyperlink,\n Icon,\n StatefulButton,\n Tab,\n Tabs,\n} from '@openedx/paragon';\nimport { ChevronLeft } from '@openedx/paragon/icons';\nimport { Helmet } from 'react-helmet';\nimport { useLocation, useNavigate } from 'react-router-dom';\n\nimport { useForgotPassword } from './data/apiHook';\nimport ForgotPasswordAlert from './ForgotPasswordAlert';\nimport messages from './messages';\nimport BaseContainer from '../base-container';\nimport { FormGroup } from '../common-components';\nimport { loginPath, loginRole } from '../constants';\nimport { VALID_EMAIL_REGEX } from '../data/constants';\nimport { updatePathWithQueryParams, windowScrollTo } from '../data/utils';\n\nconst ForgotPasswordPage = () => {\n const platformName = getSiteConfig().siteName;\n const emailRegex = new RegExp(VALID_EMAIL_REGEX, 'i');\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const location = useLocation();\n const appConfig = useAppConfig();\n const [email, setEmail] = useState('');\n const [bannerEmail, setBannerEmail] = useState('');\n const [formErrors, setFormErrors] = useState('');\n const [validationError, setValidationError] = useState('');\n const [status, setStatus] = useState(location.state?.status || null);\n\n // React Query hook for forgot password\n const { mutate: sendForgotPassword, isPending: isSending } = useForgotPassword();\n\n const submitState = isSending ? 'pending' : 'default';\n\n useEffect(() => {\n sendPageEvent('login_and_registration', 'reset');\n sendTrackEvent('edx.bi.password_reset_form.viewed', { category: 'user-engagement' });\n }, []);\n\n useEffect(() => {\n if (status === 'complete') {\n setEmail('');\n }\n }, [status]);\n\n const getValidationMessage = (value) => {\n let error = '';\n\n if (value === '') {\n error = formatMessage(messages['forgot.password.empty.email.field.error']);\n } else if (!emailRegex.test(value)) {\n error = formatMessage(messages['forgot.password.page.invalid.email.message']);\n }\n\n return error;\n };\n\n const handleBlur = () => {\n setValidationError(getValidationMessage(email));\n };\n\n const handleFocus = () => {\n setValidationError('');\n };\n\n const handleSubmit = (e) => {\n e.preventDefault();\n setBannerEmail(email);\n\n const validateError = getValidationMessage(email);\n if (validateError) {\n setFormErrors(validateError);\n setValidationError(validateError);\n windowScrollTo({ left: 0, top: 0, behavior: 'smooth' });\n } else {\n setFormErrors('');\n sendForgotPassword(email, {\n onSuccess: (data, emailUsed) => {\n setStatus('complete');\n setBannerEmail(emailUsed);\n setFormErrors('');\n },\n onError: (error) => {\n if (error.response && error.response.status === 403) {\n setStatus('forbidden');\n } else {\n setStatus('server-error');\n }\n },\n });\n }\n };\n\n const tabTitle = (\n <div className=\"d-inline-flex flex-wrap align-items-center\">\n <Icon src={ChevronLeft} />\n <span className=\"ml-2\">{formatMessage(messages['sign.in.text'])}</span>\n </div>\n );\n\n return (\n <BaseContainer>\n <Helmet>\n <title>{formatMessage(messages['forgot.password.page.title'],\n { siteName: getSiteConfig().siteName })}\n </title>\n </Helmet>\n <div>\n <Tabs activeKey=\"\" id=\"controlled-tab\" onSelect={() => navigate(updatePathWithQueryParams(getUrlByRouteRole(loginRole)))}>\n <Tab title={tabTitle} eventKey={loginPath} />\n </Tabs>\n <div id=\"main-content\" className=\"main-content\">\n <Form id=\"forget-password-form\" name=\"forget-password-form\" className=\"mw-xs\">\n <ForgotPasswordAlert email={bannerEmail} emailError={formErrors} status={status} />\n <h2 className=\"h4\">\n {formatMessage(messages['forgot.password.page.heading'])}\n </h2>\n <p className=\"mb-4\">\n {formatMessage(messages['forgot.password.page.instructions'])}\n </p>\n <FormGroup\n floatingLabel={formatMessage(messages['forgot.password.page.email.field.label'])}\n name=\"email\"\n value={email}\n autoComplete=\"on\"\n errorMessage={validationError}\n handleChange={(e) => setEmail(e.target.value)}\n handleBlur={handleBlur}\n handleFocus={handleFocus}\n helpText={[formatMessage(messages['forgot.password.email.help.text'], { platformName })]}\n />\n <StatefulButton\n id=\"submit-forget-password\"\n name=\"submit-forget-password\"\n type=\"submit\"\n variant=\"brand\"\n className=\"forgot-password--button\"\n state={submitState}\n labels={{\n default: formatMessage(messages['forgot.password.page.submit.button']),\n pending: '',\n }}\n onClick={handleSubmit}\n onMouseDown={(e) => e.preventDefault()}\n />\n {(appConfig.LOGIN_ISSUE_SUPPORT_LINK) && (\n <Hyperlink\n id=\"forgot-password\"\n name=\"forgot-password\"\n className=\"ml-4 font-weight-500 text-body\"\n destination={appConfig.LOGIN_ISSUE_SUPPORT_LINK}\n target=\"_blank\"\n showLaunchIcon={false}\n >\n {formatMessage(messages['need.help.sign.in.text'])}\n </Hyperlink>\n )}\n <p className=\"mt-5.5 small text-gray-700\">\n {formatMessage(messages['additional.help.text'], { platformName })}\n <span className=\"mx-1\">\n <Hyperlink isInline destination={`mailto:${appConfig.INFO_EMAIL}`}>{appConfig.INFO_EMAIL}</Hyperlink>\n </span>\n </p>\n </Form>\n </div>\n </div>\n </BaseContainer>\n );\n};\n\nexport default ForgotPasswordPage;\n"]}
|
|
@@ -9,18 +9,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import { getAuthenticatedHttpClient, getSiteConfig } from '@openedx/frontend-base';
|
|
11
11
|
import formurlencoded from 'form-urlencoded';
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
throw (e);
|
|
22
|
-
});
|
|
23
|
-
return data;
|
|
12
|
+
const forgotPassword = (email) => __awaiter(void 0, void 0, void 0, function* () {
|
|
13
|
+
const requestConfig = {
|
|
14
|
+
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
15
|
+
isPublic: true,
|
|
16
|
+
};
|
|
17
|
+
const { data } = yield getAuthenticatedHttpClient()
|
|
18
|
+
.post(`${getSiteConfig().lmsBaseUrl}/account/password`, formurlencoded({ email }), requestConfig)
|
|
19
|
+
.catch((e) => {
|
|
20
|
+
throw (e);
|
|
24
21
|
});
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
return data;
|
|
23
|
+
});
|
|
24
|
+
export { forgotPassword, };
|
|
25
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/forgot-password/data/api.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,0BAA0B,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAE7C,MAAM,cAAc,GAAG,CAAO,KAAa,EAAE,EAAE;IAC7C,MAAM,aAAa,GAAG;QACpB,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;QAChE,QAAQ,EAAE,IAAI;KACf,CAAC;IAEF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,0BAA0B,EAAE;SAChD,IAAI,CACH,GAAG,aAAa,EAAE,CAAC,UAAU,mBAAmB,EAChD,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,EACzB,aAAa,CACd;SACA,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACX,MAAM,CAAC,CAAC,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IAEL,OAAO,IAAI,CAAC;AACd,CAAC,CAAA,CAAC;AAEF,OAAO,EACL,cAAc,GACf,CAAC","sourcesContent":["import { getAuthenticatedHttpClient, getSiteConfig } from '@openedx/frontend-base';\nimport formurlencoded from 'form-urlencoded';\n\nconst forgotPassword = async (email: string) => {\n const requestConfig = {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n isPublic: true,\n };\n\n const { data } = await getAuthenticatedHttpClient()\n .post(\n `${getSiteConfig().lmsBaseUrl}/account/password`,\n formurlencoded({ email }),\n requestConfig,\n )\n .catch((e) => {\n throw (e);\n });\n\n return data;\n};\n\nexport {\n forgotPassword,\n};\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
interface ForgotPasswordResult {
|
|
2
|
+
success: boolean;
|
|
3
|
+
message?: string;
|
|
4
|
+
}
|
|
5
|
+
interface UseForgotPasswordOptions {
|
|
6
|
+
onSuccess?: (data: ForgotPasswordResult, email: string) => void;
|
|
7
|
+
onError?: (error: Error) => void;
|
|
8
|
+
}
|
|
9
|
+
interface ApiError extends Error {
|
|
10
|
+
response?: {
|
|
11
|
+
status: number;
|
|
12
|
+
data: Record<string, unknown>;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
declare const useForgotPassword: (options?: UseForgotPasswordOptions) => import("@tanstack/react-query").UseMutationResult<any, ApiError, string, unknown>;
|
|
16
|
+
export { useForgotPassword, };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { logError, logInfo } from '@openedx/frontend-base';
|
|
2
|
+
import { useMutation } from '@tanstack/react-query';
|
|
3
|
+
import { forgotPassword } from './api';
|
|
4
|
+
const useForgotPassword = (options = {}) => useMutation({
|
|
5
|
+
mutationFn: (email) => (forgotPassword(email)),
|
|
6
|
+
onSuccess: (data, email) => {
|
|
7
|
+
if (options.onSuccess) {
|
|
8
|
+
options.onSuccess(data, email);
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
onError: (error) => {
|
|
12
|
+
var _a;
|
|
13
|
+
// Handle different error types like the saga did
|
|
14
|
+
if (((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 403) {
|
|
15
|
+
logInfo(error);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
logError(error);
|
|
19
|
+
}
|
|
20
|
+
if (options.onError) {
|
|
21
|
+
options.onError(error);
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
export { useForgotPassword, };
|
|
26
|
+
//# sourceMappingURL=apiHook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiHook.js","sourceRoot":"","sources":["../../../src/forgot-password/data/apiHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAmBvC,MAAM,iBAAiB,GAAG,CAAC,UAAoC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC;IAChF,UAAU,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAC7B,cAAc,CAAC,KAAK,CAAC,CACtB;IACD,SAAS,EAAE,CAAC,IAA0B,EAAE,KAAa,EAAE,EAAE;QACvD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC,KAAe,EAAE,EAAE;;QAC3B,iDAAiD;QACjD,IAAI,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,MAAK,GAAG,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,OAAO,EACL,iBAAiB,GAClB,CAAC","sourcesContent":["import { logError, logInfo } from '@openedx/frontend-base';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { forgotPassword } from './api';\n\ninterface ForgotPasswordResult {\n success: boolean,\n message?: string,\n}\n\ninterface UseForgotPasswordOptions {\n onSuccess?: (data: ForgotPasswordResult, email: string) => void,\n onError?: (error: Error) => void,\n}\n\ninterface ApiError extends Error {\n response?: {\n status: number,\n data: Record<string, unknown>,\n },\n}\n\nconst useForgotPassword = (options: UseForgotPasswordOptions = {}) => useMutation({\n mutationFn: (email: string) => (\n forgotPassword(email)\n ),\n onSuccess: (data: ForgotPasswordResult, email: string) => {\n if (options.onSuccess) {\n options.onSuccess(data, email);\n }\n },\n onError: (error: ApiError) => {\n // Handle different error types like the saga did\n if (error.response?.status === 403) {\n logInfo(error);\n } else {\n logError(error);\n }\n if (options.onError) {\n options.onError(error);\n }\n },\n});\n\nexport {\n useForgotPassword,\n};\n"]}
|
|
@@ -1,5 +1 @@
|
|
|
1
1
|
export { default as ForgotPasswordPage } from "./ForgotPasswordPage";
|
|
2
|
-
export { default as reducer } from "./data/reducers";
|
|
3
|
-
export { FORGOT_PASSWORD } from "./data/actions";
|
|
4
|
-
export { default as saga } from "./data/sagas";
|
|
5
|
-
export { storeName, forgotPasswordResultSelector } from "./data/selectors";
|
|
@@ -1,6 +1,2 @@
|
|
|
1
1
|
export { default as ForgotPasswordPage } from './ForgotPasswordPage';
|
|
2
|
-
export { default as reducer } from './data/reducers';
|
|
3
|
-
export { FORGOT_PASSWORD } from './data/actions';
|
|
4
|
-
export { default as saga } from './data/sagas';
|
|
5
|
-
export { storeName, forgotPasswordResultSelector } from './data/selectors';
|
|
6
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/forgot-password/index.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/forgot-password/index.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC","sourcesContent":["export { default as ForgotPasswordPage } from './ForgotPasswordPage';\n"]}
|
|
@@ -73,7 +73,7 @@ const messages = defineMessages({
|
|
|
73
73
|
},
|
|
74
74
|
'additional.help.text': {
|
|
75
75
|
id: 'additional.help.text',
|
|
76
|
-
defaultMessage: 'For additional help, contact {platformName} support at
|
|
76
|
+
defaultMessage: 'For additional help, contact {platformName} support at',
|
|
77
77
|
description: 'additional help text on forgot password page',
|
|
78
78
|
},
|
|
79
79
|
'sign.in.text': {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/forgot-password/messages.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,QAAQ,GAAG,cAAc,CAAC;IAC9B,4BAA4B,EAAE;QAC5B,EAAE,EAAE,4BAA4B;QAChC,cAAc,EAAE,8BAA8B;QAC9C,WAAW,EAAE,4BAA4B;KAC1C;IACD,8BAA8B,EAAE;QAC9B,EAAE,EAAE,8BAA8B;QAClC,cAAc,EAAE,gBAAgB;QAChC,WAAW,EAAE,gDAAgD;KAC9D;IACD,mCAAmC,EAAE;QACnC,EAAE,EAAE,mCAAmC;QACvC,cAAc,EAAE,sHAAsH;QACtI,WAAW,EAAE,gDAAgD;KAC9D;IACD,4CAA4C,EAAE;QAC5C,EAAE,EAAE,4CAA4C;QAChD,cAAc,EAAE,6BAA6B;QAC7C,WAAW,EAAE,gDAAgD;KAC9D;IACD,wCAAwC,EAAE;QACxC,EAAE,EAAE,wCAAwC;QAC5C,cAAc,EAAE,OAAO;QACvB,WAAW,EAAE,iDAAiD;KAC/D;IACD,oCAAoC,EAAE;QACpC,EAAE,EAAE,oCAAoC;QACxC,cAAc,EAAE,QAAQ;QACxB,WAAW,EAAE,kDAAkD;KAChE;IACD,mCAAmC,EAAE;QACnC,EAAE,EAAE,oCAAoC;QACxC,cAAc,EAAE,gCAAgC;QAChD,WAAW,EAAE,yCAAyC;KACvD;IACD,qCAAqC,EAAE;QACrC,EAAE,EAAE,qCAAqC;QACzC,cAAc,EAAE,oBAAoB;QACpC,WAAW,EAAE,+EAA+E;KAC7F;IACD,6CAA6C,EAAE;QAC7C,EAAE,EAAE,6CAA6C;QACjD,cAAc,EAAE,0EAA0E;QAC1F,WAAW,EAAE,8EAA8E;KAC5F;IACD,yCAAyC,EAAE;QACzC,EAAE,EAAE,yCAAyC;QAC7C,cAAc,EAAE,kBAAkB;QAClC,WAAW,EAAE,wEAAwE;KACtF;IACD,iCAAiC,EAAE;QACjC,EAAE,EAAE,iCAAiC;QACrC,cAAc,EAAE,4DAA4D;QAC5E,WAAW,EAAE,yBAAyB;KACvC;IACD,6BAA6B;IAC7B,4BAA4B,EAAE;QAC5B,EAAE,EAAE,4BAA4B;QAChC,cAAc,EAAE,kBAAkB;QAClC,WAAW,EAAE,4CAA4C;KAC1D;IACD,2BAA2B,EAAE;QAC3B,EAAE,EAAE,2BAA2B;QAC/B,cAAc,EAAE,2BAA2B;QAC3C,WAAW,EAAE,6BAA6B;KAC3C;IACD,wBAAwB,EAAE;QACxB,EAAE,EAAE,wBAAwB;QAC5B,cAAc,EAAE,uBAAuB;QACvC,WAAW,EAAE,2CAA2C;KACzD;IACD,sBAAsB,EAAE;QACtB,EAAE,EAAE,sBAAsB;QAC1B,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/forgot-password/messages.js"],"names":[],"mappings":"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","sourcesContent":["import { defineMessages } from '@openedx/frontend-base';\n\nconst messages = defineMessages({\n 'forgot.password.page.title': {\n id: 'forgot.password.page.title',\n defaultMessage: 'Forgot Password | {siteName}',\n description: 'forgot password page title',\n },\n 'forgot.password.page.heading': {\n id: 'forgot.password.page.heading',\n defaultMessage: 'Reset password',\n description: 'The page heading for the forgot password page.',\n },\n 'forgot.password.page.instructions': {\n id: 'forgot.password.page.instructions',\n defaultMessage: 'Please enter your email address below and we will send you an email with instructions on how to reset your password.',\n description: 'Instructions message for forgot password page.',\n },\n 'forgot.password.page.invalid.email.message': {\n id: 'forgot.password.page.invalid.email.message',\n defaultMessage: 'Enter a valid email address',\n description: 'Invalid email address message for input field.',\n },\n 'forgot.password.page.email.field.label': {\n id: 'forgot.password.page.email.field.label',\n defaultMessage: 'Email',\n description: 'Email field label for the forgot password page.',\n },\n 'forgot.password.page.submit.button': {\n id: 'forgot.password.page.submit.button',\n defaultMessage: 'Submit',\n description: 'Submit button text for the forgot password page.',\n },\n 'forgot.password.error.alert.title': {\n id: 'forgot.password.error.alert.title.',\n defaultMessage: 'We were unable to contact you.',\n description: 'Failed to send password recovery email.',\n },\n 'forgot.password.error.message.title': {\n id: 'forgot.password.error.message.title',\n defaultMessage: 'An error occurred.',\n description: 'Title for message that appears when error occurs for password assistance page',\n },\n 'forgot.password.request.in.progress.message': {\n id: 'forgot.password.request.in.progress.message',\n defaultMessage: 'Your previous request is in progress, please try again in a few moments.',\n description: 'Message displayed when previous password reset request is still in progress.',\n },\n 'forgot.password.empty.email.field.error': {\n id: 'forgot.password.empty.email.field.error',\n defaultMessage: 'Enter your email',\n description: 'Error message that appears when user tries to submit empty email field',\n },\n 'forgot.password.email.help.text': {\n id: 'forgot.password.email.help.text',\n defaultMessage: 'The email address you used to register with {platformName}',\n description: 'text help for the email',\n },\n // Confirmation Alert Message\n 'confirmation.message.title': {\n id: 'confirmation.message.title',\n defaultMessage: 'Check your email',\n description: 'Forgot password confirmation message title',\n },\n 'confirmation.support.link': {\n id: 'confirmation.support.link',\n defaultMessage: 'contact technical support',\n description: 'Technical support link text',\n },\n 'need.help.sign.in.text': {\n id: 'need.help.sign.in.text',\n defaultMessage: 'Need help signing in?',\n description: 'Sign in help link on forgot password page',\n },\n 'additional.help.text': {\n id: 'additional.help.text',\n defaultMessage: 'For additional help, contact {platformName} support at',\n description: 'additional help text on forgot password page',\n },\n 'sign.in.text': {\n id: 'sign.in.text',\n defaultMessage: 'Sign in',\n description: 'login page link on password page',\n },\n 'extend.field.errors': {\n id: 'extend.field.errors',\n defaultMessage: '{emailError} below.',\n description: 'extends the field error for alert message',\n },\n // Reset password token validation failure\n 'invalid.token.heading': {\n id: 'invalid.token.heading',\n defaultMessage: 'Invalid password reset link',\n description: 'Alert heading when reset password link is invalid',\n },\n 'invalid.token.error.message': {\n id: 'invalid.token.error.message',\n defaultMessage: 'This password reset link is invalid. It may have been used already. Enter your email below to receive a new link.',\n description: 'Alert message when reset password link has expired or is invalid',\n },\n 'token.validation.rate.limit.error.heading': {\n id: 'token.validation.rate.limit.error.heading',\n defaultMessage: 'Too many requests',\n description: 'Too many request at server end point',\n },\n 'token.validation.rate.limit.error': {\n id: 'token.validation.rate.limit.error',\n defaultMessage: 'An error has occurred because of too many requests. Please try again after some time.',\n description: 'Error message that appears when server responds with 429 error code',\n },\n 'token.validation.internal.sever.error.heading': {\n id: 'token.validation.internal.sever.error.heading',\n defaultMessage: 'Token validation failure',\n description: 'Failed to validate reset password token error message.',\n },\n 'token.validation.internal.sever.error': {\n id: 'token.validation.internal.sever.error',\n defaultMessage: 'An error has occurred. Try refreshing the page, or check your internet connection.',\n description: 'Error message that appears when server responds with 500 error code',\n },\n // Error messages\n 'internal.server.error': {\n id: 'internal.server.error',\n defaultMessage: 'An error has occurred. Try refreshing the page, or check your internet connection.',\n description: 'Error message that appears when server responds with 500 error code',\n },\n});\nexport default messages;\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect, useState } from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { getUrlByRouteRole, useIntl } from '@openedx/frontend-base';
|
|
4
4
|
import { ActionRow, ModalDialog, useToggle, } from '@openedx/paragon';
|
|
5
5
|
import classNames from 'classnames';
|
|
6
6
|
import PropTypes from 'prop-types';
|
|
7
7
|
import { Link, useNavigate } from 'react-router-dom';
|
|
8
|
-
import {
|
|
8
|
+
import { dashboardRole, resetPasswordRole } from '../constants';
|
|
9
9
|
import { updatePathWithQueryParams } from '../data/utils';
|
|
10
10
|
import useMobileResponsive from '../data/utils/useMobileResponsive';
|
|
11
11
|
import messages from './messages';
|
|
@@ -18,7 +18,13 @@ const ChangePasswordPrompt = ({ variant, redirectUrl }) => {
|
|
|
18
18
|
setRedirectToResetPasswordPage(true);
|
|
19
19
|
}
|
|
20
20
|
else {
|
|
21
|
-
|
|
21
|
+
const url = redirectUrl || getUrlByRouteRole(dashboardRole) || '/';
|
|
22
|
+
if (url.startsWith('/')) {
|
|
23
|
+
navigate(url);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
window.location.href = url;
|
|
27
|
+
}
|
|
22
28
|
}
|
|
23
29
|
},
|
|
24
30
|
};
|
|
@@ -28,10 +34,10 @@ const ChangePasswordPrompt = ({ variant, redirectUrl }) => {
|
|
|
28
34
|
const navigate = useNavigate();
|
|
29
35
|
useEffect(() => {
|
|
30
36
|
if (redirectToResetPasswordPage) {
|
|
31
|
-
navigate(updatePathWithQueryParams(
|
|
37
|
+
navigate(updatePathWithQueryParams(getUrlByRouteRole(resetPasswordRole)));
|
|
32
38
|
}
|
|
33
39
|
}, [redirectToResetPasswordPage, navigate]);
|
|
34
|
-
return (_jsxs(ModalDialog, { title: "Password security", isOpen: isOpen, onClose: close, size: isMobileView ? 'sm' : 'md', hasCloseButton: false, children: [_jsx(ModalDialog.Header, { children: _jsx(ModalDialog.Title, { children: formatMessage(messages[`password.security.${variant}.title`]) }) }), _jsx(ModalDialog.Body, { children: formatMessage(messages[`password.security.${variant}.body`]) }), _jsx(ModalDialog.Footer, { children: _jsxs(ActionRow, { className: classNames({ 'd-flex flex-column': isMobileView }), children: [variant === 'nudge' ? (_jsx(ModalDialog.CloseButton, { id: "password-security-close", variant: "tertiary", children: formatMessage(messages['password.security.close.button']) })) : null, _jsx(Link, { id: "password-security-reset-password", className: classNames('btn btn-primary', { 'w-100': isMobileView }), to: updatePathWithQueryParams(
|
|
40
|
+
return (_jsxs(ModalDialog, { title: "Password security", isOpen: isOpen, onClose: close, size: isMobileView ? 'sm' : 'md', hasCloseButton: false, children: [_jsx(ModalDialog.Header, { children: _jsx(ModalDialog.Title, { children: formatMessage(messages[`password.security.${variant}.title`]) }) }), _jsx(ModalDialog.Body, { children: formatMessage(messages[`password.security.${variant}.body`]) }), _jsx(ModalDialog.Footer, { children: _jsxs(ActionRow, { className: classNames({ 'd-flex flex-column': isMobileView }), children: [variant === 'nudge' ? (_jsx(ModalDialog.CloseButton, { id: "password-security-close", variant: "tertiary", children: formatMessage(messages['password.security.close.button']) })) : null, _jsx(Link, { id: "password-security-reset-password", className: classNames('btn btn-primary', { 'w-100': isMobileView }), to: updatePathWithQueryParams(getUrlByRouteRole(resetPasswordRole)), children: formatMessage(messages['password.security.redirect.to.reset.password.button']) })] }) })] }));
|
|
35
41
|
};
|
|
36
42
|
ChangePasswordPrompt.defaultProps = {
|
|
37
43
|
variant: 'block',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChangePasswordPrompt.js","sourceRoot":"","sources":["../../src/login/ChangePasswordPrompt.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ChangePasswordPrompt.js","sourceRoot":"","sources":["../../src/login/ChangePasswordPrompt.jsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { getUrlByRouteRole, useIntl } from '@openedx/frontend-base';\nimport {\n ActionRow, ModalDialog, useToggle,\n} from '@openedx/paragon';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { Link, useNavigate } from 'react-router-dom';\n\nimport { dashboardRole, resetPasswordRole } from '../constants';\nimport { updatePathWithQueryParams } from '../data/utils';\nimport useMobileResponsive from '../data/utils/useMobileResponsive';\nimport messages from './messages';\n\nconst ChangePasswordPrompt = ({ variant, redirectUrl }) => {\n const isMobileView = useMobileResponsive();\n const [redirectToResetPasswordPage, setRedirectToResetPasswordPage] = useState(false);\n const handlers = {\n handleToggleOff: () => {\n if (variant === 'block') {\n setRedirectToResetPasswordPage(true);\n } else {\n const url = redirectUrl || getUrlByRouteRole(dashboardRole) || '/';\n if (url.startsWith('/')) {\n navigate(url);\n } else {\n window.location.href = url;\n }\n }\n },\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [isOpen, open, close] = useToggle(true, handlers);\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n\n useEffect(() => {\n if (redirectToResetPasswordPage) {\n navigate(updatePathWithQueryParams(getUrlByRouteRole(resetPasswordRole)));\n }\n }, [redirectToResetPasswordPage, navigate]);\n\n return (\n <ModalDialog\n title=\"Password security\"\n isOpen={isOpen}\n onClose={close}\n size={isMobileView ? 'sm' : 'md'}\n hasCloseButton={false}\n >\n <ModalDialog.Header>\n <ModalDialog.Title>\n {formatMessage(messages[`password.security.${variant}.title`])}\n </ModalDialog.Title>\n </ModalDialog.Header>\n <ModalDialog.Body>\n {formatMessage(messages[`password.security.${variant}.body`])}\n </ModalDialog.Body>\n <ModalDialog.Footer>\n <ActionRow className={classNames(\n { 'd-flex flex-column': isMobileView },\n )}\n >\n {variant === 'nudge' ? (\n <ModalDialog.CloseButton id=\"password-security-close\" variant=\"tertiary\">\n {formatMessage(messages['password.security.close.button'])}\n </ModalDialog.CloseButton>\n ) : null}\n <Link\n id=\"password-security-reset-password\"\n className={classNames(\n 'btn btn-primary',\n { 'w-100': isMobileView },\n )}\n to={updatePathWithQueryParams(getUrlByRouteRole(resetPasswordRole))}\n >\n {formatMessage(messages['password.security.redirect.to.reset.password.button'])}\n </Link>\n </ActionRow>\n </ModalDialog.Footer>\n </ModalDialog>\n );\n};\n\nChangePasswordPrompt.defaultProps = {\n variant: 'block',\n redirectUrl: null,\n};\n\nChangePasswordPrompt.propTypes = {\n variant: PropTypes.oneOf(['nudge', 'block']),\n redirectUrl: PropTypes.string,\n};\n\nexport default ChangePasswordPrompt;\n"]}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
export default LoginPage;
|
|
2
|
+
declare function LoginPage({ institutionLogin, handleInstitutionLogin, }: {
|
|
3
|
+
institutionLogin: any;
|
|
4
|
+
handleInstitutionLogin: any;
|
|
5
|
+
}): import("react/jsx-runtime").JSX.Element | null;
|
|
6
|
+
declare namespace LoginPage {
|
|
7
|
+
namespace propTypes {
|
|
8
|
+
let institutionLogin: PropTypes.Validator<boolean>;
|
|
9
|
+
let handleInstitutionLogin: PropTypes.Validator<(...args: any[]) => any>;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
import PropTypes from 'prop-types';
|