@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.
Files changed (254) hide show
  1. package/dist/Main.js +1 -3
  2. package/dist/Main.js.map +1 -1
  3. package/dist/common-components/EmbeddedRegistrationRoute.js +2 -2
  4. package/dist/common-components/EmbeddedRegistrationRoute.js.map +1 -1
  5. package/dist/common-components/EnterpriseSSO.js +6 -3
  6. package/dist/common-components/EnterpriseSSO.js.map +1 -1
  7. package/dist/common-components/PasswordField.d.ts +17 -9
  8. package/dist/common-components/PasswordField.js +10 -6
  9. package/dist/common-components/PasswordField.js.map +1 -1
  10. package/dist/common-components/RedirectLogistration.js +7 -3
  11. package/dist/common-components/RedirectLogistration.js.map +1 -1
  12. package/dist/common-components/SocialAuthProviders.d.ts +2 -2
  13. package/dist/common-components/SocialAuthProviders.js +5 -4
  14. package/dist/common-components/SocialAuthProviders.js.map +1 -1
  15. package/dist/common-components/ThirdPartyAuth.js +3 -2
  16. package/dist/common-components/ThirdPartyAuth.js.map +1 -1
  17. package/dist/common-components/ThirdPartyAuthAlert.d.ts +2 -2
  18. package/dist/common-components/ThirdPartyAuthAlert.js +4 -4
  19. package/dist/common-components/ThirdPartyAuthAlert.js.map +1 -1
  20. package/dist/common-components/UnAuthOnlyRoute.js +5 -4
  21. package/dist/common-components/UnAuthOnlyRoute.js.map +1 -1
  22. package/dist/common-components/components/ThirdPartyAuthContext.d.ts +31 -0
  23. package/dist/common-components/components/ThirdPartyAuthContext.js +84 -0
  24. package/dist/common-components/components/ThirdPartyAuthContext.js.map +1 -0
  25. package/dist/common-components/data/api.d.ts +6 -0
  26. package/dist/common-components/data/api.js +26 -0
  27. package/dist/common-components/data/api.js.map +1 -0
  28. package/dist/common-components/data/apiHook.d.ts +9 -0
  29. package/dist/common-components/data/apiHook.js +14 -0
  30. package/dist/common-components/data/apiHook.js.map +1 -0
  31. package/dist/common-components/data/queryKeys.d.ts +4 -0
  32. package/dist/common-components/data/queryKeys.js +6 -0
  33. package/dist/common-components/data/queryKeys.js.map +1 -0
  34. package/dist/common-components/index.d.ts +0 -3
  35. package/dist/common-components/index.js +0 -3
  36. package/dist/common-components/index.js.map +1 -1
  37. package/dist/constants.d.ts +13 -0
  38. package/dist/constants.js +15 -0
  39. package/dist/constants.js.map +1 -1
  40. package/dist/data/constants.d.ts +0 -8
  41. package/dist/data/constants.js +0 -9
  42. package/dist/data/constants.js.map +1 -1
  43. package/dist/data/utils/dataUtils.d.ts +1 -0
  44. package/dist/data/utils/dataUtils.js +14 -0
  45. package/dist/data/utils/dataUtils.js.map +1 -1
  46. package/dist/data/utils/index.d.ts +1 -2
  47. package/dist/data/utils/index.js +1 -2
  48. package/dist/data/utils/index.js.map +1 -1
  49. package/dist/forgot-password/ForgotPasswordPage.d.ts +2 -36
  50. package/dist/forgot-password/ForgotPasswordPage.js +45 -44
  51. package/dist/forgot-password/ForgotPasswordPage.js.map +1 -1
  52. package/dist/forgot-password/data/api.d.ts +2 -0
  53. package/dist/forgot-password/data/{service.js → api.js} +13 -14
  54. package/dist/forgot-password/data/api.js.map +1 -0
  55. package/dist/forgot-password/data/apiHook.d.ts +16 -0
  56. package/dist/forgot-password/data/apiHook.js +26 -0
  57. package/dist/forgot-password/data/apiHook.js.map +1 -0
  58. package/dist/forgot-password/index.d.ts +0 -4
  59. package/dist/forgot-password/index.js +0 -4
  60. package/dist/forgot-password/index.js.map +1 -1
  61. package/dist/forgot-password/messages.js +1 -1
  62. package/dist/forgot-password/messages.js.map +1 -1
  63. package/dist/login/ChangePasswordPrompt.js +11 -5
  64. package/dist/login/ChangePasswordPrompt.js.map +1 -1
  65. package/dist/login/LoginPage.d.ts +12 -10
  66. package/dist/login/LoginPage.js +85 -127
  67. package/dist/login/LoginPage.js.map +1 -1
  68. package/dist/login/components/LoginContext.d.ts +21 -0
  69. package/dist/login/components/LoginContext.js +28 -0
  70. package/dist/login/components/LoginContext.js.map +1 -0
  71. package/dist/login/data/api.d.ts +2 -0
  72. package/dist/login/data/api.js +27 -0
  73. package/dist/login/data/api.js.map +1 -0
  74. package/dist/login/data/apiHook.d.ts +13 -0
  75. package/dist/login/data/apiHook.js +57 -0
  76. package/dist/login/data/apiHook.js.map +1 -0
  77. package/dist/login/index.d.ts +0 -3
  78. package/dist/login/index.js +0 -3
  79. package/dist/login/index.js.map +1 -1
  80. package/dist/logistration/Logistration.d.ts +5 -32
  81. package/dist/logistration/Logistration.js +28 -54
  82. package/dist/logistration/Logistration.js.map +1 -1
  83. package/dist/progressive-profiling/ProgressiveProfiling.d.ts +2 -46
  84. package/dist/progressive-profiling/ProgressiveProfiling.js +47 -71
  85. package/dist/progressive-profiling/ProgressiveProfiling.js.map +1 -1
  86. package/dist/progressive-profiling/ProgressiveProfilingPageModal.js +8 -1
  87. package/dist/progressive-profiling/ProgressiveProfilingPageModal.js.map +1 -1
  88. package/dist/progressive-profiling/components/ProgressiveProfilingContext.d.ts +18 -0
  89. package/dist/progressive-profiling/components/ProgressiveProfilingContext.js +52 -0
  90. package/dist/progressive-profiling/components/ProgressiveProfilingContext.js.map +1 -0
  91. package/dist/progressive-profiling/data/api.d.ts +2 -0
  92. package/dist/progressive-profiling/data/{service.js → api.js} +11 -12
  93. package/dist/progressive-profiling/data/api.js.map +1 -0
  94. package/dist/progressive-profiling/data/apiHook.d.ts +10 -0
  95. package/dist/progressive-profiling/data/apiHook.js +36 -0
  96. package/dist/progressive-profiling/data/apiHook.js.map +1 -0
  97. package/dist/progressive-profiling/index.d.ts +0 -2
  98. package/dist/progressive-profiling/index.js +0 -2
  99. package/dist/progressive-profiling/index.js.map +1 -1
  100. package/dist/register/RegistrationFields/CountryField/CountryField.d.ts +1 -1
  101. package/dist/register/RegistrationFields/CountryField/CountryField.js +5 -7
  102. package/dist/register/RegistrationFields/CountryField/CountryField.js.map +1 -1
  103. package/dist/register/RegistrationFields/EmailField/EmailField.js +17 -9
  104. package/dist/register/RegistrationFields/EmailField/EmailField.js.map +1 -1
  105. package/dist/register/RegistrationFields/NameField/NameField.js +14 -7
  106. package/dist/register/RegistrationFields/NameField/NameField.js.map +1 -1
  107. package/dist/register/RegistrationFields/NameField/validator.d.ts +1 -0
  108. package/dist/register/RegistrationFields/NameField/validator.js +4 -0
  109. package/dist/register/RegistrationFields/NameField/validator.js.map +1 -1
  110. package/dist/register/RegistrationFields/UsernameField/UsernameField.js +20 -14
  111. package/dist/register/RegistrationFields/UsernameField/UsernameField.js.map +1 -1
  112. package/dist/register/RegistrationPage.d.ts +1 -1
  113. package/dist/register/RegistrationPage.js +102 -59
  114. package/dist/register/RegistrationPage.js.map +1 -1
  115. package/dist/register/components/RegisterContext.d.ts +8 -0
  116. package/dist/register/components/RegisterContext.js +167 -0
  117. package/dist/register/components/RegisterContext.js.map +1 -0
  118. package/dist/register/components/RegistrationFailure.js +4 -1
  119. package/dist/register/components/RegistrationFailure.js.map +1 -1
  120. package/dist/register/data/api.d.ts +9 -0
  121. package/dist/register/data/api.js +45 -0
  122. package/dist/register/data/api.js.map +1 -0
  123. package/dist/register/data/apiHook.d.ts +33 -0
  124. package/dist/register/data/apiHook.js +66 -0
  125. package/dist/register/data/apiHook.js.map +1 -0
  126. package/dist/register/data/constants.d.ts +1 -0
  127. package/dist/register/data/constants.js +1 -0
  128. package/dist/register/data/constants.js.map +1 -1
  129. package/dist/register/index.d.ts +0 -2
  130. package/dist/register/index.js +0 -3
  131. package/dist/register/index.js.map +1 -1
  132. package/dist/register/messages.d.ts +10 -0
  133. package/dist/register/messages.js +10 -0
  134. package/dist/register/messages.js.map +1 -1
  135. package/dist/register/types.d.ts +74 -0
  136. package/dist/register/types.js +2 -0
  137. package/dist/register/types.js.map +1 -0
  138. package/dist/reset-password/ResetPasswordPage.d.ts +2 -32
  139. package/dist/reset-password/ResetPasswordPage.js +90 -58
  140. package/dist/reset-password/ResetPasswordPage.js.map +1 -1
  141. package/dist/reset-password/data/api.d.ts +4 -0
  142. package/dist/reset-password/data/api.js +57 -0
  143. package/dist/reset-password/data/api.js.map +1 -0
  144. package/dist/reset-password/data/apiHook.d.ts +31 -0
  145. package/dist/reset-password/data/apiHook.js +74 -0
  146. package/dist/reset-password/data/apiHook.js.map +1 -0
  147. package/dist/reset-password/index.d.ts +0 -4
  148. package/dist/reset-password/index.js +0 -4
  149. package/dist/reset-password/index.js.map +1 -1
  150. package/dist/routes.d.ts +1 -0
  151. package/dist/routes.js +15 -14
  152. package/dist/routes.js.map +1 -1
  153. package/dist/sass/_registration.scss +8 -10
  154. package/dist/slots/LoginComponentSlot/index.d.ts +12 -0
  155. package/dist/slots/LoginComponentSlot/index.js +11 -0
  156. package/dist/slots/LoginComponentSlot/index.js.map +1 -0
  157. package/package.json +18 -14
  158. package/dist/common-components/data/actions.d.ts +0 -26
  159. package/dist/common-components/data/actions.js +0 -22
  160. package/dist/common-components/data/actions.js.map +0 -1
  161. package/dist/common-components/data/reducers.d.ts +0 -62
  162. package/dist/common-components/data/reducers.js +0 -39
  163. package/dist/common-components/data/reducers.js.map +0 -1
  164. package/dist/common-components/data/sagas.d.ts +0 -12
  165. package/dist/common-components/data/sagas.js +0 -21
  166. package/dist/common-components/data/sagas.js.map +0 -1
  167. package/dist/common-components/data/selectors.d.ts +0 -98
  168. package/dist/common-components/data/selectors.js +0 -11
  169. package/dist/common-components/data/selectors.js.map +0 -1
  170. package/dist/common-components/data/service.d.ts +0 -5
  171. package/dist/common-components/data/service.js +0 -31
  172. package/dist/common-components/data/service.js.map +0 -1
  173. package/dist/data/configureStore.d.ts +0 -3
  174. package/dist/data/configureStore.js +0 -24
  175. package/dist/data/configureStore.js.map +0 -1
  176. package/dist/data/reducers.d.ts +0 -254
  177. package/dist/data/reducers.js +0 -17
  178. package/dist/data/reducers.js.map +0 -1
  179. package/dist/data/sagas.d.ts +0 -1
  180. package/dist/data/sagas.js +0 -18
  181. package/dist/data/sagas.js.map +0 -1
  182. package/dist/data/utils/reduxUtils.d.ts +0 -15
  183. package/dist/data/utils/reduxUtils.js +0 -29
  184. package/dist/data/utils/reduxUtils.js.map +0 -1
  185. package/dist/forgot-password/data/actions.d.ts +0 -30
  186. package/dist/forgot-password/data/actions.js +0 -26
  187. package/dist/forgot-password/data/actions.js.map +0 -1
  188. package/dist/forgot-password/data/reducers.d.ts +0 -13
  189. package/dist/forgot-password/data/reducers.js +0 -46
  190. package/dist/forgot-password/data/reducers.js.map +0 -1
  191. package/dist/forgot-password/data/sagas.d.ts +0 -4
  192. package/dist/forgot-password/data/sagas.js +0 -28
  193. package/dist/forgot-password/data/sagas.js.map +0 -1
  194. package/dist/forgot-password/data/selectors.d.ts +0 -23
  195. package/dist/forgot-password/data/selectors.js +0 -5
  196. package/dist/forgot-password/data/selectors.js.map +0 -1
  197. package/dist/forgot-password/data/service.d.ts +0 -1
  198. package/dist/forgot-password/data/service.js.map +0 -1
  199. package/dist/login/data/actions.d.ts +0 -36
  200. package/dist/login/data/actions.js +0 -32
  201. package/dist/login/data/actions.js.map +0 -1
  202. package/dist/login/data/reducers.d.ts +0 -82
  203. package/dist/login/data/reducers.js +0 -44
  204. package/dist/login/data/reducers.js.map +0 -1
  205. package/dist/login/data/sagas.d.ts +0 -10
  206. package/dist/login/data/sagas.js +0 -34
  207. package/dist/login/data/sagas.js.map +0 -1
  208. package/dist/login/data/service.d.ts +0 -4
  209. package/dist/login/data/service.js +0 -32
  210. package/dist/login/data/service.js.map +0 -1
  211. package/dist/progressive-profiling/data/actions.d.ts +0 -19
  212. package/dist/progressive-profiling/data/actions.js +0 -18
  213. package/dist/progressive-profiling/data/actions.js.map +0 -1
  214. package/dist/progressive-profiling/data/reducers.d.ts +0 -22
  215. package/dist/progressive-profiling/data/reducers.js +0 -23
  216. package/dist/progressive-profiling/data/reducers.js.map +0 -1
  217. package/dist/progressive-profiling/data/sagas.d.ts +0 -4
  218. package/dist/progressive-profiling/data/sagas.js +0 -17
  219. package/dist/progressive-profiling/data/sagas.js.map +0 -1
  220. package/dist/progressive-profiling/data/selectors.d.ts +0 -39
  221. package/dist/progressive-profiling/data/selectors.js +0 -9
  222. package/dist/progressive-profiling/data/selectors.js.map +0 -1
  223. package/dist/progressive-profiling/data/service.d.ts +0 -1
  224. package/dist/progressive-profiling/data/service.js.map +0 -1
  225. package/dist/register/data/actions.d.ts +0 -80
  226. package/dist/register/data/actions.js +0 -69
  227. package/dist/register/data/actions.js.map +0 -1
  228. package/dist/register/data/reducers.d.ts +0 -237
  229. package/dist/register/data/reducers.js +0 -86
  230. package/dist/register/data/reducers.js.map +0 -1
  231. package/dist/register/data/sagas.d.ts +0 -19
  232. package/dist/register/data/sagas.js +0 -45
  233. package/dist/register/data/sagas.js.map +0 -1
  234. package/dist/register/data/selectors.d.ts +0 -26
  235. package/dist/register/data/selectors.js +0 -25
  236. package/dist/register/data/selectors.js.map +0 -1
  237. package/dist/register/data/service.d.ts +0 -8
  238. package/dist/register/data/service.js +0 -46
  239. package/dist/register/data/service.js.map +0 -1
  240. package/dist/reset-password/data/actions.d.ts +0 -56
  241. package/dist/reset-password/data/actions.js +0 -41
  242. package/dist/reset-password/data/actions.js.map +0 -1
  243. package/dist/reset-password/data/reducers.d.ts +0 -19
  244. package/dist/reset-password/data/reducers.js +0 -25
  245. package/dist/reset-password/data/reducers.js.map +0 -1
  246. package/dist/reset-password/data/sagas.d.ts +0 -7
  247. package/dist/reset-password/data/sagas.js +0 -63
  248. package/dist/reset-password/data/sagas.js.map +0 -1
  249. package/dist/reset-password/data/selectors.d.ts +0 -23
  250. package/dist/reset-password/data/selectors.js +0 -5
  251. package/dist/reset-password/data/selectors.js.map +0 -1
  252. package/dist/reset-password/data/service.d.ts +0 -3
  253. package/dist/reset-password/data/service.js +0 -62
  254. 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"]}
@@ -0,0 +1,2 @@
1
+ declare const forgotPassword: (email: string) => Promise<any>;
2
+ export { forgotPassword, };
@@ -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
- export function forgotPassword(email) {
13
- return __awaiter(this, void 0, void 0, function* () {
14
- const requestConfig = {
15
- headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
16
- isPublic: true,
17
- };
18
- const { data } = yield getAuthenticatedHttpClient()
19
- .post(`${getSiteConfig().lmsBaseUrl}/account/password`, formurlencoded({ email }), requestConfig)
20
- .catch((e) => {
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
- //# sourceMappingURL=service.js.map
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;AACrE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC","sourcesContent":["export { default as ForgotPasswordPage } from './ForgotPasswordPage';\nexport { default as reducer } from './data/reducers';\nexport { FORGOT_PASSWORD } from './data/actions';\nexport { default as saga } from './data/sagas';\nexport { storeName, forgotPasswordResultSelector } from './data/selectors';\n"]}
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":"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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
+ {"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 { getSiteConfig, useIntl } from '@openedx/frontend-base';
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 { DEFAULT_REDIRECT_URL, RESET_PAGE } from '../data/constants';
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
- window.location.href = redirectUrl || getSiteConfig().lmsBaseUrl.concat(DEFAULT_REDIRECT_URL);
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(RESET_PAGE));
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(RESET_PAGE), children: formatMessage(messages['password.security.redirect.to.reset.password.button']) })] }) })] }));
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":"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","sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { getSiteConfig, 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 { DEFAULT_REDIRECT_URL, RESET_PAGE } from '../data/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 window.location.href = redirectUrl || getSiteConfig().lmsBaseUrl.concat(DEFAULT_REDIRECT_URL);\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(RESET_PAGE));\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(RESET_PAGE)}\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
+ {"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
- declare const _default: import("react-redux").ConnectedComponent<import("react").FC<import("react-intl").WithIntlProps<any>> & {
2
- WrappedComponent: React.ComponentType<any>;
3
- }, {
4
- [x: string]: any;
5
- [x: number]: any;
6
- [x: symbol]: any;
7
- context?: import("react-redux/es/components/Context").ReactReduxContextInstance | undefined;
8
- store?: import("redux").Store | undefined;
9
- }>;
10
- export default _default;
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';