{"version":3,"file":"app.7a3efdd2a9df709b3f18.js","mappings":"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","sources":["webpack://@edx/frontend-app-authn/./src/data/constants.js","webpack://@edx/frontend-app-authn/./src/data/utils/dataUtils.js","webpack://@edx/frontend-app-authn/./src/data/utils/reduxUtils.js","webpack://@edx/frontend-app-authn/./src/data/utils/cookies.js","webpack://@edx/frontend-app-authn/./src/common-components/RedirectLogistration.jsx","webpack://@edx/frontend-app-authn/./src/common-components/UnAuthOnlyRoute.jsx","webpack://@edx/frontend-app-authn/./src/common-components/NotFoundPage.jsx","webpack://@edx/frontend-app-authn/./src/common-components/messages.jsx","webpack://@edx/frontend-app-authn/./src/common-components/SocialAuthProviders.jsx","webpack://@edx/frontend-app-authn/./src/common-components/ThirdPartyAuthAlert.jsx","webpack://@edx/frontend-app-authn/./src/common-components/InstitutionLogistration.jsx","webpack://@edx/frontend-app-authn/./src/common-components/data/actions.js","webpack://@edx/frontend-app-authn/./src/common-components/data/reducers.js","webpack://@edx/frontend-app-authn/./src/common-components/data/service.js","webpack://@edx/frontend-app-authn/./src/common-components/data/sagas.js","webpack://@edx/frontend-app-authn/./src/common-components/data/selectors.js","webpack://@edx/frontend-app-authn/./src/common-components/FormGroup.jsx","webpack://@edx/frontend-app-authn/./src/common-components/PasswordField.jsx","webpack://@edx/frontend-app-authn/./src/login/data/constants.js","webpack://@edx/frontend-app-authn/./src/login/messages.jsx","webpack://@edx/frontend-app-authn/./src/login/AccountActivationMessage.jsx","webpack://@edx/frontend-app-authn/./src/login/data/actions.js","webpack://@edx/frontend-app-authn/./src/login/data/selectors.js","webpack://@edx/frontend-app-authn/./src/data/utils/useMobileResponsive.js","webpack://@edx/frontend-app-authn/./src/login/ChangePasswordPrompt.jsx","webpack://@edx/frontend-app-authn/./src/login/LoginFailure.jsx","webpack://@edx/frontend-app-authn/./src/common-components/EnterpriseSSO.jsx","webpack://@edx/frontend-app-authn/./src/forgot-password/data/actions.js","webpack://@edx/frontend-app-authn/./src/forgot-password/data/selectors.js","webpack://@edx/frontend-app-authn/./src/forgot-password/messages.js","webpack://@edx/frontend-app-authn/./src/reset-password/data/constants.js","webpack://@edx/frontend-app-authn/./src/forgot-password/ForgotPasswordAlert.jsx","webpack://@edx/frontend-app-authn/./src/base-component/messages.jsx","webpack://@edx/frontend-app-authn/./src/base-component/SideDiscountBanner.jsx","webpack://@edx/frontend-app-authn/./src/base-component/LargeLeftLayout.jsx","webpack://@edx/frontend-app-authn/./src/base-component/LargeLayout.jsx","webpack://@edx/frontend-app-authn/./src/base-component/MediumLayout.jsx","webpack://@edx/frontend-app-authn/./src/base-component/SmallLayout.jsx","webpack://@edx/frontend-app-authn/./src/base-component/AuthExtraLargeLayout.jsx","webpack://@edx/frontend-app-authn/./src/base-component/AuthMediumLayout.jsx","webpack://@edx/frontend-app-authn/./src/base-component/AuthSmallLayout.jsx","webpack://@edx/frontend-app-authn/./src/base-component/DiscountBanner.jsx","webpack://@edx/frontend-app-authn/./src/base-component/BaseComponent.jsx","webpack://@edx/frontend-app-authn/./src/forgot-password/ForgotPasswordPage.jsx","webpack://@edx/frontend-app-authn/./src/reset-password/data/actions.js","webpack://@edx/frontend-app-authn/./src/forgot-password/data/reducers.js","webpack://@edx/frontend-app-authn/./src/forgot-password/data/service.js","webpack://@edx/frontend-app-authn/./src/forgot-password/data/sagas.js","webpack://@edx/frontend-app-authn/./src/reset-password/messages.js","webpack://@edx/frontend-app-authn/./src/reset-password/ResetPasswordSuccess.jsx","webpack://@edx/frontend-app-authn/./src/login/LoginPage.jsx","webpack://@edx/frontend-app-authn/./src/reset-password/data/selectors.js","webpack://@edx/frontend-app-authn/./src/reset-password/data/service.js","webpack://@edx/frontend-app-authn/./src/reset-password/ResetPasswordFailure.jsx","webpack://@edx/frontend-app-authn/./src/reset-password/ResetPasswordPage.jsx","webpack://@edx/frontend-app-authn/./src/reset-password/data/reducers.js","webpack://@edx/frontend-app-authn/./src/reset-password/data/sagas.js","webpack://@edx/frontend-app-authn/./src/login/data/reducers.js","webpack://@edx/frontend-app-authn/./src/login/data/service.js","webpack://@edx/frontend-app-authn/./src/login/data/sagas.js","webpack://@edx/frontend-app-authn/./src/field-renderer/FieldRenderer.jsx","webpack://@edx/frontend-app-authn/./src/register/data/actions.js","webpack://@edx/frontend-app-authn/./src/register/data/constants.js","webpack://@edx/frontend-app-authn/./src/register/data/selectors.js","webpack://@edx/frontend-app-authn/./src/register/messages.jsx","webpack://@edx/frontend-app-authn/./src/register/RegistrationFailure.jsx","webpack://@edx/frontend-app-authn/./src/register/UsernameField.jsx","webpack://@edx/frontend-app-authn/./src/register/HonorCode.jsx","webpack://@edx/frontend-app-authn/./src/register/CountryDropdown.jsx","webpack://@edx/frontend-app-authn/./src/register/utils.js","webpack://@edx/frontend-app-authn/./src/register/TermsOfService.jsx","webpack://@edx/frontend-app-authn/./src/register/RegistrationPage.jsx","webpack://@edx/frontend-app-authn/./src/register/data/reducers.js","webpack://@edx/frontend-app-authn/./src/register/data/service.js","webpack://@edx/frontend-app-authn/./src/register/data/sagas.js","webpack://@edx/frontend-app-authn/./src/common-components/Logistration.jsx","webpack://@edx/frontend-app-authn/./src/welcome/data/actions.js","webpack://@edx/frontend-app-authn/./src/welcome/data/selectors.js","webpack://@edx/frontend-app-authn/./src/welcome/messages.jsx","webpack://@edx/frontend-app-authn/./src/welcome/WelcomePageModal.jsx","webpack://@edx/frontend-app-authn/./src/welcome/WelcomePage.jsx","webpack://@edx/frontend-app-authn/./src/welcome/ProgressiveProfiling.jsx","webpack://@edx/frontend-app-authn/./src/welcome/data/reducers.js","webpack://@edx/frontend-app-authn/./src/welcome/data/service.js","webpack://@edx/frontend-app-authn/./src/welcome/data/sagas.js","webpack://@edx/frontend-app-authn/./src/data/reducers.js","webpack://@edx/frontend-app-authn/./src/data/sagas.js","webpack://@edx/frontend-app-authn/./src/data/configureStore.js","webpack://@edx/frontend-app-authn/./src/common-components/RegisterFaIcons.jsx","webpack://@edx/frontend-app-authn/./src/MainApp.jsx","webpack://@edx/frontend-app-authn/./src/i18n/index.jsx","webpack://@edx/frontend-app-authn/./src/index.jsx"],"sourcesContent":["// URL Paths\nexport const LOGIN_PAGE = '/login';\nexport const REGISTER_PAGE = '/register';\nexport const RESET_PAGE = '/reset';\nexport const WELCOME_PAGE = '/welcome';\nexport const DEFAULT_REDIRECT_URL = '/dashboard';\nexport const PASSWORD_RESET_CONFIRM = '/password_reset_confirm/:token/';\nexport const PAGE_NOT_FOUND = '/notfound';\nexport const ENTERPRISE_LOGIN_URL = '/enterprise/login';\n\n// Constants\nexport const SUPPORTED_ICON_CLASSES = ['apple', 'facebook', 'google', 'microsoft'];\n\n// Error Codes\nexport const INTERNAL_SERVER_ERROR = 'internal-server-error';\nexport const API_RATELIMIT_ERROR = 'api-ratelimit-error';\n\n// States\nexport const DEFAULT_STATE = 'default';\nexport const PENDING_STATE = 'pending';\nexport const COMPLETE_STATE = 'complete';\nexport const FAILURE_STATE = 'failure';\n\n// Regex\nexport const VALID_EMAIL_REGEX = '(^[-!#$%&\\'*+/=?^_`{}|~0-9A-Z]+(\\\\.[-!#$%&\\'*+/=?^_`{}|~0-9A-Z]+)*'\n + '|^\"([\\\\001-\\\\010\\\\013\\\\014\\\\016-\\\\037!#-\\\\[\\\\]-\\\\177]|\\\\\\\\[\\\\001-\\\\011\\\\013\\\\014\\\\016-\\\\177])*\"'\n + ')@((?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\\\\.)+)(?:[A-Z0-9-]{2,63})'\n + '|\\\\[(25[0-5]|2[0-4]\\\\d|[0-1]?\\\\d?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|[0-1]?\\\\d?\\\\d)){3}\\\\]$';\nexport const LETTER_REGEX = /[a-zA-Z]/;\nexport const NUMBER_REGEX = /\\d/;\nexport const VALID_NAME_REGEX = /[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)?/gi; // eslint-disable-line no-useless-escape\n\n// Query string parameters that can be passed to LMS to manage\n// things like auto-enrollment upon login and registration.\nexport const AUTH_PARAMS = ['course_id', 'enrollment_action', 'course_mode', 'email_opt_in', 'purchase_workflow', 'next', 'save_for_later', 'register_for_free'];\n","// Utility functions\n\nimport * as QueryString from 'query-string';\nimport { AUTH_PARAMS } from '../constants';\n\nexport default function processLink(link) {\n let matches;\n link.replace(/(.*?)([^<]+)<\\/a>(.*)/g, function () { // eslint-disable-line func-names\n matches = Array.prototype.slice.call(arguments, 1, 5); // eslint-disable-line prefer-rest-params\n });\n return matches;\n}\n\nexport const getTpaProvider = (tpaHintProvider, primaryProviders, secondaryProviders) => {\n let tpaProvider = null;\n let skipHintedLogin = false;\n [...primaryProviders, ...secondaryProviders].forEach((provider) => {\n if (provider.id === tpaHintProvider) {\n tpaProvider = provider;\n if (provider.skipHintedLogin) {\n skipHintedLogin = true;\n }\n }\n });\n return { provider: tpaProvider, skipHintedLogin };\n};\n\nexport const getTpaHint = () => {\n const params = QueryString.parse(window.location.search);\n let tpaHint = null;\n tpaHint = params.tpa_hint;\n if (!tpaHint) {\n const { next } = params;\n if (next) {\n const index = next.indexOf('tpa_hint=');\n if (index !== -1) {\n tpaHint = next.substring(index + 'tpa_hint='.length, next.length);\n }\n }\n }\n return tpaHint;\n};\n\nexport const updatePathWithQueryParams = (path) => {\n let queryParams = window.location.search;\n\n if (!queryParams) {\n return path;\n }\n\n if (queryParams.indexOf('track=pwreset') > -1) {\n queryParams = queryParams.replace(\n '?track=pwreset&', '?',\n ).replace('?track=pwreset', '').replace('&track=pwreset', '').replace('?&', '?');\n }\n\n return `${path}${queryParams}`;\n};\n\nexport const getAllPossibleQueryParam = () => {\n const urlParams = QueryString.parse(window.location.search);\n const params = {};\n Object.entries(urlParams).forEach(([key, value]) => {\n if (AUTH_PARAMS.indexOf(key) > -1) {\n params[key] = value;\n }\n });\n\n return params;\n};\n\nexport const getActivationStatus = () => {\n const params = QueryString.parse(window.location.search);\n\n return params.account_activation_status;\n};\n\nexport const isScrollBehaviorSupported = () => 'scrollBehavior' in document.documentElement.style;\n\nexport const windowScrollTo = (options) => {\n if (isScrollBehaviorSupported()) {\n return window.scrollTo(options);\n }\n\n return window.scrollTo(options.top, options.left);\n};\n","/**\n * Helper class to save time when writing out action types for asynchronous methods. Also helps\n * ensure that actions are namespaced.\n */\nexport default class AsyncActionType {\n constructor(topic, name) {\n this.topic = topic;\n this.name = name;\n }\n\n get BASE() {\n return `${this.topic}__${this.name}`;\n }\n\n get BEGIN() {\n return `${this.topic}__${this.name}__BEGIN`;\n }\n\n get SUCCESS() {\n return `${this.topic}__${this.name}__SUCCESS`;\n }\n\n get FAILURE() {\n return `${this.topic}__${this.name}__FAILURE`;\n }\n\n get RESET() {\n return `${this.topic}__${this.name}__RESET`;\n }\n\n get FORBIDDEN() {\n return `${this.topic}__${this.name}__FORBIDDEN`;\n }\n}\n","import Cookies from 'universal-cookie';\nimport { getConfig } from '@edx/frontend-platform';\n\nexport function setCookie(cookieName, cookieValue, cookieExpiry) {\n const cookies = new Cookies();\n const options = { domain: getConfig().COOKIE_DOMAIN, path: '/' };\n if (cookieExpiry) {\n options.expires = cookieExpiry;\n }\n cookies.set(cookieName, cookieValue, options);\n}\n\nexport default function setSurveyCookie(surveyType) {\n const cookieName = getConfig().USER_SURVEY_COOKIE_NAME;\n if (cookieName) {\n const signupTimestamp = (new Date()).getTime();\n // set expiry to exactly 24 hours from now\n const cookieExpiry = new Date(signupTimestamp + 1 * 864e5);\n setCookie(cookieName, surveyType, cookieExpiry);\n }\n}\n","import React from 'react';\n\nimport PropTypes from 'prop-types';\nimport { Redirect } from 'react-router-dom';\n\nimport { getConfig } from '@edx/frontend-platform';\n\nimport { WELCOME_PAGE } from '../data/constants';\nimport { setCookie } from '../data/utils';\n\nfunction RedirectLogistration(props) {\n const {\n finishAuthUrl, redirectUrl, redirectToWelcomePage, success,\n } = props;\n let finalRedirectUrl = '';\n\n if (success) {\n // If we're in a third party auth pipeline, we must complete the pipeline\n // once user has successfully logged in. Otherwise, redirect to the specified redirect url.\n // Note: For multiple enterprise use case, we need to make sure that user first visits the\n // enterprise selection page and then complete the auth workflow\n if (finishAuthUrl && !redirectUrl.includes(finishAuthUrl)) {\n finalRedirectUrl = getConfig().LMS_BASE_URL + finishAuthUrl;\n } else {\n finalRedirectUrl = redirectUrl;\n }\n\n if (redirectToWelcomePage) {\n setCookie('van-504-returning-user', true);\n // use this component to redirect WelcomePage after successful registration\n // return ;\n // const registrationResult = { redirectUrl: finalRedirectUrl, success };\n // return ;\n finalRedirectUrl = \"https://portfolio.diceytech.co.uk/registration\";\n }\n\n window.location.href = finalRedirectUrl;\n }\n return <>;\n}\n\nRedirectLogistration.defaultProps = {\n finishAuthUrl: null,\n success: false,\n redirectUrl: '',\n redirectToWelcomePage: false,\n};\n\nRedirectLogistration.propTypes = {\n finishAuthUrl: PropTypes.string,\n success: PropTypes.bool,\n redirectUrl: PropTypes.string,\n redirectToWelcomePage: PropTypes.bool,\n};\n\nexport default RedirectLogistration;\n","import React, { useEffect, useState } from 'react';\nimport { Route } from 'react-router-dom';\nimport { getConfig } from '@edx/frontend-platform';\nimport { fetchAuthenticatedUser, getAuthenticatedUser } from '@edx/frontend-platform/auth';\nimport { DEFAULT_REDIRECT_URL } from '../data/constants';\n\n/**\n * This wrapper redirects the requester to our default redirect url if they are\n * already authenticated.\n */\nconst UnAuthOnlyRoute = (props) => {\n const [authUser, setAuthUser] = useState({});\n const [isReady, setIsReady] = useState(false);\n\n useEffect(() => {\n fetchAuthenticatedUser({ forceRefresh: !!getAuthenticatedUser() }).then((authenticatedUser) => {\n setAuthUser(authenticatedUser);\n setIsReady(true);\n });\n }, []);\n\n if (isReady) {\n if (authUser && authUser.username) {\n global.location.href = getConfig().LMS_BASE_URL.concat(DEFAULT_REDIRECT_URL);\n return null;\n }\n\n return ;\n }\n\n return <>;\n};\n\nexport default UnAuthOnlyRoute;\n","import React from 'react';\nimport { FormattedMessage } from '@edx/frontend-platform/i18n';\n\nexport default function NotFoundPage() {\n return (\n
\n

\n \n

\n
\n );\n}\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n 'institution.login.page.sub.heading': {\n id: 'institution.login.page.sub.heading',\n defaultMessage: 'Choose your institution from the list below',\n description: 'Heading of the institutions list',\n },\n // Confirmation Alert Message\n 'forgot.password.confirmation.title': {\n id: 'forgot.password.confirmation.title',\n defaultMessage: 'Check your email',\n description: 'Forgot password confirmation message title',\n },\n 'forgot.password.confirmation.support.link': {\n id: 'forgot.password.confirmation.support.link',\n defaultMessage: 'contact technical support',\n description: 'Technical support link text',\n },\n 'forgot.password.confirmation.info': {\n id: 'forgot.password.confirmation.info',\n defaultMessage: 'If you do not receive a password reset message after 1 minute, verify that you entered the correct '\n + 'email address, or check your spam folder.',\n description: 'Part of message that appears after user requests password change',\n },\n // Logistration strinsg\n 'logistration.sign.in': {\n id: 'logistration.sign.in',\n defaultMessage: 'Sign in',\n description: 'Text that appears on the tab to switch between login and register',\n },\n 'logistration.register': {\n id: 'logistration.register',\n defaultMessage: 'Register',\n description: 'Text that appears on the tab to switch between login and register',\n },\n 'internal.server.error.message': {\n id: 'internal.server.error.message',\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 'server.ratelimit.error.message': {\n id: 'server.ratelimit.error.message',\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 // enterprise sso strings\n 'enterprisetpa.title.heading': {\n id: 'enterprisetpa.title.heading',\n defaultMessage: 'Would you like to sign in using your {providerName} credentials?',\n description: 'Header text used in enterprise third party authentication',\n },\n 'enterprisetpa.sso.button.title': {\n id: 'enterprisetpa.sso.button.title',\n defaultMessage: 'Sign in using {providerName}',\n description: 'Text for third party auth provider buttons',\n },\n 'enterprisetpa.login.button.text': {\n id: 'enterprisetpa.login.button.text',\n defaultMessage: 'Show me other ways to sign in or register',\n description: 'Button text for login',\n },\n // social auth providers\n 'sso.sign.in.with': {\n id: 'sso.sign.in.with',\n defaultMessage: 'Sign in with {providerName}',\n description: 'Screen reader text that appears before social auth provider name',\n },\n 'sso.create.account.using': {\n id: 'sso.create.account.using',\n defaultMessage: 'Create an account using {providerName}',\n description: 'Screen reader text that appears before social auth provider name',\n },\n // password field strings\n 'show.password': {\n id: 'show.password',\n defaultMessage: 'Show password',\n description: 'aria label for show password icon on password field',\n },\n 'hide.password': {\n id: 'hide.password',\n defaultMessage: 'Hide password',\n description: 'aria label for hide password icon on password field',\n },\n 'one.letter': {\n id: 'one.letter',\n defaultMessage: '1 Letter',\n description: 'password requirement to have 1 letter',\n },\n 'one.number': {\n id: 'one.number',\n defaultMessage: '1 Number',\n description: 'password requirement to have 1 number',\n },\n 'eight.characters': {\n id: 'eight.characters',\n defaultMessage: '8 Characters',\n description: 'password requirement to have a minimum of 8 characters',\n },\n 'password.sr.only.helping.text': {\n id: 'password.sr.only.helping.text',\n defaultMessage: 'Password must contain at least 8 characters, at least one letter, and at least one number',\n description: 'Password helping text for the sr-only class',\n },\n // third party auth\n 'tpa.alert.heading': {\n id: 'tpa.alert.heading',\n defaultMessage: 'Almost done!',\n description: 'Success alert heading after user has successfully signed in with social auth',\n },\n 'login.third.party.auth.account.not.linked': {\n id: 'login.third.party.auth.account.not.linked',\n defaultMessage: 'You have successfully signed into {currentProvider}, but your {currentProvider} '\n + 'account does not have a linked {platformName} account. To link your accounts, '\n + 'sign in now using your {platformName} password.',\n description: 'Message that appears on login page if user has successfully authenticated with social '\n + 'auth but no associated platform account exists',\n },\n 'register.third.party.auth.account.not.linked': {\n id: 'register.third.party.auth.account.not.linked',\n defaultMessage: 'You\\'ve successfully signed into {currentProvider}! We just need a little more information '\n + 'before you start learning with {platformName}.',\n description: 'Message that appears on register page if user has successfully authenticated with TPA '\n + 'but no associated platform account exists',\n },\n});\n\nexport default messages;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faSignInAlt } from '@fortawesome/free-solid-svg-icons';\nimport { Image } from '@edx/paragon';\nimport messages from './messages';\nimport { LOGIN_PAGE, SUPPORTED_ICON_CLASSES } from '../data/constants';\n\nfunction SocialAuthProviders(props) {\n const { intl, referrer, socialAuthProviders } = props;\n\n function handleSubmit(e) {\n e.preventDefault();\n\n const url = e.currentTarget.dataset.providerUrl;\n window.location.href = getConfig().LMS_BASE_URL + url;\n }\n\n const socialAuth = socialAuthProviders.map((provider, index) => (\n \n {provider.iconImage ? (\n
\n {`icon\n
\n )\n : (\n <>\n
\n \n
\n \n )}\n {provider.name}\n \n {referrer === LOGIN_PAGE\n ? intl.formatMessage(messages['sso.sign.in.with'], { providerName: provider.name })\n : intl.formatMessage(messages['sso.create.account.using'], { providerName: provider.name })}\n \n \n ));\n\n return <>{socialAuth};\n}\n\nSocialAuthProviders.defaultProps = {\n referrer: LOGIN_PAGE,\n socialAuthProviders: [],\n};\n\nSocialAuthProviders.propTypes = {\n intl: intlShape.isRequired,\n referrer: PropTypes.string,\n socialAuthProviders: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n iconClass: PropTypes.string,\n iconImage: PropTypes.string,\n loginUrl: PropTypes.string,\n registerUrl: PropTypes.string,\n })),\n};\n\nexport default injectIntl(SocialAuthProviders);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport { Alert } from '@edx/paragon';\n\nimport messages from './messages';\nimport { LOGIN_PAGE, REGISTER_PAGE } from '../data/constants';\n\nconst ThirdPartyAuthAlert = (props) => {\n const { currentProvider, intl, referrer } = props;\n const platformName = getConfig().SITE_NAME;\n let message;\n\n if (referrer === LOGIN_PAGE) {\n message = intl.formatMessage(messages['login.third.party.auth.account.not.linked'], { currentProvider, platformName });\n } else {\n message = intl.formatMessage(messages['register.third.party.auth.account.not.linked'], { currentProvider, platformName });\n }\n\n return (\n \n {referrer === REGISTER_PAGE ? (\n {intl.formatMessage(messages['tpa.alert.heading'])}\n ) : null}\n

{ message }

\n
\n );\n};\n\nThirdPartyAuthAlert.defaultProps = {\n referrer: LOGIN_PAGE,\n};\n\nThirdPartyAuthAlert.propTypes = {\n currentProvider: PropTypes.string.isRequired,\n intl: intlShape.isRequired,\n referrer: PropTypes.string,\n};\n\nexport default injectIntl(ThirdPartyAuthAlert);\n","import React from 'react';\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport { getConfig } from '@edx/frontend-platform';\nimport PropTypes from 'prop-types';\nimport { Button, Hyperlink, Icon } from '@edx/paragon';\nimport { Institution } from '@edx/paragon/icons';\nimport messages from './messages';\n\nexport const RenderInstitutionButton = props => {\n const { onSubmitHandler, buttonTitle } = props;\n\n return (\n \n \n {buttonTitle}\n \n );\n};\n\nconst InstitutionLogistration = props => {\n const lmsBaseUrl = getConfig().LMS_BASE_URL;\n const {\n intl,\n secondaryProviders,\n headingTitle,\n } = props;\n\n return (\n <>\n
\n
\n

\n {headingTitle}\n

\n

\n {intl.formatMessage(messages['institution.login.page.sub.heading'])}\n

\n
\n
\n
\n \n \n {secondaryProviders.map(provider => (\n \n \n \n ))}\n \n
\n \n {provider.name}\n \n
\n
\n \n );\n};\n\nconst LogistrationDefaultProps = {\n secondaryProviders: [],\n buttonTitle: '',\n};\nconst LogistrationProps = {\n secondaryProviders: PropTypes.arrayOf(PropTypes.shape({\n name: PropTypes.string.isRequired,\n loginUrl: PropTypes.string.isRequired,\n })),\n};\n\nRenderInstitutionButton.propTypes = {\n ...LogistrationProps,\n buttonTitle: PropTypes.string,\n onSubmitHandler: PropTypes.func.isRequired,\n\n};\nRenderInstitutionButton.defaultProps = {\n ...LogistrationDefaultProps,\n};\n\nInstitutionLogistration.propTypes = {\n ...LogistrationProps,\n intl: intlShape.isRequired,\n headingTitle: PropTypes.string,\n};\nInstitutionLogistration.defaultProps = {\n ...LogistrationDefaultProps,\n headingTitle: '',\n};\n\nexport default injectIntl(InstitutionLogistration);\n","import { AsyncActionType } from '../../data/utils';\n\nexport const THIRD_PARTY_AUTH_CONTEXT = new AsyncActionType('THIRD_PARTY_AUTH', 'GET_THIRD_PARTY_AUTH_CONTEXT');\n\n// Third party auth context\nexport const getThirdPartyAuthContext = (urlParams) => ({\n type: THIRD_PARTY_AUTH_CONTEXT.BASE,\n payload: { urlParams },\n});\n\nexport const getThirdPartyAuthContextBegin = () => ({\n type: THIRD_PARTY_AUTH_CONTEXT.BEGIN,\n});\n\nexport const getThirdPartyAuthContextSuccess = (fieldDescriptions, thirdPartyAuthContext) => ({\n type: THIRD_PARTY_AUTH_CONTEXT.SUCCESS,\n payload: { fieldDescriptions, thirdPartyAuthContext },\n});\n\nexport const getThirdPartyAuthContextFailure = () => ({\n type: THIRD_PARTY_AUTH_CONTEXT.FAILURE,\n});\n","import { THIRD_PARTY_AUTH_CONTEXT } from './actions';\n\nimport { PENDING_STATE, COMPLETE_STATE } from '../../data/constants';\n\nexport const defaultState = {\n extendedProfile: [],\n fieldDescriptions: {},\n thirdPartyAuthApiStatus: null,\n};\n\nconst reducer = (state = defaultState, action) => {\n switch (action.type) {\n case THIRD_PARTY_AUTH_CONTEXT.BEGIN:\n return {\n ...state,\n thirdPartyAuthApiStatus: PENDING_STATE,\n };\n case THIRD_PARTY_AUTH_CONTEXT.SUCCESS:\n return {\n ...state,\n extendedProfile: action.payload.fieldDescriptions.extendedProfile,\n fieldDescriptions: action.payload.fieldDescriptions.fields,\n thirdPartyAuthContext: action.payload.thirdPartyAuthContext,\n thirdPartyAuthApiStatus: COMPLETE_STATE,\n };\n case THIRD_PARTY_AUTH_CONTEXT.FAILURE:\n return {\n ...state,\n thirdPartyAuthApiStatus: COMPLETE_STATE,\n };\n default:\n return state;\n }\n};\n\nexport default reducer;\n","import { camelCaseObject, convertKeyNames, getConfig } from '@edx/frontend-platform';\nimport { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';\n\n// eslint-disable-next-line import/prefer-default-export\nexport async function getThirdPartyAuthContext(urlParams) {\n const requestConfig = {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n params: urlParams,\n isPublic: true,\n };\n\n const { data } = await getAuthenticatedHttpClient()\n .get(\n `${getConfig().LMS_BASE_URL}/api/mfe_context`,\n requestConfig,\n )\n .catch((e) => {\n throw (e);\n });\n return {\n fieldDescriptions: data.registration_fields || {},\n // For backward compatibility with the API, once https://github.com/openedx/edx-platform/pull/30198 is merged\n // and deployed update it to use data.context_data\n thirdPartyAuthContext: camelCaseObject(\n convertKeyNames(data.context_data || data, { fullname: 'name' }),\n ),\n };\n}\n","import { call, put, takeEvery } from 'redux-saga/effects';\n\nimport { logError } from '@edx/frontend-platform/logging';\n\n// Actions\nimport {\n THIRD_PARTY_AUTH_CONTEXT,\n getThirdPartyAuthContextBegin,\n getThirdPartyAuthContextSuccess,\n getThirdPartyAuthContextFailure,\n} from './actions';\n\n// Services\nimport {\n getThirdPartyAuthContext,\n} from './service';\n\nexport function* fetchThirdPartyAuthContext(action) {\n try {\n yield put(getThirdPartyAuthContextBegin());\n const { fieldDescriptions, thirdPartyAuthContext } = yield call(getThirdPartyAuthContext, action.payload.urlParams);\n\n yield put(getThirdPartyAuthContextSuccess(\n fieldDescriptions, thirdPartyAuthContext,\n ));\n } catch (e) {\n yield put(getThirdPartyAuthContextFailure());\n logError(e);\n }\n}\n\nexport default function* saga() {\n yield takeEvery(THIRD_PARTY_AUTH_CONTEXT.BASE, fetchThirdPartyAuthContext);\n}\n","import { createSelector } from 'reselect';\n\nexport const storeName = 'commonComponents';\n\nexport const commonComponentsSelector = state => ({ ...state[storeName] });\n\nexport const thirdPartyAuthContextSelector = createSelector(\n commonComponentsSelector,\n commonComponents => commonComponents.thirdPartyAuthContext,\n);\n\nexport const fieldDescriptionSelector = createSelector(\n commonComponentsSelector,\n commonComponents => commonComponents.fieldDescriptions,\n);\n\nexport const extendedProfileSelector = createSelector(\n commonComponentsSelector,\n commonComponents => commonComponents.extendedProfile,\n);\n","import React, { useState } from 'react';\n\nimport {\n Form, TransitionReplace,\n} from '@edx/paragon';\nimport PropTypes from 'prop-types';\n\nconst FormGroup = (props) => {\n const [hasFocus, setHasFocus] = useState(false);\n\n const handleFocus = (e) => {\n setHasFocus(true);\n if (props.handleFocus) { props.handleFocus(e); }\n };\n const handleClick = (e) => {\n if (props.handleClick) { props.handleClick(e); }\n };\n const handleOnBlur = (e) => {\n setHasFocus(false);\n if (props.handleBlur) { props.handleBlur(e); }\n };\n\n return (\n \n \n {props.options ? props.options() : null}\n \n \n {hasFocus && props.helpText ? (\n \n {props.helpText.map((message, index) => (\n \n {message}\n
\n
\n ))}\n
\n ) :
}\n \n {props.errorMessage !== '' && (\n {props.errorMessage}\n )}\n {props.children}\n \n );\n};\n\nFormGroup.defaultProps = {\n as: 'input',\n errorMessage: '',\n borderClass: '',\n autoComplete: null,\n readOnly: false,\n handleBlur: null,\n handleChange: () => {},\n handleFocus: null,\n handleClick: null,\n helpText: [],\n options: null,\n trailingElement: null,\n type: 'text',\n children: null,\n className: '',\n};\n\nFormGroup.propTypes = {\n as: PropTypes.string,\n errorMessage: PropTypes.string,\n borderClass: PropTypes.string,\n autoComplete: PropTypes.string,\n readOnly: PropTypes.bool,\n floatingLabel: PropTypes.string.isRequired,\n handleBlur: PropTypes.func,\n handleChange: PropTypes.func,\n handleFocus: PropTypes.func,\n handleClick: PropTypes.func,\n helpText: PropTypes.arrayOf(PropTypes.string),\n name: PropTypes.string.isRequired,\n options: PropTypes.func,\n trailingElement: PropTypes.element,\n type: PropTypes.string,\n value: PropTypes.string.isRequired,\n children: PropTypes.element,\n className: PropTypes.string,\n};\n\nexport default FormGroup;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\n\nimport {\n Form, IconButton, useToggle, Tooltip, OverlayTrigger, Icon,\n} from '@edx/paragon';\nimport {\n Check, Remove, Visibility, VisibilityOff,\n} from '@edx/paragon/icons';\n\nimport messages from './messages';\nimport { LETTER_REGEX, NUMBER_REGEX } from '../data/constants';\n\nconst PasswordField = (props) => {\n const { formatMessage } = props.intl;\n const [isPasswordHidden, setHiddenTrue, setHiddenFalse] = useToggle(true);\n const [showTooltip, setShowTooltip] = useState(false);\n\n const handleBlur = (e) => {\n if (props.handleBlur) { props.handleBlur(e); }\n setShowTooltip(props.showRequirements && false);\n };\n\n const handleFocus = (e) => {\n if (props.handleFocus) {\n props.handleFocus(e);\n }\n setTimeout(() => setShowTooltip(props.showRequirements && true), 150);\n };\n\n const HideButton = (\n \n );\n\n const ShowButton = (\n \n );\n const placement = window.innerWidth < 768 ? 'top' : 'left';\n const tooltip = (\n \n \n {LETTER_REGEX.test(props.value) ? : }\n {formatMessage(messages['one.letter'])}\n \n \n {NUMBER_REGEX.test(props.value) ? : }\n {formatMessage(messages['one.number'])}\n \n \n {props.value.length >= 8 ? : }\n {formatMessage(messages['eight.characters'])}\n \n \n );\n\n return (\n \n \n \n \n {props.errorMessage !== '' && (\n \n {props.errorMessage}\n {formatMessage(messages['password.sr.only.helping.text'])}\n \n )}\n \n );\n};\n\nPasswordField.defaultProps = {\n borderClass: '',\n errorMessage: '',\n handleBlur: null,\n handleFocus: null,\n handleChange: () => {},\n showRequirements: true,\n};\n\nPasswordField.propTypes = {\n borderClass: PropTypes.string,\n errorMessage: PropTypes.string,\n floatingLabel: PropTypes.string.isRequired,\n handleBlur: PropTypes.func,\n handleFocus: PropTypes.func,\n handleChange: PropTypes.func,\n intl: intlShape.isRequired,\n name: PropTypes.string.isRequired,\n showRequirements: PropTypes.bool,\n value: PropTypes.string.isRequired,\n};\n\nexport default injectIntl(PasswordField);\n","// Login Error Codes\nexport const INACTIVE_USER = 'inactive-user';\nexport const INTERNAL_SERVER_ERROR = 'internal-server-error';\nexport const INVALID_FORM = 'invalid-form';\nexport const NON_COMPLIANT_PASSWORD_EXCEPTION = 'NonCompliantPasswordException';\nexport const FORBIDDEN_REQUEST = 'forbidden-request';\nexport const FAILED_LOGIN_ATTEMPT = 'failed-login-attempt';\nexport const ACCOUNT_LOCKED_OUT = 'account-locked-out';\nexport const INCORRECT_EMAIL_PASSWORD = 'incorrect-email-or-password';\nexport const NUDGE_PASSWORD_CHANGE = 'nudge-password-change';\nexport const REQUIRE_PASSWORD_CHANGE = 'require-password-change';\n\n// Account Activation Message\nexport const ACCOUNT_ACTIVATION_MESSAGE = {\n INFO: 'info',\n SUCCESS: 'success',\n ERROR: 'error',\n};\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n 'login.page.title': {\n id: 'login.page.title',\n defaultMessage: 'Login | {siteName}',\n description: 'login page title',\n },\n // Login labels\n 'login.user.identity.label': {\n id: 'login.user.identity.label',\n defaultMessage: 'Username or email',\n description: 'Label for user identity field to enter either username or email to login',\n },\n 'login.password.label': {\n id: 'login.password.label',\n defaultMessage: 'Password',\n description: 'Label for password field',\n },\n 'sign.in.button': {\n id: 'sign.in.button',\n defaultMessage: 'Sign in',\n description: 'Sign in button label that appears on login page',\n },\n 'sign.in.btn.pending.state': {\n id: 'sign.in.btn.pending.state',\n defaultMessage: 'Loading',\n description: 'Title of icon that appears when button is in pending state',\n },\n 'need.help.signing.in.collapsible.menu': {\n id: 'need.help.signing.in.collapsible.menu',\n defaultMessage: 'Need help signing in?',\n description: 'A button for collapsible need help signing in menu on login page',\n },\n 'forgot.password.link': {\n id: 'forgot.password.link',\n defaultMessage: 'Forgot my password',\n description: 'Forgot password link',\n },\n 'forgot.password': {\n id: 'forgot.password',\n defaultMessage: 'Forgot password',\n description: 'Button text for forgot password',\n },\n 'other.sign.in.issues': {\n id: 'other.sign.in.issues',\n defaultMessage: 'Other sign in issues',\n description: 'A link that redirects to sign-in issues help',\n },\n 'need.other.help.signing.in.collapsible.menu': {\n id: 'need.other.help.signing.in.collapsible.menu',\n defaultMessage: 'Need other help signing in?',\n description: 'A button for collapsible need other help signing in menu on forgot password page',\n },\n 'institution.login.button': {\n id: 'institution.login.button',\n defaultMessage: 'Institution/campus credentials',\n description: 'shows institutions list',\n },\n 'institution.login.page.title': {\n id: 'institution.login.page.title',\n defaultMessage: 'Sign in with institution/campus credentials',\n description: 'Heading of institution page',\n },\n 'institution.login.page.sub.heading': {\n id: 'institution.login.page.sub.heading',\n defaultMessage: 'Choose your institution from the list below',\n description: 'Heading of the institutions list',\n },\n 'institution.login.page.back.button': {\n id: 'institution.login.page.back.button',\n defaultMessage: 'Back to sign in',\n description: 'return to login page',\n },\n 'create.an.account': {\n id: 'create.an.account',\n defaultMessage: 'Create an account',\n description: 'Message on button to return to register page',\n },\n 'login.other.options.heading': {\n id: 'login.other.options.heading',\n defaultMessage: 'Or',\n description: 'Text that appears above other sign in options like social auth buttons',\n },\n 'non.compliant.password.title': {\n id: 'non.compliant.password.title',\n defaultMessage: 'We recently changed our password requirements',\n description: 'A title that appears in bold before error message for non-compliant password',\n },\n 'non.compliant.password.message': {\n id: 'non.compliant.password.message',\n defaultMessage: 'Your current password does not meet the new security requirements. '\n + 'We just sent a password-reset message to the email address associated with this account. '\n + 'Thank you for helping us keep your data safe.',\n description: 'Error message for non-compliant password',\n },\n 'account.locked.out.message.1': {\n id: 'account.locked.out.message.1',\n defaultMessage: 'To protect your account, it\\'s been temporarily locked. Try again in 30 minutes.',\n description: 'Part of message for when user account has been locked out after multiple failed login attempts',\n },\n 'first.time.here': {\n id: 'first.time.here',\n defaultMessage: 'First time here?',\n description: 'A question that appears before sign up link',\n },\n 'email.help.message': {\n id: 'email.help.message',\n defaultMessage: 'The email address you used to register with edX.',\n description: 'Message that appears below email field on login page',\n },\n 'enterprise.login.btn.text': {\n id: 'enterprise.login.btn.text',\n defaultMessage: 'Company or school credentials',\n description: 'Company or school login link text.',\n },\n 'email.format.validation.message': {\n id: 'email.format.validation.message',\n defaultMessage: 'The email address you\\'ve provided isn\\'t formatted correctly.',\n description: 'Validation message that appears when email address format is incorrect',\n },\n 'username.or.email.format.validation.less.chars.message': {\n id: 'username.or.email.format.validation.less.chars.message',\n defaultMessage: 'Username or email must have at least 3 characters.',\n description: 'Validation message that appears when username or email address is less than 3 characters',\n },\n 'email.validation.message': {\n id: 'email.validation.message',\n defaultMessage: 'Enter your username or email',\n description: 'Validation message that appears when email is empty',\n },\n 'password.validation.message': {\n id: 'password.validation.message',\n defaultMessage: 'Enter your password',\n description: 'Validation message that appears when password is empty',\n },\n 'register.link': {\n id: 'register.link',\n defaultMessage: 'Create an account',\n description: 'Register page link',\n },\n 'sign.in.heading': {\n id: 'sign.in.heading',\n defaultMessage: 'Sign in',\n description: 'Sign in text',\n },\n // Account Activation Strings\n 'account.activation.success.message.title': {\n id: 'account.activation.success.message.title',\n defaultMessage: 'Success! You have activated your account.',\n description: 'Account Activation success message title',\n },\n 'account.activation.success.message': {\n id: 'account.activation.success.message',\n defaultMessage: 'You will now receive email updates and alerts from us related to the courses you are enrolled in. Sign in to continue.',\n description: 'Message show to learners when their account has been activated successfully',\n },\n 'account.activation.info.message': {\n id: 'account.activation.info.message',\n defaultMessage: 'This account has already been activated.',\n description: 'Message shown when learner account has already been activated',\n },\n 'account.activation.error.message.title': {\n id: 'account.activation.error.message.title',\n defaultMessage: 'Your account could not be activated',\n description: 'Account Activation error message title',\n },\n 'account.activation.support.link': {\n id: 'account.activation.support.link',\n defaultMessage: 'contact support',\n description: 'Link text used in account activation error message to go to learner help center',\n },\n // Email Confirmation Strings\n 'account.confirmation.success.message.title': {\n id: 'account.confirmation.success.message.title',\n defaultMessage: 'Success! You have confirmed your email.',\n description: 'Account verification success message title',\n },\n 'account.confirmation.success.message': {\n id: 'account.confirmation.success.message',\n defaultMessage: 'Sign in to continue.',\n description: 'Message show to learners when their account has been activated successfully',\n },\n 'account.confirmation.info.message': {\n id: 'account.confirmation.info.message',\n defaultMessage: 'This email has already been confirmed.',\n description: 'Message shown when learner account has already been verified',\n },\n 'account.confirmation.error.message.title': {\n id: 'account.confirmation.error.message.title',\n defaultMessage: 'Your email could not be confirmed',\n description: 'Account verification error message title',\n },\n 'internal.server.error.message': {\n id: 'internal.server.error.message',\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 'login.rate.limit.reached.message': {\n id: 'login.rate.limit.reached.message',\n defaultMessage: 'Too many failed login attempts. Try again later.',\n description: 'Error message that appears when an anonymous user has made too many failed login attempts',\n },\n 'login.failure.header.title': {\n id: 'login.failure.header.title',\n defaultMessage: 'We couldn\\'t sign you in.',\n description: 'Login failure header message.',\n },\n 'contact.support.link': {\n id: 'contact.support.link',\n defaultMessage: 'contact {platformName} support',\n description: 'Link text used in inactive user error message to go to learner help center',\n },\n 'login.incorrect.credentials.error': {\n id: 'login.incorrect.credentials.error',\n defaultMessage: 'The username, email, or password you entered is incorrect. Please try again.',\n description: 'Error message for incorrect email or password',\n },\n 'login.failed.attempt.error': {\n id: 'login.failed.attempt.error',\n defaultMessage: 'You have {remainingAttempts} more sign in attempts before your account is temporarily locked.',\n description: 'Failed login attempts error message',\n },\n 'login.locked.out.error.message': {\n id: 'login.locked.out.error.message',\n defaultMessage: 'To protect your account, it’s been temporarily locked. Try again in {lockedOutPeriod} minutes.',\n description: 'Account locked out user message',\n },\n 'login.form.invalid.error.message': {\n id: 'login.form.invalid.error.message',\n defaultMessage: 'Please fill in the fields below.',\n description: 'Login form empty input user message',\n },\n 'login.incorrect.credentials.error.reset.link.text': {\n id: 'login.incorrect.credentials.error.reset.link.text',\n defaultMessage: 'reset your password',\n description: 'Reset password link text for incorrect email or password credentials',\n },\n 'login.incorrect.credentials.error.before.account.blocked.text': {\n id: 'login.incorrect.credentials.error.before.account.blocked.text',\n defaultMessage: 'click here to reset it.',\n description: 'Reset password link text for incorrect email or password credentials before blocking account',\n },\n // Vulnerable password change prompt\n 'password.security.nudge.title': {\n id: 'password.security.nudge.title',\n defaultMessage: 'Password security',\n description: 'Title for prompt that nudges user to change their vulnerable password',\n },\n 'password.security.block.title': {\n id: 'password.security.block.title',\n defaultMessage: 'Password change required',\n description: 'Title for prompt that asks user to change their vulnerable password',\n },\n 'password.security.nudge.body': {\n id: 'password.security.nudge.body',\n defaultMessage: 'Our system detected that your password is vulnerable. '\n + 'We recommend you change it so that your account stays secure.',\n description: 'Message copy for prompt that nudges user to change their vulnerable password',\n },\n 'password.security.block.body': {\n id: 'password.security.block.body',\n defaultMessage: 'Our system detected that your password is vulnerable. '\n + 'Change your password so that your account stays secure.',\n description: 'Message copy for prompt that asks user to change their vulnerable password',\n },\n 'password.security.close.button': {\n id: 'password.security.close.button',\n defaultMessage: 'Close',\n description: 'Button to close popup',\n },\n 'password.security.redirect.to.reset.password.button': {\n id: 'password.security.redirect.to.reset.password.button',\n defaultMessage: 'Reset your password',\n description: 'Button to redirect users to Reset Password page',\n },\n});\n\nexport default messages;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { FormattedMessage, injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport { Alert } from '@edx/paragon';\nimport { CheckCircle, Error } from '@edx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nimport { ACCOUNT_ACTIVATION_MESSAGE } from './data/constants';\nimport messages from './messages';\n\nconst AccountActivationMessage = (props) => {\n const { intl, messageType } = props;\n const variant = messageType === ACCOUNT_ACTIVATION_MESSAGE.ERROR ? 'danger' : messageType;\n\n const activationOrVerification = getConfig().MARKETING_EMAILS_OPT_IN ? 'confirmation' : 'activation';\n\n let activationMessage;\n let heading;\n\n const iconMapping = {\n [ACCOUNT_ACTIVATION_MESSAGE.SUCCESS]: CheckCircle,\n [ACCOUNT_ACTIVATION_MESSAGE.ERROR]: Error,\n };\n\n switch (messageType) {\n case ACCOUNT_ACTIVATION_MESSAGE.SUCCESS: {\n heading = intl.formatMessage(messages[`account.${activationOrVerification}.success.message.title`]);\n activationMessage = {intl.formatMessage(messages[`account.${activationOrVerification}.success.message`])};\n break;\n }\n case ACCOUNT_ACTIVATION_MESSAGE.INFO: {\n activationMessage = intl.formatMessage(messages[`account.${activationOrVerification}.info.message`]);\n break;\n }\n case ACCOUNT_ACTIVATION_MESSAGE.ERROR: {\n const supportLink = (\n \n {intl.formatMessage(messages['account.activation.support.link'])}\n \n );\n\n heading = intl.formatMessage(messages[`account.${activationOrVerification}.error.message.title`]);\n activationMessage = (\n \n );\n break;\n }\n default:\n break;\n }\n\n return activationMessage ? (\n \n {heading && {heading}}\n {activationMessage}\n \n ) : null;\n};\n\nAccountActivationMessage.propTypes = {\n messageType: PropTypes.string.isRequired,\n intl: intlShape.isRequired,\n};\n\nexport default injectIntl(AccountActivationMessage);\n","import { AsyncActionType } from '../../data/utils';\n\nexport const LOGIN_REQUEST = new AsyncActionType('LOGIN', 'REQUEST');\n\n// Login\nexport const loginRequest = creds => ({\n type: LOGIN_REQUEST.BASE,\n payload: { creds },\n});\n\nexport const loginRequestBegin = () => ({\n type: LOGIN_REQUEST.BEGIN,\n});\n\nexport const loginRequestSuccess = (redirectUrl, success) => ({\n type: LOGIN_REQUEST.SUCCESS,\n payload: { redirectUrl, success },\n});\n\nexport const loginRequestFailure = (loginError) => ({\n type: LOGIN_REQUEST.FAILURE,\n payload: { loginError },\n});\n\nexport const loginRequestReset = () => ({\n type: LOGIN_REQUEST.RESET,\n});\n","import { createSelector } from 'reselect';\n\nexport const storeName = 'login';\n\nexport const loginSelector = state => ({ ...state[storeName] });\n\nexport const loginRequestSelector = createSelector(\n loginSelector,\n login => login.loginResult,\n);\n\nexport const loginErrorSelector = createSelector(\n loginSelector,\n login => login.loginError,\n);\n","import { useState, useEffect } from 'react';\n\nimport { breakpoints } from '@edx/paragon';\n\n/**\n * A react hook used to determine if the current window is mobile or not.\n * returns true if the window is of mobile size.\n * Code source: https://github.com/edx/prospectus/blob/master/src/utils/useMobileResponsive.js\n */\nconst useMobileResponsive = (breakpoint) => {\n const [isMobileWindow, setIsMobileWindow] = useState();\n const checkForMobile = () => {\n setIsMobileWindow(window.matchMedia(`(max-width: ${breakpoint || breakpoints.small.maxWidth}px)`).matches);\n };\n useEffect(() => {\n checkForMobile();\n window.addEventListener('resize', checkForMobile);\n // return this function here to clean up the event listener\n return () => window.removeEventListener('resize', checkForMobile);\n }, []);\n return isMobileWindow;\n};\n\nexport default useMobileResponsive;\n","import React, { useState } from 'react';\n\nimport classNames from 'classnames';\nimport { Link, Redirect } from 'react-router-dom';\nimport PropTypes from 'prop-types';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport {\n ActionRow, ModalDialog, useToggle,\n} from '@edx/paragon';\n\nimport messages from './messages';\nimport { DEFAULT_REDIRECT_URL, RESET_PAGE } from '../data/constants';\nimport { updatePathWithQueryParams } from '../data/utils';\nimport useMobileResponsive from '../data/utils/useMobileResponsive';\n\nconst ChangePasswordPrompt = ({ intl, 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 || getConfig().LMS_BASE_URL.concat(DEFAULT_REDIRECT_URL);\n }\n },\n };\n // eslint-disable-next-line no-unused-vars\n const [isOpen, open, close] = useToggle(true, handlers);\n\n if (redirectToResetPasswordPage) {\n return ;\n }\n return (\n \n \n \n {intl.formatMessage(messages[`password.security.${variant}.title`])}\n \n \n \n {intl.formatMessage(messages[`password.security.${variant}.body`])}\n \n \n \n {variant === 'nudge' ? (\n \n {intl.formatMessage(messages['password.security.close.button'])}\n \n ) : null}\n \n {intl.formatMessage(messages['password.security.redirect.to.reset.password.button'])}\n \n \n \n \n );\n};\n\nChangePasswordPrompt.defaultProps = {\n variant: 'block',\n redirectUrl: null,\n};\n\nChangePasswordPrompt.propTypes = {\n intl: intlShape.isRequired,\n variant: PropTypes.oneOf(['nudge', 'block']),\n redirectUrl: PropTypes.string,\n};\n\nexport default injectIntl(ChangePasswordPrompt);\n","import React from 'react';\n\nimport { FormattedMessage, injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport { getAuthService } from '@edx/frontend-platform/auth';\nimport { Alert, Hyperlink } from '@edx/paragon';\nimport { Error } from '@edx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nimport processLink from '../data/utils';\nimport {\n ACCOUNT_LOCKED_OUT,\n FAILED_LOGIN_ATTEMPT,\n FORBIDDEN_REQUEST,\n INACTIVE_USER,\n INCORRECT_EMAIL_PASSWORD,\n INTERNAL_SERVER_ERROR,\n INVALID_FORM,\n NON_COMPLIANT_PASSWORD_EXCEPTION,\n NUDGE_PASSWORD_CHANGE,\n REQUIRE_PASSWORD_CHANGE,\n} from './data/constants';\nimport messages from './messages';\nimport ChangePasswordPrompt from './ChangePasswordPrompt';\n\nconst LoginFailureMessage = (props) => {\n const { intl } = props;\n const { context, errorCode, value } = props.loginError;\n const authService = getAuthService();\n let errorList;\n let link;\n let resetLink = (\n \n {intl.formatMessage(messages['login.incorrect.credentials.error.reset.link.text'])}\n \n );\n\n switch (errorCode) {\n case NON_COMPLIANT_PASSWORD_EXCEPTION: {\n errorList = (\n <>\n {intl.formatMessage(messages['non.compliant.password.title'])}\n

{intl.formatMessage(messages['non.compliant.password.message'])}

\n \n );\n break;\n }\n case FORBIDDEN_REQUEST:\n errorList =

{intl.formatMessage(messages['login.rate.limit.reached.message'])}

;\n break;\n case INACTIVE_USER: {\n const supportLink = (\n
\n {intl.formatMessage(messages['contact.support.link'], { platformName: context.platformName })}\n \n );\n errorList = (\n

\n ,\n email: {props.loginError.email},\n supportLink,\n }}\n />\n

\n );\n break;\n }\n case INTERNAL_SERVER_ERROR:\n errorList =

{intl.formatMessage(messages['internal.server.error.message'])}

;\n break;\n case INVALID_FORM:\n errorList =

{intl.formatMessage(messages['login.form.invalid.error.message'])}

;\n break;\n case FAILED_LOGIN_ATTEMPT: {\n resetLink = (\n \n {intl.formatMessage(messages['login.incorrect.credentials.error.before.account.blocked.text'])}\n \n );\n errorList = (\n <>\n

\n \n

\n

\n \n

\n \n );\n break;\n }\n case ACCOUNT_LOCKED_OUT: {\n errorList = (\n <>\n

{intl.formatMessage(messages['account.locked.out.message.1'])}

\n

\n \n

\n \n );\n break;\n }\n case INCORRECT_EMAIL_PASSWORD:\n if (context.failureCount <= 1) {\n errorList =

{intl.formatMessage(messages['login.incorrect.credentials.error'])}

;\n } else if (context.failureCount === 2) {\n errorList = (\n

\n \n

\n );\n }\n break;\n case NUDGE_PASSWORD_CHANGE:\n // Need to clear the CSRF token here to fetch a new one because token is already rotated after successful login.\n if (authService) {\n authService.getCsrfTokenService().clearCsrfTokenCache();\n }\n return (\n \n );\n case REQUIRE_PASSWORD_CHANGE:\n return ;\n default:\n // TODO: use errorCode instead of processing error messages on frontend\n errorList = value.trim().split('\\n');\n errorList = errorList.map((error) => {\n let matches;\n if (error.includes('a href')) {\n matches = processLink(error);\n const [beforeLink, href, linkText, afterLink] = matches;\n link = href;\n if (href.indexOf('/dashboard?tpa_hint') === 0) {\n link = `/login?next=${href}`;\n }\n return (\n

\n {beforeLink}\n {linkText}\n {afterLink}\n

\n );\n }\n return

{error}

;\n });\n }\n\n return (\n \n {intl.formatMessage(messages['login.failure.header.title'])}\n { errorList }\n \n );\n};\n\nLoginFailureMessage.defaultProps = {\n loginError: {\n redirectUrl: null,\n errorCode: null,\n value: '',\n },\n};\n\nLoginFailureMessage.propTypes = {\n loginError: PropTypes.shape({\n context: PropTypes.object,\n email: PropTypes.string,\n errorCode: PropTypes.string,\n value: PropTypes.string,\n redirectUrl: PropTypes.string,\n }),\n intl: intlShape.isRequired,\n};\n\nexport default injectIntl(LoginFailureMessage);\n","import React from 'react';\n\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport PropTypes from 'prop-types';\nimport { getConfig } from '@edx/frontend-platform';\nimport { faSignInAlt } from '@fortawesome/free-solid-svg-icons';\n\nimport {\n Form, Button,\n} from '@edx/paragon';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport { LOGIN_PAGE, SUPPORTED_ICON_CLASSES } from '../data/constants';\nimport messages from './messages';\n\nconst EnterpriseSSO = (props) => {\n const { intl } = props;\n const tpaProvider = props.provider;\n\n const handleSubmit = (e, url) => {\n e.preventDefault();\n window.location.href = getConfig().LMS_BASE_URL + url;\n };\n\n const handleClick = (e) => {\n e.preventDefault();\n window.location.href = LOGIN_PAGE;\n };\n\n if (tpaProvider) {\n return (\n
\n
\n
\n
\n

{intl.formatMessage(messages['enterprisetpa.title.heading'], { providerName: tpaProvider.name })}

\n handleSubmit(e, tpaProvider.loginUrl)}\n >\n {tpaProvider.iconImage ? (\n
\n {`icon\n { tpaProvider.name }\n
\n )\n : (\n <>\n
\n \n
\n { tpaProvider.name }\n \n )}\n \n
\n handleClick(e)}\n >\n {intl.formatMessage(messages['enterprisetpa.login.button.text'])}\n \n \n
\n
\n
\n );\n }\n return
;\n};\n\nEnterpriseSSO.defaultProps = {\n provider: {\n id: '',\n name: '',\n iconClass: '',\n iconImage: '',\n loginUrl: '',\n registerUrl: '',\n },\n};\n\nEnterpriseSSO.propTypes = {\n provider: PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n iconClass: PropTypes.string,\n iconImage: PropTypes.string,\n loginUrl: PropTypes.string,\n registerUrl: PropTypes.string,\n }),\n intl: intlShape.isRequired,\n};\n\nexport default injectIntl(EnterpriseSSO);\n","import { AsyncActionType } from '../../data/utils';\n\nexport const FORGOT_PASSWORD = new AsyncActionType('FORGOT', 'PASSWORD');\n\n// Forgot Password\nexport const forgotPassword = email => ({\n type: FORGOT_PASSWORD.BASE,\n payload: { email },\n});\n\nexport const forgotPasswordBegin = () => ({\n type: FORGOT_PASSWORD.BEGIN,\n});\n\nexport const forgotPasswordSuccess = email => ({\n type: FORGOT_PASSWORD.SUCCESS,\n payload: { email },\n});\n\nexport const forgotPasswordForbidden = () => ({\n type: FORGOT_PASSWORD.FORBIDDEN,\n});\n\nexport const forgotPasswordServerError = () => ({\n type: FORGOT_PASSWORD.FAILURE,\n});\n","import { createSelector } from 'reselect';\n\nexport const storeName = 'forgotPassword';\n\nexport const forgotPasswordSelector = state => ({ ...state[storeName] });\n\nexport const forgotPasswordResultSelector = createSelector(\n forgotPasswordSelector,\n forgotPassword => forgotPassword,\n);\n","import { defineMessages } from '@edx/frontend-platform/i18n';\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.invalid.email.heading': {\n id: 'forgot.password.invalid.email',\n defaultMessage: 'An error occurred.',\n description: 'heading for invalid email',\n },\n 'forgot.password.invalid.email.message': {\n id: 'forgot.password.invalid.email.message',\n defaultMessage: \"The email address you've provided isn't formatted correctly.\",\n description: 'message for invalid email',\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 {siteName} 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 'rate.limit.error': {\n id: '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});\nexport default messages;\n","export const TOKEN_STATE = {\n PENDING: 'token-pending',\n VALID: 'token-valid',\n};\n\n// password reset error codes\nexport const FORM_SUBMISSION_ERROR = 'form-submission-error';\nexport const PASSWORD_RESET_ERROR = 'password-reset-error';\nexport const PASSWORD_VALIDATION_ERROR = 'password-validation-failure';\n\nexport const PASSWORD_RESET = {\n INVALID_TOKEN: 'invalid-token',\n INTERNAL_SERVER_ERROR: 'password-reset-internal-server-error',\n FORBIDDEN_REQUEST: 'password-reset-rate-limit-error',\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { FormattedMessage, injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport { Alert } from '@edx/paragon';\nimport { CheckCircle, Error } from '@edx/paragon/icons';\n\nimport messages from './messages';\nimport { INTERNAL_SERVER_ERROR } from '../data/constants';\nimport { PASSWORD_RESET } from '../reset-password/data/constants';\n\nconst ForgotPasswordAlert = (props) => {\n const { email, emailError, intl } = props;\n let { status } = props;\n\n if (emailError) {\n status = 'form-submission-error';\n }\n\n let message = '';\n let heading = intl.formatMessage(messages['forgot.password.error.alert.title']);\n const supportUrl = getConfig().PASSWORD_RESET_SUPPORT_LINK;\n switch (status) {\n case 'complete':\n heading = intl.formatMessage(messages['confirmation.message.title']);\n message = (\n {email},\n supportLink: (\n {\n e.preventDefault();\n window.open(supportUrl, '_blank');\n }}\n >\n {intl.formatMessage(messages['confirmation.support.link'])}\n \n ),\n }}\n />\n );\n break;\n case INTERNAL_SERVER_ERROR:\n message = intl.formatMessage(messages['internal.server.error']);\n break;\n case 'forbidden':\n heading = intl.formatMessage(messages['forgot.password.error.message.title']);\n message = intl.formatMessage(messages['forgot.password.request.in.progress.message']);\n break;\n case 'form-submission-error':\n message = intl.formatMessage(messages['extend.field.errors'], { emailError });\n break;\n case PASSWORD_RESET.INVALID_TOKEN:\n heading = intl.formatMessage(messages['invalid.token.heading']);\n message = intl.formatMessage(messages['invalid.token.error.message']);\n break;\n case PASSWORD_RESET.FORBIDDEN_REQUEST:\n heading = intl.formatMessage(messages['token.validation.rate.limit.error.heading']);\n message = intl.formatMessage(messages['token.validation.rate.limit.error']);\n break;\n case PASSWORD_RESET.INTERNAL_SERVER_ERROR:\n heading = intl.formatMessage(messages['token.validation.internal.sever.error.heading']);\n message = intl.formatMessage(messages['token.validation.internal.sever.error']);\n break;\n default:\n break;\n }\n\n if (message) {\n return (\n \n {heading}\n

{message}

\n \n );\n }\n return null;\n};\n\nForgotPasswordAlert.defaultProps = {\n email: '',\n emailError: '',\n};\n\nForgotPasswordAlert.propTypes = {\n status: PropTypes.string.isRequired,\n email: PropTypes.string,\n intl: intlShape.isRequired,\n emailError: PropTypes.string,\n};\n\nexport default injectIntl(ForgotPasswordAlert);\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n 'discover.future': {\n id: 'discover.future',\n defaultMessage: 'Discover Your Future',\n description: 'Header text for logistration MFE pages',\n },\n 'start.learning': {\n id: 'start.learning',\n defaultMessage: 'Start learning',\n description: 'Header text for logistration MFE pages',\n },\n 'with.site.name': {\n id: 'with.site.name',\n defaultMessage: 'with {siteName}',\n description: 'Header text with site name for logistration MFE pages',\n },\n 'code.copied': {\n id: 'code.copied',\n defaultMessage: 'Code copied',\n description: 'part of 15% discount code copied',\n },\n // authenticated user base component text\n 'complete.your.profile.1': {\n id: 'complete.your.profile.1',\n defaultMessage: 'Complete',\n description: 'part of text \"complete your profile\"',\n },\n 'complete.your.profile.2': {\n id: 'complete.your.profile.2',\n defaultMessage: 'your profile',\n description: 'part of text \"complete your profile\"',\n },\n 'welcome.to.platform': {\n id: 'welcome.to.platform',\n defaultMessage: 'Welcome to {siteName}, {username}!',\n description: 'Welcome message that appears on progressive profile page',\n },\n});\n\nexport default messages;\n","import React from 'react';\n\nimport { FormattedMessage } from '@edx/frontend-platform/i18n';\n\nexport default function SideDiscountBanner() {\n const getDiscountText = () => (\n \n 15% \n \n );\n const getCerificateMsg = () => (\n \n \n \n );\n return (\n \n ,\n certificateMsg: getCerificateMsg(),\n }}\n />\n \n );\n}\n","import React, { useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport PropTypes from 'prop-types';\nimport ClipboardJS from 'clipboard';\n\nimport { faCut } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Toast } from '@edx/paragon';\n\nimport messages from './messages';\nimport SideDiscountBanner from './SideDiscountBanner';\n\nconst LargeLeftLayout = (props) => {\n const { intl, isRegistrationPage, experimentName } = props;\n const [showToast, setToastShow] = useState(false);\n new ClipboardJS('.copyIcon'); // eslint-disable-line no-new\n\n return (\n
\n setToastShow(false)}\n show={showToast}\n >\n {intl.formatMessage(messages['code.copied'])}\n \n \n \n \n
\n

\n {intl.formatMessage(messages['discover.future'])}\n
\n

\n {experimentName === 'variation1' && isRegistrationPage ? (\n \n \n \n \n \n EDXWELCOME\n setToastShow(true)}\n />\n \n \n ) : null}\n
\n
\n );\n};\n\nLargeLeftLayout.propTypes = {\n intl: intlShape.isRequired,\n experimentName: PropTypes.string,\n isRegistrationPage: PropTypes.bool,\n};\n\nLargeLeftLayout.defaultProps = {\n experimentName: '',\n isRegistrationPage: false,\n};\n\nexport default injectIntl(LargeLeftLayout);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { Hyperlink, Image } from '@edx/paragon';\n\nimport LargeScreenLeftLayout from './LargeLeftLayout';\n\nconst LargeLayout = ({ experimentName, isRegistrationPage }) => (\n
\n
\n \n {getConfig().SITE_NAME}\n \n \n
\n
\n \n \n \n \n \n
\n
\n);\n\nLargeLayout.defaultProps = {\n experimentName: '',\n isRegistrationPage: false,\n};\n\nLargeLayout.propTypes = {\n experimentName: PropTypes.string,\n isRegistrationPage: PropTypes.bool,\n};\n\nexport default LargeLayout;\n","import React, { useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport { getConfig } from '@edx/frontend-platform';\nimport { Hyperlink, Image, Toast } from '@edx/paragon';\nimport PropTypes from 'prop-types';\n\nimport ClipboardJS from 'clipboard';\n\nimport { faCut } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport messages from './messages';\nimport SideDiscountBanner from './SideDiscountBanner';\n\nconst MediumLayout = (props) => {\n const { intl, isRegistrationPage, experimentName } = props;\n const [showToast, setToastShow] = useState(false);\n new ClipboardJS('.copyIcon'); // eslint-disable-line no-new\n\n return (\n
\n setToastShow(false)}\n show={showToast}\n >\n {intl.formatMessage(messages['code.copied'])}\n \n
\n \n {getConfig().SITE_NAME}\n \n
\n \n \n \n
\n

\n {intl.formatMessage(messages['discover.future'])}\n

\n {experimentName === 'variation1' && isRegistrationPage ? (\n
\n \n \n EDXWELCOME \n setToastShow(true)}\n />\n \n
\n ) : null}\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n
\n );\n};\n\nMediumLayout.propTypes = {\n intl: intlShape.isRequired,\n experimentName: PropTypes.string,\n isRegistrationPage: PropTypes.bool,\n};\n\nMediumLayout.defaultProps = {\n experimentName: '',\n isRegistrationPage: false,\n};\n\nexport default injectIntl(MediumLayout);\n","import React, { useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport { getConfig } from '@edx/frontend-platform';\nimport { Hyperlink, Image, Toast } from '@edx/paragon';\n\nimport PropTypes from 'prop-types';\n\nimport ClipboardJS from 'clipboard';\n\nimport { faCut } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport messages from './messages';\nimport SideDiscountBanner from './SideDiscountBanner';\n\nconst SmallLayout = (props) => {\n const { intl, isRegistrationPage, experimentName } = props;\n const [showToast, setToastShow] = useState(false);\n new ClipboardJS('.copyIcon'); // eslint-disable-line no-new\n\n return (\n <>\n
\n setToastShow(false)}\n show={showToast}\n >\n {intl.formatMessage(messages['code.copied'])}\n \n \n {getConfig().SITE_NAME}\n \n
\n \n \n \n
\n

\n {intl.formatMessage(messages['discover.future'])}\n
\n

\n {(experimentName === 'variation1' && isRegistrationPage) ? (\n
\n \n \n EDXWELCOME\n setToastShow(true)}\n />\n \n
\n ) : null}\n
\n
\n
\n \n );\n};\n\nSmallLayout.propTypes = {\n intl: intlShape.isRequired,\n experimentName: PropTypes.string,\n isRegistrationPage: PropTypes.bool,\n};\n\nSmallLayout.defaultProps = {\n experimentName: '',\n isRegistrationPage: false,\n\n};\n\nexport default injectIntl(SmallLayout);\n","import React from 'react';\n\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport {\n Col, Hyperlink, Image, Row,\n} from '@edx/paragon';\n\nimport messages from './messages';\n\nconst AuthExtraLargeLayout = (props) => {\n const { intl, username, variant } = props;\n\n return (\n
\n
\n \n {getConfig().SITE_NAME}\n \n
\n
\n \n \n \n \n \n \n \n
\n {intl.formatMessage(\n messages['welcome.to.platform'], { siteName: getConfig().SITE_NAME, username },\n )}\n
\n \n {intl.formatMessage(messages['complete.your.profile.1'])}\n \n
\n {intl.formatMessage(messages['complete.your.profile.2'])}\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n );\n};\n\nAuthExtraLargeLayout.defaultProps = {\n variant: 'xl',\n};\n\nAuthExtraLargeLayout.propTypes = {\n intl: intlShape.isRequired,\n username: PropTypes.string.isRequired,\n variant: PropTypes.oneOf(['xl', 'xxl']),\n};\n\nexport default injectIntl(AuthExtraLargeLayout);\n","import React from 'react';\n\nimport PropTypes from 'prop-types';\n\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport { getConfig } from '@edx/frontend-platform';\nimport {\n Col, Hyperlink, Image, Row,\n} from '@edx/paragon';\n\nimport messages from './messages';\n\nconst AuthMediumLayout = (props) => {\n const { intl, username } = props;\n\n return (\n
\n
\n \n {getConfig().SITE_NAME}\n \n
\n
\n \n \n \n \n \n \n \n

\n {intl.formatMessage(\n messages['welcome.to.platform'], { siteName: getConfig().SITE_NAME, username },\n )}\n

\n
\n {intl.formatMessage(messages['complete.your.profile.1'])}\n \n
\n {intl.formatMessage(messages['complete.your.profile.2'])}\n
\n
\n \n
\n
\n
\n
\n
\n \n \n \n \n \n
\n
\n );\n};\n\nAuthMediumLayout.propTypes = {\n intl: intlShape.isRequired,\n username: PropTypes.string.isRequired,\n};\n\nexport default injectIntl(AuthMediumLayout);\n","import React from 'react';\n\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport {\n Col, Hyperlink, Image, Row,\n} from '@edx/paragon';\n\nimport messages from './messages';\n\nconst AuthSmallLayout = (props) => {\n const { intl, username, variant } = props;\n\n return (\n
\n \n {getConfig().SITE_NAME}\n \n
\n
\n \n \n \n \n \n \n \n
\n {intl.formatMessage(\n messages['welcome.to.platform'], { siteName: getConfig().SITE_NAME, username },\n )}\n
\n

\n {intl.formatMessage(messages['complete.your.profile.1'])}\n
\n \n {intl.formatMessage(messages['complete.your.profile.2'])}\n \n

\n \n
\n
\n
\n
\n );\n};\n\nAuthSmallLayout.defaultProps = {\n variant: 'sm',\n};\n\nAuthSmallLayout.propTypes = {\n intl: intlShape.isRequired,\n username: PropTypes.string.isRequired,\n variant: PropTypes.oneOf(['sm', 'xs']),\n};\n\nexport default injectIntl(AuthSmallLayout);\n","import React, { useState } from 'react';\n\nimport ClipboardJS from 'clipboard';\n\nimport { injectIntl, intlShape, FormattedMessage } from '@edx/frontend-platform/i18n';\nimport { faCut } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport { Toast, PageBanner } from '@edx/paragon';\nimport messages from './messages';\n\nconst DiscountExperimentBanner = (props) => {\n const { intl } = props;\n const [show, setShow] = useState(true);\n const [showToast, setToastShow] = useState(false);\n new ClipboardJS('.copyIcon'); // eslint-disable-line no-new\n const getDiscountText = () => (\n \n 15% \n \n );\n\n return (\n <>\n setToastShow(false)}\n show={showToast}\n >\n {intl.formatMessage(messages['code.copied'])}\n \n { setShow(false); }}\n >\n \n \n \n \n \n EDXWELCOME\n setToastShow(true)}\n />\n \n \n \n \n );\n};\n\nDiscountExperimentBanner.propTypes = {\n intl: intlShape.isRequired,\n\n};\nexport default injectIntl(DiscountExperimentBanner);\n","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\nimport { getAuthenticatedUser } from '@edx/frontend-platform/auth';\nimport MediaQuery from 'react-responsive';\nimport { breakpoints } from '@edx/paragon';\nimport CookiePolicyBanner from '@edx/frontend-component-cookie-policy-banner';\nimport { getLocale } from '@edx/frontend-platform/i18n';\n\nimport LargeLayout from './LargeLayout';\nimport MediumLayout from './MediumLayout';\nimport SmallLayout from './SmallLayout';\n\nimport AuthExtraLargeLayout from './AuthExtraLargeLayout';\nimport AuthMediumLayout from './AuthMediumLayout';\nimport AuthSmallLayout from './AuthSmallLayout';\nimport DiscountExperimentBanner from './DiscountBanner';\n\nconst BaseComponent = ({ children, isRegistrationPage, showWelcomeBanner }) => {\n const authenticatedUser = showWelcomeBanner ? getAuthenticatedUser() : null;\n const [optimizelyExperimentName, setOptimizelyExperimentName] = useState('');\n\n useEffect(() => {\n const { experimentName } = window;\n\n if (experimentName) {\n setOptimizelyExperimentName(experimentName);\n }\n });\n\n return (\n <>\n {isRegistrationPage && optimizelyExperimentName === 'variation2' ? : null}\n \n \n
\n \n \n
\n \n\n
\n \n
\n {authenticatedUser ? : (\n \n )}\n \n \n
\n {authenticatedUser ? : (\n \n )}\n \n \n
\n {authenticatedUser ? : (\n \n )}\n \n \n
\n {authenticatedUser ? : (\n \n )}\n \n \n {authenticatedUser ? : (\n \n )}\n \n \n {authenticatedUser ? : (\n \n )}\n \n\n
\n {children}\n
\n
\n \n );\n};\n\nBaseComponent.defaultProps = {\n isRegistrationPage: false,\n showWelcomeBanner: false,\n};\n\nBaseComponent.propTypes = {\n children: PropTypes.node.isRequired,\n isRegistrationPage: PropTypes.bool,\n showWelcomeBanner: PropTypes.bool,\n};\n\nexport default BaseComponent;\n","import React, { useState, useEffect } from 'react';\n\nimport { Formik } from 'formik';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Helmet } from 'react-helmet';\nimport { Redirect } from 'react-router-dom';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { sendPageEvent, sendTrackEvent } from '@edx/frontend-platform/analytics';\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport {\n Form,\n StatefulButton,\n Hyperlink,\n Tabs,\n Tab,\n Icon,\n} from '@edx/paragon';\nimport { ChevronLeft } from '@edx/paragon/icons';\n\nimport { forgotPassword } from './data/actions';\nimport { forgotPasswordResultSelector } from './data/selectors';\n\nimport messages from './messages';\nimport { FormGroup } from '../common-components';\nimport { DEFAULT_STATE, LOGIN_PAGE, VALID_EMAIL_REGEX } from '../data/constants';\nimport { updatePathWithQueryParams, windowScrollTo } from '../data/utils';\nimport ForgotPasswordAlert from './ForgotPasswordAlert';\nimport BaseComponent from '../base-component';\n\nconst ForgotPasswordPage = (props) => {\n const { intl, status, submitState } = props;\n\n const platformName = getConfig().SITE_NAME;\n const regex = new RegExp(VALID_EMAIL_REGEX, 'i');\n const [validationError, setValidationError] = useState('');\n const [key, setKey] = useState('');\n const supportUrl = getConfig().LOGIN_ISSUE_SUPPORT_LINK;\n\n useEffect(() => {\n sendPageEvent('login_and_registration', 'reset');\n sendTrackEvent('edx.bi.password_reset_form.viewed', { category: 'user-engagement' });\n }, []);\n\n const getValidationMessage = (email) => {\n let error = '';\n\n if (email === '') {\n error = intl.formatMessage(messages['forgot.password.empty.email.field.error']);\n } else if (!regex.test(email)) {\n error = intl.formatMessage(messages['forgot.password.page.invalid.email.message']);\n }\n\n setValidationError(error);\n return error;\n };\n\n const tabTitle = (\n
\n \n {intl.formatMessage(messages['sign.in.text'])}\n
\n );\n\n return (\n \n
\n setKey(k)}>\n \n \n { key && (\n \n )}\n
\n {\n const validationMessage = getValidationMessage(values.email);\n\n if (validationMessage !== '') {\n windowScrollTo({ left: 0, top: 0, behavior: 'smooth' });\n return { email: validationMessage };\n }\n\n return {};\n }}\n onSubmit={(values) => { props.forgotPassword(values.email); }}\n >\n {({\n errors, handleSubmit, setFieldValue, values,\n }) => (\n <>\n \n {intl.formatMessage(messages['forgot.password.page.title'],\n { siteName: getConfig().SITE_NAME })}\n \n \n
\n \n

\n {intl.formatMessage(messages['forgot.password.page.heading'])}\n

\n

\n {intl.formatMessage(messages['forgot.password.page.instructions'])}\n

\n getValidationMessage(values.email)}\n handleChange={e => setFieldValue('email', e.target.value)}\n handleFocus={() => setValidationError('')}\n helpText={[intl.formatMessage(messages['forgot.password.email.help.text'], { platformName })]}\n />\n e.preventDefault()}\n />\n {\n e.preventDefault();\n window.open(supportUrl, '_blank');\n }}\n >{intl.formatMessage(messages['need.help.sign.in.text'])}\n \n

{intl.formatMessage(messages['additional.help.text'], { platformName })}\n {getConfig().INFO_EMAIL}\n

\n \n \n )}\n \n
\n
\n
\n );\n};\n\nForgotPasswordPage.propTypes = {\n intl: intlShape.isRequired,\n email: PropTypes.string,\n forgotPassword: PropTypes.func.isRequired,\n status: PropTypes.string,\n submitState: PropTypes.string,\n};\n\nForgotPasswordPage.defaultProps = {\n email: '',\n status: null,\n submitState: DEFAULT_STATE,\n};\n\nexport default connect(\n forgotPasswordResultSelector,\n {\n forgotPassword,\n },\n)(injectIntl(ForgotPasswordPage));\n","import { AsyncActionType } from '../../data/utils';\n\nexport const RESET_PASSWORD = new AsyncActionType('RESET', 'PASSWORD');\nexport const VALIDATE_TOKEN = new AsyncActionType('VALIDATE', 'TOKEN');\nexport const PASSWORD_RESET_FAILURE = 'PASSWORD_RESET_FAILURE';\n\nexport const passwordResetFailure = (errorCode) => ({\n type: PASSWORD_RESET_FAILURE,\n payload: { errorCode },\n});\n\n// Validate confirmation token\nexport const validateToken = (token) => ({\n type: VALIDATE_TOKEN.BASE,\n payload: { token },\n});\n\nexport const validateTokenBegin = () => ({\n type: VALIDATE_TOKEN.BEGIN,\n});\n\nexport const validateTokenSuccess = (tokenStatus, token) => ({\n type: VALIDATE_TOKEN.SUCCESS,\n payload: { tokenStatus, token },\n});\n\nexport const validateTokenFailure = errorCode => ({\n type: VALIDATE_TOKEN.FAILURE,\n payload: { errorCode },\n});\n\n// Reset Password\nexport const resetPassword = (formPayload, token, params) => ({\n type: RESET_PASSWORD.BASE,\n payload: { formPayload, token, params },\n});\n\nexport const resetPasswordBegin = () => ({\n type: RESET_PASSWORD.BEGIN,\n});\n\nexport const resetPasswordSuccess = data => ({\n type: RESET_PASSWORD.SUCCESS,\n payload: { data },\n});\n\nexport const resetPasswordFailure = (errorCode, errorMsg = null) => ({\n type: RESET_PASSWORD.FAILURE,\n payload: { errorCode, errorMsg: errorMsg || errorCode },\n});\n","import { FORGOT_PASSWORD } from './actions';\nimport { INTERNAL_SERVER_ERROR, PENDING_STATE } from '../../data/constants';\nimport { PASSWORD_RESET_FAILURE } from '../../reset-password/data/actions';\n\nexport const defaultState = {\n status: '',\n submitState: '',\n email: '',\n};\n\nconst reducer = (state = defaultState, action = null) => {\n if (action !== null) {\n switch (action.type) {\n case FORGOT_PASSWORD.BEGIN:\n return {\n status: 'pending',\n submitState: PENDING_STATE,\n };\n case FORGOT_PASSWORD.SUCCESS:\n return {\n ...action.payload,\n status: 'complete',\n };\n case FORGOT_PASSWORD.FORBIDDEN:\n return {\n status: 'forbidden',\n };\n case FORGOT_PASSWORD.FAILURE:\n return {\n status: INTERNAL_SERVER_ERROR,\n };\n case PASSWORD_RESET_FAILURE:\n return {\n status: action.payload.errorCode,\n };\n default:\n return defaultState;\n }\n }\n return state;\n};\n\nexport default reducer;\n","import { getConfig } from '@edx/frontend-platform';\nimport { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';\nimport formurlencoded from 'form-urlencoded';\n\n// eslint-disable-next-line import/prefer-default-export\nexport async function forgotPassword(email) {\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 `${getConfig().LMS_BASE_URL}/account/password`,\n formurlencoded({ email }),\n requestConfig,\n )\n .catch((e) => {\n throw (e);\n });\n\n return data;\n}\n","import { logError, logInfo } from '@edx/frontend-platform/logging';\nimport { call, put, takeEvery } from 'redux-saga/effects';\n\n// Actions\nimport {\n FORGOT_PASSWORD,\n forgotPasswordBegin,\n forgotPasswordSuccess,\n forgotPasswordForbidden,\n forgotPasswordServerError,\n} from './actions';\n\nimport { forgotPassword } from './service';\n\n// Services\nexport function* handleForgotPassword(action) {\n try {\n yield put(forgotPasswordBegin());\n\n yield call(forgotPassword, action.payload.email);\n\n yield put(forgotPasswordSuccess(action.payload.email));\n } catch (e) {\n if (e.response && e.response.status === 403) {\n yield put(forgotPasswordForbidden());\n logInfo(e);\n } else {\n yield put(forgotPasswordServerError());\n logError(e);\n }\n }\n}\n\nexport default function* saga() {\n yield takeEvery(FORGOT_PASSWORD.BASE, handleForgotPassword);\n}\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n 'sign.in': {\n id: 'sign.in',\n defaultMessage: 'Sign in',\n description: 'Sign in toggle text',\n },\n 'reset.password.page.title': {\n id: 'reset.password.page.title',\n defaultMessage: 'Reset Password | {siteName}',\n description: 'page title',\n },\n 'reset.password': {\n id: 'reset.password',\n defaultMessage: 'Reset password',\n description: 'The page heading and button text for reset password page.',\n },\n 'reset.password.page.instructions': {\n id: 'reset.password.page.instructions',\n defaultMessage: 'Enter and confirm your new password.',\n description: 'Instructions message for reset password page.',\n },\n 'new.password.label': {\n id: 'new.password.label',\n defaultMessage: 'New password',\n description: 'New password field label for the reset password page.',\n },\n 'confirm.password.label': {\n id: 'confirm.password.label',\n defaultMessage: 'Confirm password',\n description: 'Confirm password field label for the reset password page.',\n },\n // validation errors\n 'password.validation.message': {\n id: 'password.validation.message',\n defaultMessage: 'Password criteria has not been met',\n description: 'Error message for empty or invalid password',\n },\n 'passwords.do.not.match': {\n id: 'passwords.do.not.match',\n defaultMessage: 'Passwords do not match',\n description: 'Password format error.',\n },\n 'confirm.your.password': {\n id: 'confirm.your.password',\n defaultMessage: 'Confirm your password',\n description: 'Field validation message when confirm password is empty',\n },\n 'forgot.password.confirmation.sign.in.link': {\n id: 'forgot.password.confirmation.sign.in.link',\n defaultMessage: 'sign in',\n description: 'link text used in message to refer to sign in page',\n },\n 'reset.password.request.forgot.password.text': {\n id: 'reset.password.request.forgot.password.text',\n defaultMessage: 'Forgot password',\n description: 'Forgot password text',\n },\n 'reset.password.request.invalid.token.header': {\n id: 'reset.password.request.invalid.token.header',\n defaultMessage: 'Invalid password reset link',\n description: 'Invalid password reset link help text heading',\n },\n 'reset.password.empty.new.password.field.error': {\n id: 'reset.password.empty.new.password.field.error',\n defaultMessage: 'Please enter your new password.',\n description: 'Error message that appears when user tries to submit form with empty New Password field',\n },\n // alert banner strings\n 'reset.password.failure.heading': {\n id: 'reset.password.failure.heading',\n defaultMessage: 'We couldn\\'t reset your password.',\n description: 'Heading for reset password request failure',\n },\n 'reset.password.form.submission.error': {\n id: 'reset.password.form.submission.error',\n defaultMessage: 'Please check your responses and try again.',\n description: 'Error message for reset password page',\n },\n 'reset.password.request.server.error': {\n id: 'reset.password.request.server.error',\n defaultMessage: 'Failed to reset password',\n description: 'Failed to reset password error message heading.',\n },\n 'reset.password.token.validation.sever.error': {\n id: 'reset.password.token.validation.sever.error',\n defaultMessage: 'Token validation failure',\n description: 'Failed to validate reset password token error message.',\n },\n 'reset.server.rate.limit.error': {\n id: 'reset.server.rate.limit.error',\n defaultMessage: 'Too many requests.',\n description: 'Too many request at server end point',\n },\n 'reset.password.success.heading': {\n id: 'reset.password.success.heading',\n defaultMessage: 'Password reset complete.',\n description: 'Heading for alert box when reset password is successful',\n },\n 'reset.password.success': {\n id: 'reset.password.success',\n defaultMessage: 'Your password has been reset. Sign in to your account.',\n description: 'Reset password success message',\n },\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 'rate.limit.error': {\n id: '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});\n\nexport default messages;\n","import React from 'react';\n\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport { Alert } from '@edx/paragon';\n\nimport messages from './messages';\n\nconst ResetPasswordSuccess = (props) => {\n const { intl } = props;\n\n return (\n \n \n {intl.formatMessage(messages['reset.password.success.heading'])}\n \n

{intl.formatMessage(messages['reset.password.success'])}

\n
\n );\n};\n\nResetPasswordSuccess.propTypes = {\n intl: intlShape.isRequired,\n};\n\nexport default injectIntl(ResetPasswordSuccess);\n","import React from 'react';\n\nimport PropTypes from 'prop-types';\nimport { Helmet } from 'react-helmet';\nimport Skeleton from 'react-loading-skeleton';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { sendPageEvent, sendTrackEvent } from '@edx/frontend-platform/analytics';\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport {\n Form, Hyperlink, Icon, StatefulButton,\n} from '@edx/paragon';\nimport { Institution } from '@edx/paragon/icons';\n\nimport AccountActivationMessage from './AccountActivationMessage';\nimport { loginRequest, loginRequestFailure, loginRequestReset } from './data/actions';\nimport { INVALID_FORM } from './data/constants';\nimport { loginErrorSelector, loginRequestSelector } from './data/selectors';\nimport LoginFailureMessage from './LoginFailure';\nimport messages from './messages';\n\nimport {\n RedirectLogistration, SocialAuthProviders, ThirdPartyAuthAlert, RenderInstitutionButton,\n InstitutionLogistration, FormGroup, PasswordField,\n} from '../common-components';\nimport { getThirdPartyAuthContext } from '../common-components/data/actions';\nimport { thirdPartyAuthContextSelector } from '../common-components/data/selectors';\nimport EnterpriseSSO from '../common-components/EnterpriseSSO';\nimport {\n DEFAULT_STATE, ENTERPRISE_LOGIN_URL, PENDING_STATE, RESET_PAGE,\n} from '../data/constants';\nimport {\n getTpaHint,\n getTpaProvider,\n windowScrollTo,\n setSurveyCookie,\n getActivationStatus,\n getAllPossibleQueryParam,\n updatePathWithQueryParams,\n} from '../data/utils';\nimport { forgotPasswordResultSelector } from '../forgot-password';\nimport ResetPasswordSuccess from '../reset-password/ResetPasswordSuccess';\n\nclass LoginPage extends React.Component {\n constructor(props, context) {\n super(props, context);\n\n sendPageEvent('login_and_registration', 'login');\n this.state = {\n password: '',\n emailOrUsername: '',\n errors: {\n emailOrUsername: '',\n password: '',\n },\n isSubmitted: false,\n };\n this.queryParams = getAllPossibleQueryParam();\n this.tpaHint = getTpaHint();\n }\n\n componentDidMount() {\n const payload = { ...this.queryParams };\n\n if (this.tpaHint) {\n payload.tpa_hint = this.tpaHint;\n }\n this.props.getThirdPartyAuthContext(payload);\n this.props.loginRequestReset();\n }\n\n getEnterPriseLoginURL() {\n return getConfig().LMS_BASE_URL + ENTERPRISE_LOGIN_URL;\n }\n\n handleSubmit = (e) => {\n e.preventDefault();\n this.setState({ isSubmitted: true });\n\n const { emailOrUsername, password } = this.state;\n const emailValidationError = this.validateEmail(emailOrUsername);\n const passwordValidationError = this.validatePassword(password);\n\n if (emailValidationError !== '' || passwordValidationError !== '') {\n this.props.loginRequestFailure({\n errorCode: INVALID_FORM,\n });\n return;\n }\n\n const payload = {\n email_or_username: emailOrUsername, password, ...this.queryParams,\n };\n this.props.loginRequest(payload);\n }\n\n handleOnFocus = (e) => {\n const { errors } = this.state;\n errors[e.target.name] = '';\n this.setState({ errors });\n }\n\n handleForgotPasswordLinkClickEvent = () => {\n sendTrackEvent('edx.bi.password-reset_form.toggled', { category: 'user-engagement' });\n };\n\n validateEmail(email) {\n const { errors } = this.state;\n\n if (email === '') {\n errors.emailOrUsername = this.props.intl.formatMessage(messages['email.validation.message']);\n } else if (email.length < 3) {\n errors.emailOrUsername = this.props.intl.formatMessage(messages['username.or.email.format.validation.less.chars.message']);\n } else {\n errors.emailOrUsername = '';\n }\n this.setState({ errors });\n return errors.emailOrUsername;\n }\n\n validatePassword(password) {\n const { errors } = this.state;\n errors.password = password.length > 0 ? '' : this.props.intl.formatMessage(messages['password.validation.message']);\n\n this.setState({ errors });\n return errors.password;\n }\n\n renderThirdPartyAuth(providers, secondaryProviders, currentProvider, thirdPartyAuthApiStatus, intl) {\n const isInstitutionAuthActive = !!secondaryProviders.length && !currentProvider;\n const isSocialAuthActive = !!providers.length && !currentProvider;\n const isEnterpriseLoginDisabled = getConfig().DISABLE_ENTERPRISE_LOGIN;\n\n return (\n <>\n\n {!isEnterpriseLoginDisabled && (\n \n \n {intl.formatMessage(messages['enterprise.login.btn.text'])}\n \n )}\n\n {thirdPartyAuthApiStatus === PENDING_STATE ? (\n \n ) : (\n <>\n {(isEnterpriseLoginDisabled && isInstitutionAuthActive) && (\n \n )}\n {isSocialAuthActive && (\n
\n \n
\n )}\n \n )}\n {(!isEnterpriseLoginDisabled || ((isEnterpriseLoginDisabled && isInstitutionAuthActive) || isSocialAuthActive))\n && (\n
\n {intl.formatMessage(messages['login.other.options.heading'])}\n
\n )}\n\n \n );\n }\n\n renderForm(\n currentProvider,\n providers,\n secondaryProviders,\n thirdPartyAuthContext,\n thirdPartyAuthApiStatus,\n submitState,\n intl,\n ) {\n const activationMsgType = getActivationStatus();\n if (this.props.institutionLogin) {\n return (\n \n );\n }\n\n if (this.props.loginResult.success) {\n setSurveyCookie('login');\n\n // Fire optimizely events\n window.optimizely = window.optimizely || [];\n window.optimizely.push({\n type: 'event',\n eventName: 'authn-login-coversion',\n });\n }\n\n return (\n <>\n \n {intl.formatMessage(messages['login.page.title'],\n { siteName: getConfig().SITE_NAME })}\n \n \n \n
\n {thirdPartyAuthContext.currentProvider\n && (\n \n )}\n {this.props.loginError ? : null}\n {submitState === DEFAULT_STATE && this.state.isSubmitted ? windowScrollTo({ left: 0, top: 0, behavior: 'smooth' }) : null}\n {activationMsgType && }\n {this.props.resetPassword && !this.props.loginError ? : null}\n {this.renderThirdPartyAuth(providers, secondaryProviders, currentProvider, thirdPartyAuthApiStatus, intl)}\n
\n this.setState({ emailOrUsername: e.target.value, isSubmitted: false })}\n handleFocus={this.handleOnFocus}\n errorMessage={this.state.errors.emailOrUsername}\n floatingLabel={intl.formatMessage(messages['login.user.identity.label'])}\n />\n this.setState({ password: e.target.value, isSubmitted: false })}\n handleFocus={this.handleOnFocus}\n errorMessage={this.state.errors.password}\n floatingLabel={intl.formatMessage(messages['login.password.label'])}\n />\n e.preventDefault()}\n />\n \n {intl.formatMessage(messages['forgot.password'])}\n \n \n
\n \n );\n }\n\n render() {\n const {\n intl, submitState, thirdPartyAuthContext, thirdPartyAuthApiStatus,\n } = this.props;\n const { currentProvider, providers, secondaryProviders } = this.props.thirdPartyAuthContext;\n\n if (this.tpaHint) {\n if (thirdPartyAuthApiStatus === PENDING_STATE) {\n return ;\n }\n const { provider, skipHintedLogin } = getTpaProvider(this.tpaHint, providers, secondaryProviders);\n if (skipHintedLogin) {\n window.location.href = getConfig().LMS_BASE_URL + provider.loginUrl;\n return null;\n }\n return provider ? () : this.renderForm(\n currentProvider,\n providers,\n secondaryProviders,\n thirdPartyAuthContext,\n thirdPartyAuthApiStatus,\n submitState,\n intl,\n );\n }\n return this.renderForm(\n currentProvider,\n providers,\n secondaryProviders,\n thirdPartyAuthContext,\n thirdPartyAuthApiStatus,\n submitState,\n intl,\n );\n }\n}\n\nLoginPage.defaultProps = {\n forgotPassword: null,\n loginResult: null,\n loginError: null,\n resetPassword: false,\n submitState: DEFAULT_STATE,\n thirdPartyAuthApiStatus: 'pending',\n thirdPartyAuthContext: {\n currentProvider: null,\n finishAuthUrl: null,\n providers: [],\n secondaryProviders: [],\n },\n};\n\nLoginPage.propTypes = {\n forgotPassword: PropTypes.shape({\n email: PropTypes.string,\n status: PropTypes.string,\n }),\n getThirdPartyAuthContext: PropTypes.func.isRequired,\n intl: intlShape.isRequired,\n loginError: PropTypes.objectOf(PropTypes.any),\n loginRequest: PropTypes.func.isRequired,\n loginRequestFailure: PropTypes.func.isRequired,\n loginRequestReset: PropTypes.func.isRequired,\n loginResult: PropTypes.shape({\n redirectUrl: PropTypes.string,\n success: PropTypes.bool,\n }),\n resetPassword: PropTypes.bool,\n submitState: PropTypes.string,\n thirdPartyAuthApiStatus: PropTypes.string,\n thirdPartyAuthContext: PropTypes.shape({\n currentProvider: PropTypes.string,\n platformName: PropTypes.string,\n providers: PropTypes.array,\n secondaryProviders: PropTypes.array,\n finishAuthUrl: PropTypes.string,\n }),\n institutionLogin: PropTypes.bool.isRequired,\n handleInstitutionLogin: PropTypes.func.isRequired,\n};\n\nconst mapStateToProps = state => {\n const forgotPassword = forgotPasswordResultSelector(state);\n const loginResult = loginRequestSelector(state);\n const thirdPartyAuthContext = thirdPartyAuthContextSelector(state);\n const loginError = loginErrorSelector(state);\n return {\n submitState: state.login.submitState,\n thirdPartyAuthApiStatus: state.commonComponents.thirdPartyAuthApiStatus,\n forgotPassword,\n loginError,\n loginResult,\n thirdPartyAuthContext,\n resetPassword: state.login.resetPassword,\n };\n};\n\nexport default connect(\n mapStateToProps,\n {\n getThirdPartyAuthContext,\n loginRequest,\n loginRequestFailure,\n loginRequestReset,\n },\n)(injectIntl(LoginPage));\n","import { createSelector } from 'reselect';\n\nexport const storeName = 'resetPassword';\n\nexport const resetPasswordSelector = state => ({ ...state[storeName] });\n\nexport const resetPasswordResultSelector = createSelector(\n resetPasswordSelector,\n resetPassword => resetPassword,\n);\n","import { getConfig } from '@edx/frontend-platform';\nimport { getHttpClient } from '@edx/frontend-platform/auth';\nimport formurlencoded from 'form-urlencoded';\n\n// eslint-disable-next-line import/prefer-default-export\nexport async function validateToken(token) {\n const requestConfig = {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n };\n\n const { data } = await getHttpClient()\n .post(\n `${getConfig().LMS_BASE_URL}/user_api/v1/account/password_reset/token/validate/`,\n formurlencoded({ token }),\n requestConfig,\n )\n .catch((e) => {\n throw (e);\n });\n return data;\n}\n\n// eslint-disable-next-line import/prefer-default-export\nexport async function resetPassword(payload, token, queryParams) {\n const requestConfig = {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n };\n const url = new URL(`${getConfig().LMS_BASE_URL}/password/reset/${token}/`);\n\n if (queryParams.is_account_recovery) {\n url.searchParams.append('is_account_recovery', true);\n }\n\n const { data } = await getHttpClient()\n .post(url.href, formurlencoded(payload), requestConfig)\n .catch((e) => {\n throw (e);\n });\n return data;\n}\n\nexport async function validatePassword(payload) {\n const requestConfig = {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n };\n const { data } = await getHttpClient()\n .post(\n `${getConfig().LMS_BASE_URL}/api/user/v1/validation/registration`,\n formurlencoded(payload),\n requestConfig,\n )\n .catch((e) => {\n throw (e);\n });\n\n let errorMessage = '';\n // Be careful about grabbing this message, since we could have received an HTTP error or the\n // endpoint didn't give us what we expect. We only care if we get a clear error message.\n if (data.validation_decisions && data.validation_decisions.password) {\n errorMessage = data.validation_decisions.password;\n }\n\n return errorMessage;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport { Alert } from '@edx/paragon';\nimport { Error } from '@edx/paragon/icons';\n\nimport { FORM_SUBMISSION_ERROR, PASSWORD_RESET, PASSWORD_VALIDATION_ERROR } from './data/constants';\n\nimport messages from './messages';\n\nconst ResetPasswordFailure = (props) => {\n const { errorCode, errorMsg, intl } = props;\n\n let errorMessage = null;\n let heading = intl.formatMessage(messages['reset.password.failure.heading']);\n switch (errorCode) {\n case PASSWORD_RESET.FORBIDDEN_REQUEST:\n heading = intl.formatMessage(messages['reset.server.rate.limit.error']);\n errorMessage = intl.formatMessage(messages['rate.limit.error']);\n break;\n case PASSWORD_RESET.INTERNAL_SERVER_ERROR:\n errorMessage = intl.formatMessage(messages['internal.server.error']);\n break;\n case PASSWORD_VALIDATION_ERROR:\n errorMessage = errorMsg;\n break;\n case FORM_SUBMISSION_ERROR:\n errorMessage = intl.formatMessage(messages['reset.password.form.submission.error']);\n break;\n default:\n break;\n }\n\n if (errorMessage) {\n return (\n \n {heading}\n

{errorMessage}

\n
\n );\n }\n\n return null;\n};\n\nResetPasswordFailure.defaultProps = {\n errorCode: null,\n errorMsg: null,\n};\n\nResetPasswordFailure.propTypes = {\n errorCode: PropTypes.string,\n errorMsg: PropTypes.string,\n intl: intlShape.isRequired,\n};\n\nexport default injectIntl(ResetPasswordFailure);\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Helmet } from 'react-helmet';\nimport { connect } from 'react-redux';\nimport { Redirect } from 'react-router-dom';\n\nimport {\n Form,\n Spinner,\n StatefulButton,\n Tabs,\n Tab,\n Icon,\n} from '@edx/paragon';\nimport { ChevronLeft } from '@edx/paragon/icons';\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport { getQueryParameters, getConfig } from '@edx/frontend-platform';\n\nimport messages from './messages';\nimport { resetPassword, validateToken } from './data/actions';\nimport { resetPasswordResultSelector } from './data/selectors';\nimport { validatePassword } from './data/service';\nimport ResetPasswordFailure from './ResetPasswordFailure';\nimport { PasswordField } from '../common-components';\nimport {\n LETTER_REGEX, LOGIN_PAGE, NUMBER_REGEX, RESET_PAGE,\n} from '../data/constants';\nimport {\n FORM_SUBMISSION_ERROR, PASSWORD_RESET_ERROR, PASSWORD_VALIDATION_ERROR, TOKEN_STATE,\n} from './data/constants';\nimport { updatePathWithQueryParams, windowScrollTo } from '../data/utils';\nimport BaseComponent from '../base-component';\n\nconst ResetPasswordPage = (props) => {\n const { intl } = props;\n\n const [newPassword, setNewPassword] = useState('');\n const [confirmPassword, setConfirmPassword] = useState('');\n const [formErrors, setFormErrors] = useState({});\n const [errorCode, setErrorCode] = useState(null);\n const [key, setKey] = useState('');\n\n useEffect(() => {\n if (props.status !== TOKEN_STATE.PENDING && props.status !== PASSWORD_RESET_ERROR) {\n setErrorCode(props.status);\n }\n if (props.status === PASSWORD_VALIDATION_ERROR) {\n formErrors.newPassword = intl.formatMessage(messages['password.validation.message']);\n setFormErrors({ ...formErrors });\n }\n }, [props.errorMsg]);\n\n const validatePasswordFromBackend = async (password) => {\n let errorMessage = '';\n try {\n const payload = {\n reset_password_page: true,\n password,\n };\n errorMessage = await validatePassword(payload);\n } catch (err) {\n errorMessage = '';\n }\n setFormErrors({ ...formErrors, newPassword: errorMessage });\n };\n\n const validateInput = (name, value) => {\n switch (name) {\n case 'newPassword':\n if (!value || !LETTER_REGEX.test(value) || !NUMBER_REGEX.test(value) || value.length < 8) {\n formErrors.newPassword = intl.formatMessage(messages['password.validation.message']);\n } else {\n validatePasswordFromBackend(value);\n }\n break;\n case 'confirmPassword':\n if (!value) {\n formErrors.confirmPassword = intl.formatMessage(messages['confirm.your.password']);\n } else if (value !== newPassword) {\n formErrors.confirmPassword = intl.formatMessage(messages['passwords.do.not.match']);\n } else {\n formErrors.confirmPassword = '';\n }\n break;\n default:\n break;\n }\n setFormErrors({ ...formErrors });\n return !Object.values(formErrors).some(x => (x !== ''));\n };\n\n const handleOnBlur = (event) => {\n let { name, value } = event.target;\n\n // Do not validate when focus out from 'newPassword' and focus on 'passwordValidation' icon\n // for better user experience.\n if (event.relatedTarget\n && event.relatedTarget.name === 'passwordValidation'\n && name === 'newPassword'\n ) {\n return;\n }\n if (name === 'passwordValidation') {\n name = 'newPassword';\n value = newPassword;\n }\n validateInput(name, value);\n };\n\n const handleConfirmPasswordChange = (e) => {\n const { value } = e.target;\n\n setConfirmPassword(value);\n validateInput('confirmPassword', value);\n };\n\n const handleOnFocus = (e) => {\n setFormErrors({ ...formErrors, [e.target.name]: '' });\n };\n\n const handleSubmit = (e) => {\n e.preventDefault();\n\n const isPasswordValid = validateInput('newPassword', newPassword);\n const isPasswordConfirmed = validateInput('confirmPassword', confirmPassword);\n\n if (isPasswordValid && isPasswordConfirmed) {\n const formPayload = {\n new_password1: newPassword,\n new_password2: confirmPassword,\n };\n const params = getQueryParameters();\n props.resetPassword(formPayload, props.token, params);\n } else {\n setErrorCode(FORM_SUBMISSION_ERROR);\n windowScrollTo({ left: 0, top: 0, behavior: 'smooth' });\n }\n };\n\n const tabTitle = (\n
\n \n {intl.formatMessage(messages['sign.in'])}\n
\n );\n\n if (props.status === TOKEN_STATE.PENDING) {\n const { token } = props.match.params;\n if (token) {\n props.validateToken(token);\n return ;\n }\n } else if (props.status === PASSWORD_RESET_ERROR) {\n return ;\n } else if (props.status === 'success') {\n return ;\n } else {\n return (\n \n
\n \n {intl.formatMessage(messages['reset.password.page.title'],\n { siteName: getConfig().SITE_NAME })}\n \n \n setKey(k)}>\n \n \n { key && (\n \n )}\n
\n
\n \n

{intl.formatMessage(messages['reset.password'])}

\n

{intl.formatMessage(messages['reset.password.page.instructions'])}

\n
\n setNewPassword(e.target.value)}\n handleBlur={handleOnBlur}\n handleFocus={handleOnFocus}\n errorMessage={formErrors.newPassword}\n floatingLabel={intl.formatMessage(messages['new.password.label'])}\n />\n \n handleSubmit(e)}\n onMouseDown={(e) => e.preventDefault()}\n />\n \n
\n
\n
\n
\n );\n }\n return null;\n};\n\nResetPasswordPage.defaultProps = {\n status: null,\n token: null,\n match: null,\n errorMsg: null,\n};\n\nResetPasswordPage.propTypes = {\n intl: intlShape.isRequired,\n resetPassword: PropTypes.func.isRequired,\n validateToken: PropTypes.func.isRequired,\n token: PropTypes.string,\n match: PropTypes.shape({\n params: PropTypes.shape({\n token: PropTypes.string,\n }),\n }),\n status: PropTypes.string,\n errorMsg: PropTypes.string,\n};\n\nexport default connect(\n resetPasswordResultSelector,\n {\n resetPassword,\n validateToken,\n },\n)(injectIntl(ResetPasswordPage));\n","import { RESET_PASSWORD, VALIDATE_TOKEN, PASSWORD_RESET_FAILURE } from './actions';\nimport { PASSWORD_RESET_ERROR, TOKEN_STATE } from './constants';\n\nexport const defaultState = {\n status: TOKEN_STATE.PENDING,\n token: null,\n errorMsg: null,\n};\n\nconst reducer = (state = defaultState, action = null) => {\n switch (action.type) {\n case VALIDATE_TOKEN.SUCCESS:\n return {\n ...state,\n status: TOKEN_STATE.VALID,\n token: action.payload.token,\n };\n case PASSWORD_RESET_FAILURE:\n return {\n ...state,\n status: PASSWORD_RESET_ERROR,\n };\n case RESET_PASSWORD.BEGIN:\n return {\n ...state,\n status: 'pending',\n };\n case RESET_PASSWORD.SUCCESS:\n return {\n ...state,\n status: 'success',\n };\n case RESET_PASSWORD.FAILURE:\n return {\n ...state,\n status: action.payload.errorCode,\n errorMsg: action.payload.errorMsg,\n };\n default:\n return state;\n }\n};\n\nexport default reducer;\n","import { call, put, takeEvery } from 'redux-saga/effects';\nimport { logError, logInfo } from '@edx/frontend-platform/logging';\n\n// Actions\nimport {\n VALIDATE_TOKEN,\n validateTokenBegin,\n validateTokenSuccess,\n RESET_PASSWORD,\n resetPasswordBegin,\n resetPasswordSuccess,\n resetPasswordFailure,\n passwordResetFailure,\n} from './actions';\n\nimport { validateToken, resetPassword } from './service';\nimport { PASSWORD_RESET, PASSWORD_VALIDATION_ERROR } from './constants';\n\n// Services\nexport function* handleValidateToken(action) {\n try {\n yield put(validateTokenBegin());\n const data = yield call(validateToken, action.payload.token);\n const isValid = data.is_valid;\n if (isValid) {\n yield put(validateTokenSuccess(isValid, action.payload.token));\n } else {\n yield put(passwordResetFailure(PASSWORD_RESET.INVALID_TOKEN));\n }\n } catch (err) {\n if (err.response && err.response.status === 429) {\n yield put(passwordResetFailure(PASSWORD_RESET.FORBIDDEN_REQUEST));\n logInfo(err);\n } else {\n yield put(passwordResetFailure(PASSWORD_RESET.INTERNAL_SERVER_ERROR));\n logError(err);\n }\n }\n}\n\nexport function* handleResetPassword(action) {\n try {\n yield put(resetPasswordBegin());\n const data = yield call(resetPassword, action.payload.formPayload, action.payload.token, action.payload.params);\n const resetStatus = data.reset_status;\n const resetErrors = data.err_msg;\n\n if (resetStatus) {\n yield put(resetPasswordSuccess(resetStatus));\n } else {\n yield put(resetPasswordFailure(PASSWORD_VALIDATION_ERROR, resetErrors));\n }\n } catch (err) {\n if (err.response && err.response.status === 429) {\n yield put(resetPasswordFailure(PASSWORD_RESET.FORBIDDEN_REQUEST));\n logInfo(err);\n } else {\n yield put(resetPasswordFailure(PASSWORD_RESET.INTERNAL_SERVER_ERROR));\n logError(err);\n }\n }\n}\n\nexport default function* saga() {\n yield takeEvery(RESET_PASSWORD.BASE, handleResetPassword);\n yield takeEvery(VALIDATE_TOKEN.BASE, handleValidateToken);\n}\n","import { LOGIN_REQUEST } from './actions';\n\nimport { DEFAULT_STATE, PENDING_STATE } from '../../data/constants';\nimport { RESET_PASSWORD } from '../../reset-password';\n\nexport const defaultState = {\n loginError: null,\n loginResult: {},\n resetPassword: false,\n};\n\nconst reducer = (state = defaultState, action) => {\n switch (action.type) {\n case LOGIN_REQUEST.BEGIN:\n return {\n ...state,\n submitState: PENDING_STATE,\n resetPassword: false,\n };\n case LOGIN_REQUEST.SUCCESS:\n return {\n ...state,\n loginResult: action.payload,\n };\n case LOGIN_REQUEST.FAILURE:\n return {\n ...state,\n loginError: action.payload.loginError,\n submitState: DEFAULT_STATE,\n };\n case LOGIN_REQUEST.RESET:\n return {\n ...state,\n loginError: null,\n };\n case RESET_PASSWORD.SUCCESS:\n return {\n ...state,\n resetPassword: true,\n };\n default:\n return {\n ...state,\n };\n }\n};\n\nexport default reducer;\n","import { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';\nimport { getConfig } from '@edx/frontend-platform';\nimport * as QueryString from 'query-string';\n\n// eslint-disable-next-line import/prefer-default-export\nexport async function loginRequest(creds) {\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 `${getConfig().LMS_BASE_URL}/api/user/v2/account/login_session/`,\n QueryString.stringify(creds),\n requestConfig,\n )\n .catch((e) => {\n throw (e);\n });\n\n return {\n redirectUrl: data.redirect_url || `${getConfig().LMS_BASE_URL}/dashboard`,\n success: data.success || false,\n };\n}\n","import { call, put, takeEvery } from 'redux-saga/effects';\n\nimport { camelCaseObject } from '@edx/frontend-platform';\nimport { logError, logInfo } from '@edx/frontend-platform/logging';\nimport { FORBIDDEN_REQUEST, INTERNAL_SERVER_ERROR } from './constants';\n\n// Actions\nimport {\n LOGIN_REQUEST,\n loginRequestBegin,\n loginRequestFailure,\n loginRequestSuccess,\n} from './actions';\n\n// Services\nimport {\n loginRequest,\n} from './service';\n\nexport function* handleLoginRequest(action) {\n try {\n yield put(loginRequestBegin());\n\n const { redirectUrl, success } = yield call(loginRequest, action.payload.creds);\n\n yield put(loginRequestSuccess(\n redirectUrl,\n success,\n ));\n } catch (e) {\n const statusCodes = [400];\n if (e.response) {\n const { status } = e.response;\n if (statusCodes.includes(status)) {\n yield put(loginRequestFailure(camelCaseObject(e.response.data)));\n logInfo(e);\n } else if (status === 403) {\n yield put(loginRequestFailure({ errorCode: FORBIDDEN_REQUEST }));\n logInfo(e);\n } else {\n yield put(loginRequestFailure({ errorCode: INTERNAL_SERVER_ERROR }));\n logError(e);\n }\n }\n }\n}\n\nexport default function* saga() {\n yield takeEvery(LOGIN_REQUEST.BASE, handleLoginRequest);\n}\n","import React from 'react';\n\nimport PropTypes from 'prop-types';\nimport { Form, Icon } from '@edx/paragon';\nimport { ExpandMore } from '@edx/paragon/icons';\n\nconst FormFieldRenderer = (props) => {\n let formField = null;\n const {\n errorMessage, fieldData, onChangeHandler, isRequired, value,\n } = props;\n\n const handleFocus = (e) => {\n if (props.handleFocus) { props.handleFocus(e); }\n };\n\n const handleOnBlur = (e) => {\n if (props.handleBlur) { props.handleBlur(e); }\n };\n\n switch (fieldData.type) {\n case 'select': {\n if (!fieldData.options) {\n return null;\n }\n formField = (\n \n onChangeHandler(e)}\n trailingElement={}\n floatingLabel={fieldData.label}\n onBlur={handleOnBlur}\n onFocus={handleFocus}\n >\n \n {fieldData.options.map(option => (\n \n ))}\n \n {isRequired && errorMessage && (\n \n {errorMessage}\n \n )}\n \n );\n break;\n }\n case 'textarea': {\n formField = (\n \n onChangeHandler(e)}\n floatingLabel={fieldData.label}\n onBlur={handleOnBlur}\n onFocus={handleFocus}\n />\n {isRequired && errorMessage && (\n \n {errorMessage}\n \n )}\n \n );\n break;\n }\n case 'text': {\n formField = (\n \n onChangeHandler(e)}\n floatingLabel={fieldData.label}\n onBlur={handleOnBlur}\n onFocus={handleFocus}\n />\n {isRequired && errorMessage && (\n \n {errorMessage}\n \n )}\n \n );\n break;\n }\n case 'checkbox': {\n formField = (\n \n onChangeHandler(e)}\n onBlur={handleOnBlur}\n onFocus={handleFocus}\n >\n {fieldData.label}\n \n {isRequired && errorMessage && (\n \n {errorMessage}\n \n )}\n \n );\n break;\n }\n default:\n break;\n }\n\n return formField;\n};\nFormFieldRenderer.defaultProps = {\n value: '',\n handleBlur: null,\n handleFocus: null,\n errorMessage: '',\n isRequired: false,\n};\n\nFormFieldRenderer.propTypes = {\n fieldData: PropTypes.shape({\n type: PropTypes.string,\n label: PropTypes.string,\n name: PropTypes.string,\n }).isRequired,\n onChangeHandler: PropTypes.func.isRequired,\n handleBlur: PropTypes.func,\n handleFocus: PropTypes.func,\n errorMessage: PropTypes.string,\n isRequired: PropTypes.bool,\n value: PropTypes.string,\n};\n\nexport default FormFieldRenderer;\n","import { AsyncActionType } from '../../data/utils';\n\nexport const REGISTER_NEW_USER = new AsyncActionType('REGISTRATION', 'REGISTER_NEW_USER');\nexport const REGISTER_FORM_VALIDATIONS = new AsyncActionType('REGISTRATION', 'GET_FORM_VALIDATIONS');\nexport const REGISTRATION_FORM = new AsyncActionType('REGISTRATION', 'REGISTRATION_FORM');\nexport const REGISTER_CLEAR_USERNAME_SUGGESTIONS = 'REGISTRATION_CLEAR_USERNAME_SUGGESTIONS';\n\n// Reset Form\nexport const resetRegistrationForm = () => ({\n type: REGISTRATION_FORM.RESET,\n});\n\n// Register\nexport const registerNewUser = registrationInfo => ({\n type: REGISTER_NEW_USER.BASE,\n payload: { registrationInfo },\n});\n\nexport const registerNewUserBegin = () => ({\n type: REGISTER_NEW_USER.BEGIN,\n});\n\nexport const registerNewUserSuccess = (redirectUrl, success) => ({\n type: REGISTER_NEW_USER.SUCCESS,\n payload: { redirectUrl, success },\n\n});\n\nexport const registerNewUserFailure = (error) => ({\n type: REGISTER_NEW_USER.FAILURE,\n payload: { ...error },\n});\n\n// Realtime Field validations\nexport const fetchRealtimeValidations = (formPayload) => ({\n type: REGISTER_FORM_VALIDATIONS.BASE,\n payload: { formPayload },\n});\n\nexport const fetchRealtimeValidationsBegin = () => ({\n type: REGISTER_FORM_VALIDATIONS.BEGIN,\n});\n\nexport const fetchRealtimeValidationsSuccess = (validations) => ({\n type: REGISTER_FORM_VALIDATIONS.SUCCESS,\n payload: { validations },\n});\n\nexport const fetchRealtimeValidationsFailure = () => ({\n type: REGISTER_FORM_VALIDATIONS.FAILURE,\n});\n\nexport const clearUsernameSuggestions = () => ({\n type: REGISTER_CLEAR_USERNAME_SUGGESTIONS,\n});\n","// Registration Fields\nexport const FIELDS = {\n COUNTRY: 'country',\n HONOR_CODE: 'honor_code',\n TERMS_OF_SERVICE: 'terms_of_service',\n};\n\n// Registration Error Codes\nexport const FORBIDDEN_REQUEST = 'forbidden-request';\nexport const FORM_SUBMISSION_ERROR = 'form-submission-error';\nexport const INTERNAL_SERVER_ERROR = 'internal-server-error';\nexport const TPA_SESSION_EXPIRED = 'tpa-session-expired';\n\nexport const YEAR_OF_BIRTH_OPTIONS = (() => {\n const currentYear = new Date().getFullYear();\n const years = [];\n let startYear = currentYear - 120;\n while (startYear < currentYear) {\n startYear += 1;\n\n years.push({ value: startYear.toString(), label: startYear });\n }\n return years.reverse();\n})();\n\nexport const EDUCATION_LEVELS = [\n '',\n 'p',\n 'm',\n 'b',\n 'a',\n 'hs',\n 'jhs',\n 'el',\n 'none',\n 'other',\n];\n\nexport const GENDER_OPTIONS = ['', 'f', 'm', 'o'];\n\n// Other constants\nexport const FORM_FIELDS = ['name', 'email', 'password', 'username', 'country'];\n\nexport const COMMON_EMAIL_PROVIDERS = [\n 'hotmail.com', 'yahoo.com', 'outlook.com', 'live.com', 'gmail.com',\n];\n\nexport const DEFAULT_SERVICE_PROVIDER_DOMAINS = ['yahoo', 'hotmail', 'live', 'outlook', 'gmail'];\n\nexport const DEFAULT_TOP_LEVEL_DOMAINS = [\n 'aaa', 'aarp', 'abarth', 'abb', 'abbott', 'abbvie', 'abc', 'able', 'abogado', 'abudhabi', 'ac', 'academy',\n 'accenture', 'accountant', 'accountants', 'aco', 'active', 'actor', 'ad', 'adac', 'ads', 'adult', 'ae', 'aeg', 'aero',\n 'aetna', 'af', 'afamilycompany', 'afl', 'africa', 'ag', 'agakhan', 'agency', 'ai', 'aig', 'aigo', 'airbus', 'airforce',\n 'airtel', 'akdn', 'al', 'alfaromeo', 'alibaba', 'alipay', 'allfinanz', 'allstate', 'ally', 'alsace', 'alstom', 'am',\n 'amazon', 'americanexpress', 'americanfamily', 'amex', 'amfam', 'amica', 'amsterdam', 'an', 'analytics', 'android',\n 'anquan', 'anz', 'ao', 'aol', 'apartments', 'app', 'apple', 'aq', 'aquarelle', 'ar', 'arab', 'aramco', 'archi', 'army',\n 'arpa', 'art', 'arte', 'as', 'asda', 'asia', 'associates', 'at', 'athleta', 'attorney', 'au', 'auction', 'audi',\n 'audible', 'audio', 'auspost', 'author', 'auto', 'autos', 'avianca', 'aw', 'aws', 'ax', 'axa', 'az', 'azure', 'ba',\n 'baby', 'baidu', 'banamex', 'bananarepublic', 'band', 'bank', 'bar', 'barcelona', 'barclaycard', 'barclays',\n 'barefoot', 'bargains', 'baseball', 'basketball', 'bauhaus', 'bayern', 'bb', 'bbc', 'bbt', 'bbva', 'bcg', 'bcn', 'bd',\n 'be', 'beats', 'beauty', 'beer', 'bentley', 'berlin', 'best', 'bestbuy', 'bet', 'bf', 'bg', 'bh', 'bharti', 'bi',\n 'bible', 'bid', 'bike', 'bing', 'bingo', 'bio', 'biz', 'bj', 'bl', 'black', 'blackfriday', 'blanco', 'blockbuster',\n 'blog', 'bloomberg', 'blue', 'bm', 'bms', 'bmw', 'bn', 'bnl', 'bnpparibas', 'bo', 'boats', 'boehringer', 'bofa', 'bom',\n 'bond', 'boo', 'book', 'booking', 'boots', 'bosch', 'bostik', 'boston', 'bot', 'boutique', 'box', 'bq', 'br',\n 'bradesco', 'bridgestone', 'broadway', 'broker', 'brother', 'brussels', 'bs', 'bt', 'budapest', 'bugatti', 'build',\n 'builders', 'business', 'buy', 'buzz', 'bv', 'bw', 'by', 'bz', 'bzh', 'ca', 'cab', 'cafe', 'cal', 'call',\n 'calvinklein', 'cam', 'camera', 'camp', 'cancerresearch', 'canon', 'capetown', 'capital', 'capitalone', 'car',\n 'caravan', 'cards', 'care', 'career', 'careers', 'cars', 'cartier', 'casa', 'case', 'caseih', 'cash', 'casino', 'cat',\n 'catering', 'catholic', 'cba', 'cbn', 'cbre', 'cbs', 'cc', 'cd', 'ceb', 'center', 'ceo', 'cern', 'cf', 'cfa', 'cfd',\n 'cg', 'ch', 'chanel', 'channel', 'charity', 'chase', 'chat', 'cheap', 'chintai', 'chloe', 'christmas', 'chrome',\n 'chrysler', 'church', 'ci', 'cipriani', 'circle', 'cisco', 'citadel', 'citi', 'citic', 'city', 'cityeats', 'ck', 'cl',\n 'claims', 'cleaning', 'click', 'clinic', 'clinique', 'clothing', 'cloud', 'club', 'clubmed', 'cm', 'cn', 'co', 'coach',\n 'codes', 'coffee', 'college', 'cologne', 'com', 'comcast', 'commbank', 'community', 'company', 'compare', 'computer',\n 'comsec', 'condos', 'construction', 'consulting', 'contact', 'contractors', 'cooking', 'cookingchannel', 'cool', 'coop',\n 'corsica', 'country', 'coupon', 'coupons', 'courses', 'cpa', 'cr', 'credit', 'creditcard', 'creditunion', 'cricket',\n 'crown', 'crs', 'cruise', 'cruises', 'csc', 'cu', 'cuisinella', 'cv', 'cw', 'cx', 'cy', 'cymru', 'cyou', 'cz', 'dabur',\n 'dad', 'dance', 'data', 'date', 'dating', 'datsun', 'day', 'dclk', 'dds', 'de', 'deal', 'dealer', 'deals', 'degree',\n 'delivery', 'dell', 'deloitte', 'delta', 'democrat', 'dental', 'dentist', 'desi', 'design', 'dev', 'dhl', 'diamonds',\n 'diet', 'digital', 'direct', 'directory', 'discount', 'discover', 'dish', 'diy', 'dj', 'dk', 'dm', 'dnp', 'do', 'docs',\n 'doctor', 'dodge', 'dog', 'doha', 'domains', 'doosan', 'dot', 'download', 'drive', 'dtv', 'dubai', 'duck', 'dunlop',\n 'duns', 'dupont', 'durban', 'dvag', 'dvr', 'dz', 'earth', 'eat', 'ec', 'eco', 'edeka', 'edu', 'education', 'ee', 'eg',\n 'eh', 'email', 'emerck', 'energy', 'engineer', 'engineering', 'enterprises', 'epost', 'epson', 'equipment', 'er',\n 'ericsson', 'erni', 'es', 'esq', 'estate', 'esurance', 'et', 'etisalat', 'eu', 'eurovision', 'eus', 'events', 'everbank',\n 'exchange', 'expert', 'exposed', 'express', 'extraspace', 'fage', 'fail', 'fairwinds', 'faith', 'family', 'fan', 'fans',\n 'farm', 'farmers', 'fashion', 'fast', 'fedex', 'feedback', 'ferrari', 'ferrero', 'fi', 'fiat', 'fidelity', 'fido', 'film',\n 'final', 'finance', 'financial', 'fire', 'firestone', 'firmdale', 'fish', 'fishing', 'fit', 'fitness', 'fj', 'fk',\n 'flickr', 'flights', 'flir', 'florist', 'flowers', 'flsmidth', 'fly', 'fm', 'fo', 'foo', 'food', 'foodnetwork', 'football',\n 'ford', 'forex', 'forsale', 'forum', 'foundation', 'fox', 'fr', 'free', 'fresenius', 'frl', 'frogans', 'frontdoor',\n 'frontier', 'ftr', 'fujitsu', 'fujixerox', 'fun', 'fund', 'furniture', 'futbol', 'fyi', 'ga', 'gal', 'gallery', 'gallo',\n 'gallup', 'game', 'games', 'gap', 'garden', 'gay', 'gb', 'gbiz', 'gd', 'gdn', 'ge', 'gea', 'gent', 'genting', 'george',\n 'gf', 'gg', 'ggee', 'gh', 'gi', 'gift', 'gifts', 'gives', 'giving', 'gl', 'glade', 'glass', 'gle', 'global', 'globo',\n 'gm', 'gmail', 'gmbh', 'gmo', 'gmx', 'gn', 'godaddy', 'gold', 'goldpoint', 'golf', 'goo', 'goodhands', 'goodyear', 'goog',\n 'google', 'gop', 'got', 'gov', 'gp', 'gq', 'gr', 'grainger', 'graphics', 'gratis', 'green', 'gripe', 'grocery', 'group',\n 'gs', 'gt', 'gu', 'guardian', 'gucci', 'guge', 'guide', 'guitars', 'guru', 'gw', 'gy', 'hair', 'hamburg', 'hangout',\n 'haus', 'hbo', 'hdfc', 'hdfcbank', 'health', 'healthcare', 'help', 'helsinki', 'here', 'hermes', 'hgtv', 'hiphop',\n 'hisamitsu', 'hitachi', 'hiv', 'hk', 'hkt', 'hm', 'hn', 'hockey', 'holdings', 'holiday', 'homedepot', 'homegoods',\n 'homes', 'homesense', 'honda', 'honeywell', 'horse', 'hospital', 'host', 'hosting', 'hot', 'hoteles', 'hotels', 'hotmail',\n 'house', 'how', 'hr', 'hsbc', 'ht', 'htc', 'hu', 'hughes', 'hyatt', 'hyundai', 'ibm', 'icbc', 'ice', 'icu', 'id', 'ie',\n 'ieee', 'ifm', 'iinet', 'ikano', 'il', 'im', 'imamat', 'imdb', 'immo', 'immobilien', 'in', 'inc', 'industries', 'infiniti',\n 'info', 'ing', 'ink', 'institute', 'insurance', 'insure', 'int', 'intel', 'international', 'intuit', 'investments',\n 'io', 'ipiranga', 'iq', 'ir', 'irish', 'is', 'iselect', 'ismaili', 'ist', 'istanbul', 'it', 'itau', 'itv', 'iveco', 'iwc',\n 'jaguar', 'java', 'jcb', 'jcp', 'je', 'jeep', 'jetzt', 'jewelry', 'jio', 'jlc', 'jll', 'jm', 'jmp', 'jnj', 'jo',\n 'jobs', 'joburg', 'jot', 'joy', 'jp', 'jpmorgan', 'jprs', 'juegos', 'juniper', 'kaufen', 'kddi', 'ke', 'kerryhotels',\n 'kerrylogistics', 'kerryproperties', 'kfh', 'kg', 'kh', 'ki', 'kia', 'kim', 'kinder', 'kindle', 'kitchen', 'kiwi', 'km',\n 'kn', 'koeln', 'komatsu', 'kosher', 'kp', 'kpmg', 'kpn', 'kr', 'krd', 'kred', 'kuokgroup', 'kw', 'ky', 'kyoto', 'kz',\n 'la', 'lacaixa', 'ladbrokes', 'lamborghini', 'lamer', 'lancaster', 'lancia', 'lancome', 'land', 'landrover', 'lanxess',\n 'lasalle', 'lat', 'latino', 'latrobe', 'law', 'lawyer', 'lb', 'lc', 'lds', 'lease', 'leclerc', 'lefrak', 'legal',\n 'lego', 'lexus', 'lgbt', 'li', 'liaison', 'lidl', 'life', 'lifeinsurance', 'lifestyle', 'lighting', 'like', 'lilly',\n 'limited', 'limo', 'lincoln', 'linde', 'link', 'lipsy', 'live', 'living', 'lixil', 'lk', 'llc', 'llp', 'loan', 'loans',\n 'locker', 'locus', 'loft', 'lol', 'london', 'lotte', 'lotto', 'love', 'lpl', 'lplfinancial', 'lr', 'ls', 'lt', 'ltd',\n 'ltda', 'lu', 'lundbeck', 'lupin', 'luxe', 'luxury', 'lv', 'ly', 'ma', 'macys', 'madrid', 'maif', 'maison', 'makeup',\n 'man', 'management', 'mango', 'map', 'market', 'marketing', 'markets', 'marriott', 'marshalls', 'maserati', 'mattel',\n 'mba', 'mc', 'mcd', 'mcdonalds', 'mckinsey', 'md', 'me', 'med', 'media', 'meet', 'melbourne', 'meme', 'memorial', 'men',\n 'menu', 'meo', 'merckmsd', 'metlife', 'mf', 'mg', 'mh', 'miami', 'microsoft', 'mil', 'mini', 'mint', 'mit', 'mitsubishi',\n 'mk', 'ml', 'mlb', 'mls', 'mm', 'mma', 'mn', 'mo', 'mobi', 'mobile', 'mobily', 'moda', 'moe', 'moi', 'mom', 'monash',\n 'money', 'monster', 'montblanc', 'mopar', 'mormon', 'mortgage', 'moscow', 'moto', 'motorcycles', 'mov', 'movie', 'movistar',\n 'mp', 'mq', 'mr', 'ms', 'msd', 'mt', 'mtn', 'mtpc', 'mtr', 'mu', 'museum', 'mutual', 'mutuelle', 'mv', 'mw', 'mx', 'my',\n 'mz', 'na', 'nab', 'nadex', 'nagoya', 'name', 'nationwide', 'natura', 'navy', 'nba', 'nc', 'ne', 'nec', 'net', 'netbank',\n 'netflix', 'network', 'neustar', 'new', 'newholland', 'news', 'next', 'nextdirect', 'nexus', 'nf', 'nfl', 'ng', 'ngo', 'nhk',\n 'ni', 'nico', 'nike', 'nikon', 'ninja', 'nissan', 'nissay', 'nl', 'no', 'nokia', 'northwesternmutual', 'norton', 'now',\n 'nowruz', 'nowtv', 'np', 'nr', 'nra', 'nrw', 'ntt', 'nu', 'nyc', 'nz', 'obi', 'observer', 'off', 'office', 'okinawa',\n 'olayan', 'olayangroup', 'oldnavy', 'ollo', 'om', 'omega', 'one', 'ong', 'onl', 'online', 'onyourside', 'ooo', 'open',\n 'oracle', 'orange', 'org', 'organic', 'orientexpress', 'origins', 'osaka', 'otsuka', 'ott', 'ovh', 'pa', 'page',\n 'pamperedchef', 'panasonic', 'panerai', 'paris', 'pars', 'partners', 'parts', 'party', 'passagens', 'pay', 'pccw', 'pe',\n 'pet', 'pf', 'pfizer', 'pg', 'ph', 'pharmacy', 'phd', 'philips', 'phone', 'photo', 'photography', 'photos', 'physio',\n 'piaget', 'pics', 'pictet', 'pictures', 'pid', 'pin', 'ping', 'pink', 'pioneer', 'pizza', 'pk', 'pl', 'place', 'play',\n 'playstation', 'plumbing', 'plus', 'pm', 'pn', 'pnc', 'pohl', 'poker', 'politie', 'porn', 'post', 'pr', 'pramerica',\n 'praxi', 'press', 'prime', 'pro', 'prod', 'productions', 'prof', 'progressive', 'promo', 'properties', 'property',\n 'protection', 'pru', 'prudential', 'ps', 'pt', 'pub', 'pw', 'pwc', 'py', 'qa', 'qpon', 'quebec', 'quest', 'qvc',\n 'racing', 'radio', 'raid', 're', 'read', 'realestate', 'realtor', 'realty', 'recipes', 'red', 'redstone', 'redumbrella',\n 'rehab', 'reise', 'reisen', 'reit', 'reliance', 'ren', 'rent', 'rentals', 'repair', 'report', 'republican', 'rest',\n 'restaurant', 'review', 'reviews', 'rexroth', 'rich', 'richardli', 'ricoh', 'rightathome', 'ril', 'rio', 'rip', 'rmit',\n 'ro', 'rocher', 'rocks', 'rodeo', 'rogers', 'room', 'rs', 'rsvp', 'ru', 'rugby', 'ruhr', 'run', 'rw', 'rwe', 'ryukyu',\n 'sa', 'saarland', 'safe', 'safety', 'sakura', 'sale', 'salon', 'samsclub', 'samsung', 'sandvik', 'sandvikcoromant',\n 'sanofi', 'sap', 'sapo', 'sarl', 'sas', 'save', 'saxo', 'sb', 'sbi', 'sbs', 'sc', 'sca', 'scb', 'schaeffler', 'schmidt',\n 'scholarships', 'school', 'schule', 'schwarz', 'science', 'scjohnson', 'scor', 'scot', 'sd', 'se', 'search', 'seat',\n 'secure', 'security', 'seek', 'select', 'sener', 'services', 'ses', 'seven', 'sew', 'sex', 'sexy', 'sfr', 'sg', 'sh',\n 'shangrila', 'sharp', 'shaw', 'shell', 'shia', 'shiksha', 'shoes', 'shop', 'shopping', 'shouji', 'show', 'showtime',\n 'shriram', 'si', 'silk', 'sina', 'singles', 'site', 'sj', 'sk', 'ski', 'skin', 'sky', 'skype', 'sl', 'sling', 'sm',\n 'smart', 'smile', 'sn', 'sncf', 'so', 'soccer', 'social', 'softbank', 'software', 'sohu', 'solar', 'solutions', 'song',\n 'sony', 'soy', 'spa', 'space', 'spiegel', 'sport', 'spot', 'spreadbetting', 'sr', 'srl', 'srt', 'ss', 'st', 'stada',\n 'staples', 'star', 'starhub', 'statebank', 'statefarm', 'statoil', 'stc', 'stcgroup', 'stockholm', 'storage', 'store',\n 'stream', 'studio', 'study', 'style', 'su', 'sucks', 'supplies', 'supply', 'support', 'surf', 'surgery', 'suzuki', 'sv',\n 'swatch', 'swiftcover', 'swiss', 'sx', 'sy', 'sydney', 'symantec', 'systems', 'sz', 'tab', 'taipei', 'talk', 'taobao',\n 'target', 'tatamotors', 'tatar', 'tattoo', 'tax', 'taxi', 'tc', 'tci', 'td', 'tdk', 'team', 'tech', 'technology', 'tel',\n 'telecity', 'telefonica', 'temasek', 'tennis', 'teva', 'tf', 'tg', 'th', 'thd', 'theater', 'theatre', 'tiaa', 'tickets',\n 'tienda', 'tiffany', 'tips', 'tires', 'tirol', 'tj', 'tjmaxx', 'tjx', 'tk', 'tkmaxx', 'tl', 'tm', 'tmall', 'tn', 'to',\n 'today', 'tokyo', 'tools', 'top', 'toray', 'toshiba', 'total', 'tours', 'town', 'toyota', 'toys', 'tp', 'tr', 'trade',\n 'trading', 'training', 'travel', 'travelchannel', 'travelers', 'travelersinsurance', 'trust', 'trv', 'tt', 'tube', 'tui',\n 'tunes', 'tushu', 'tv', 'tvs', 'tw', 'tz', 'ua', 'ubank', 'ubs', 'uconnect', 'ug', 'uk', 'um', 'unicom', 'university',\n 'uno', 'uol', 'ups', 'us', 'uy', 'uz', 'va', 'vacations', 'vana', 'vanguard', 'vc', 've', 'vegas', 'ventures', 'verisign',\n 'versicherung', 'vet', 'vg', 'vi', 'viajes', 'video', 'vig', 'viking', 'villas', 'vin', 'vip', 'virgin', 'visa', 'vision',\n 'vista', 'vistaprint', 'viva', 'vivo', 'vlaanderen', 'vn', 'vodka', 'volkswagen', 'volvo', 'vote', 'voting', 'voto',\n 'voyage', 'vu', 'vuelos', 'wales', 'walmart', 'walter', 'wang', 'wanggou', 'warman', 'watch', 'watches', 'weather',\n 'weatherchannel', 'webcam', 'weber', 'website', 'wed', 'wedding', 'weibo', 'weir', 'wf', 'whoswho', 'wien', 'wiki',\n 'williamhill', 'win', 'windows', 'wine', 'winners', 'wme', 'wolterskluwer', 'woodside', 'work', 'works', 'world', 'wow',\n 'ws', 'wtc', 'wtf', 'xbox', 'xerox', 'xfinity', 'xihuan', 'xin', '测试', 'कॉम', 'परीक्षा', 'セール', '佛山', 'ಭಾರತ', '慈善',\n '集团', '在线', '한국', 'ଭାରତ', '大众汽车', '点看', 'คอม', 'ভাৰত', 'ভারত', '八卦', 'ישראל\\u200e', 'موقع\\u200e', 'বাংলা', '公益',\n '公司', '香格里拉', '网站', '移动', '我爱你', 'москва', 'испытание', 'қаз', 'католик', 'онлайн', 'сайт', '联通', 'срб', 'бг',\n 'бел', 'קום\\u200e', '时尚', '微博', '테스트', '淡马锡', 'ファッション', 'орг', 'नेट', 'ストア', 'アマゾン', '삼성', 'சிங்கப்பூர்', '商标',\n '商店', '商城', 'дети', 'мкд', 'טעסט\\u200e', 'ею', 'ポイント', '新闻', '工行', '家電', 'كوم\\u200e', '中文网', '中信', '中国',\n '中國', '娱乐', '谷歌', 'భారత్', 'ලංකා', '電訊盈科', '购物', '測試', 'クラウド', 'ભારત', '通販', 'भारतम्', 'भारत', 'भारोत', 'آزمایشی\\u200e',\n 'பரிட்சை', '网店', 'संगठन', '餐厅', '网络', 'ком', 'укр', '香港', '亚马逊', '诺基亚', '食品', 'δοκιμή', '飞利浦', 'إختبار\\u200e',\n '台湾', '台灣', '手表', '手机', 'мон', 'الجزائر\\u200e', 'عمان\\u200e', 'ارامكو\\u200e', 'ایران\\u200e', 'العليان\\u200e',\n 'اتصالات\\u200e', 'امارات\\u200e', 'بازار\\u200e', 'موريتانيا\\u200e', 'پاکستان\\u200e', 'الاردن\\u200e', 'موبايلي\\u200e',\n 'بارت\\u200e', 'بھارت\\u200e', 'المغرب\\u200e', 'ابوظبي\\u200e', 'البحرين\\u200e', 'السعودية\\u200e', 'ڀارت\\u200e',\n 'كاثوليك\\u200e', 'سودان\\u200e', 'همراه\\u200e', 'عراق\\u200e', 'مليسيا\\u200e', '澳門', '닷컴', '政府', 'شبكة\\u200e',\n 'بيتك\\u200e', 'عرب\\u200e', 'გე', '机构', '组织机构', '健康', 'ไทย', 'سورية\\u200e', '招聘', 'рус', 'рф', '珠宝',\n 'تونس\\u200e', '大拿', 'ລາວ', 'みんな', 'グーグル', 'ευ', 'ελ', '世界', '書籍', 'ഭാരതം', 'ਭਾਰਤ', '网址', '닷넷', 'コム',\n '天主教', '游戏', 'vermögensberater', 'vermögensberatung', '企业', '信息', '嘉里大酒店', '嘉里', 'مصر\\u200e',\n 'قطر\\u200e', '广东', 'இலங்கை', 'இந்தியா', 'հայ', '新加坡', 'فلسطين\\u200e', 'テスト', '政务', 'xperia', 'xxx',\n 'xyz', 'yachts', 'yahoo', 'yamaxun', 'yandex', 'ye', 'yodobashi', 'yoga', 'yokohama', 'you', 'youtube', 'yt',\n 'yun', 'za', 'zappos', 'zara', 'zero', 'zip', 'zippo', 'zm', 'zone', 'zuerich', 'zw',\n];\n","import { createSelector } from 'reselect';\nimport { FORM_FIELDS } from './constants';\n\nexport const storeName = 'register';\n\nexport const registerSelector = state => ({ ...state[storeName] });\n\nexport const registrationRequestSelector = createSelector(\n registerSelector,\n register => register.registrationResult,\n);\n\nexport const registrationErrorSelector = createSelector(\n registerSelector,\n register => register.registrationError.errorCode,\n);\n\nexport const validationsSelector = createSelector(\n registerSelector,\n (register) => {\n const { registrationError, validations } = register;\n\n if (validations) {\n return validations.validationDecisions;\n }\n\n if (Object.keys(registrationError).length > 0) {\n const validationDecisions = {};\n FORM_FIELDS.forEach(field => {\n validationDecisions[field] = registrationError[field] ? registrationError[field][0].userMessage : '';\n });\n\n return validationDecisions;\n }\n\n return null;\n },\n);\n\nexport const usernameSuggestionsSelector = createSelector(\n registerSelector,\n register => register.usernameSuggestions,\n);\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n 'register.page.title': {\n id: 'register.page.title',\n defaultMessage: 'Register | {siteName}',\n description: 'register page title',\n },\n // Field labels\n 'registration.fullname.label': {\n id: 'registration.fullname.label',\n defaultMessage: 'Full name',\n description: 'Label that appears above fullname field',\n },\n 'registration.email.label': {\n id: 'registration.email.label',\n defaultMessage: 'Email',\n description: 'Label that appears above email field on register page',\n },\n 'registration.username.label': {\n id: 'registration.username.label',\n defaultMessage: 'Public username',\n description: 'Label that appears above username field',\n },\n 'registration.password.label': {\n id: 'registration.password.label',\n defaultMessage: 'Password',\n description: 'Label that appears above password field',\n },\n 'registration.country.label': {\n id: 'registration.country.label',\n defaultMessage: 'Country/Region',\n description: 'Placeholder for the country options dropdown.',\n },\n 'registration.opt.in.label': {\n id: 'registration.opt.in.label',\n defaultMessage: 'I agree that {siteName} may send me marketing messages.',\n description: 'Text for opt in option on register page.',\n },\n // Help text\n 'help.text.name': {\n id: 'help.text.name',\n defaultMessage: 'This name will be used by any certificates that you earn.',\n description: 'Help text for fullname field on registration page',\n },\n 'help.text.username.1': {\n id: 'help.text.username.1',\n defaultMessage: 'The name that will identify you in your courses.',\n description: 'Part of help text for username field on registration page',\n },\n 'help.text.username.2': {\n id: 'help.text.username.2',\n defaultMessage: 'This can not be changed later.',\n description: 'Part of help text for username field on registration page',\n },\n 'help.text.email': {\n id: 'help.text.email',\n defaultMessage: 'For account activation and important updates',\n description: 'Help text for email field on registration page',\n },\n // Form buttons\n 'create.account.button': {\n id: 'create.account.button',\n defaultMessage: 'Create an account',\n description: 'Label text for registration form submission button',\n },\n 'create.an.account.btn.pending.state': {\n id: 'create.an.account.btn.pending.state',\n defaultMessage: 'Loading',\n description: 'Title of icon that appears when button is in pending state',\n },\n 'registration.other.options.heading': {\n id: 'registration.other.options.heading',\n defaultMessage: 'Or register with:',\n description: 'A message that appears above third party auth providers i.e saml, google, facebook etc',\n },\n 'registration.create.account.heading': {\n id: 'registration.create.account.heading',\n defaultMessage: 'Create an account using',\n description: 'A message appears that above the 3rd party Auth providers',\n },\n 'register.signupwith.email.button': {\n id: 'register.signupwith.email.button',\n defaultMessage: 'Sign up with email',\n description: 'Message on the registration page sign up button',\n },\n 'register.signupwith.or.heading': {\n id: 'register.signupwith.or.heading',\n defaultMessage: 'Or',\n description: 'Heading just above the sign up email button',\n },\n // Institution login\n 'register.institution.login.button': {\n id: 'register.institution.login.button',\n defaultMessage: 'Institution/campus credentials',\n description: 'shows institutions list',\n },\n 'register.institution.login.page.title': {\n id: 'register.institution.login.page.title',\n defaultMessage: 'Register with institution/campus credentials',\n description: 'Heading of institution page',\n },\n 'create.an.account': {\n id: 'create.an.account',\n defaultMessage: 'Create an account',\n description: 'Message on button to return to register page',\n },\n // Validation messages\n 'empty.name.field.error': {\n id: 'empty.name.field.error',\n defaultMessage: 'Enter your full name',\n description: 'Error message for empty fullname field',\n },\n 'empty.email.field.error': {\n id: 'empty.email.field.error',\n defaultMessage: 'Enter your email',\n description: 'Error message for empty email field',\n },\n 'empty.username.field.error': {\n id: 'empty.username.field.error',\n defaultMessage: 'Username must be between 2 and 30 characters',\n description: 'Error message for empty username field',\n },\n 'empty.password.field.error': {\n id: 'empty.password.field.error',\n defaultMessage: 'Password criteria has not been met',\n description: 'Error message for empty password field',\n },\n 'empty.country.field.error': {\n id: 'empty.country.field.error',\n defaultMessage: 'Select your country or region of residence',\n description: 'Error message when no country/region is selected',\n },\n 'email.invalid.format.error': {\n id: 'email.invalid.format.error',\n defaultMessage: 'Enter a valid email address',\n description: 'Validation error for invalid email address',\n },\n 'email.ratelimit.less.chars.validation.message': {\n id: 'email.ratelimit.less.chars.validation.message',\n defaultMessage: 'Email must have 3 characters.',\n description: 'Validation message that appears when email address is less than 3 characters',\n },\n 'username.validation.message': {\n id: 'username.validation.message',\n defaultMessage: 'Username must be between 2 and 30 characters',\n description: 'Error message for empty username field',\n },\n 'name.validation.message': {\n id: 'name.validation.message',\n defaultMessage: 'Enter a valid name',\n description: 'Validation message that appears when fullname contain URL',\n },\n 'password.validation.message': {\n id: 'password.validation.message',\n defaultMessage: 'Password criteria has not been met',\n description: 'Error message for empty or invalid password',\n },\n 'username.format.validation.message': {\n id: 'username.format.validation.message',\n defaultMessage: 'Usernames can only contain letters (A-Z, a-z), numerals (0-9), underscores (_), and hyphens (-). Usernames cannot contain spaces.',\n description: 'Validation message that appears when username format is invalid',\n },\n 'support.education.research': {\n id: 'support.education.research',\n defaultMessage: 'Support education research by providing additional information. (Optional)',\n description: 'Text for a checkbox to ask user for if they are willing to provide extra information for education research',\n },\n // Error messages\n 'registration.request.failure.header': {\n id: 'registration.request.failure.header',\n defaultMessage: 'We couldn\\'t create your account.',\n description: 'error message when registration failure.',\n },\n 'registration.empty.form.submission.error': {\n id: 'registration.empty.form.submission.error',\n defaultMessage: 'Please check your responses and try again.',\n description: 'Error message that appears on top of the form when empty form is submitted',\n },\n 'registration.request.server.error': {\n id: 'registration.request.server.error',\n defaultMessage: 'An error has occurred. Try refreshing the page, or check your internet connection.',\n description: 'Error message for internal server error.',\n },\n 'registration.rate.limit.error': {\n id: 'registration.rate.limit.error',\n defaultMessage: 'Too many failed registration attempts. Try again later.',\n description: 'Error message that appears when an anonymous user has made too many failed registration attempts',\n },\n 'registration.tpa.session.expired': {\n id: 'registration.tpa.session.expired',\n defaultMessage: 'Registration using {provider} has timed out.',\n description: '',\n },\n // Terms of Service and Honor Code\n 'terms.and.conditions': {\n id: 'terms.and.conditions',\n defaultMessage: 'Terms and Conditions',\n description: 'Text for the hyperlink that redirects user to terms and conditions',\n },\n 'terms.of.service.and.honor.code': {\n id: 'terms.of.service.and.honor.code',\n defaultMessage: 'Terms of Service and Honor Code',\n description: 'Text for the hyperlink that redirects user to terms of service and honor code',\n },\n 'privacy.policy': {\n id: 'privacy.policy',\n defaultMessage: 'Privacy Policy',\n description: 'Text for the hyperlink that redirects user to privacy policy',\n },\n 'honor.code': {\n id: 'honor.code',\n defaultMessage: 'Honor Code',\n description: 'Text for the hyperlink that redirects user to the honor code',\n },\n 'terms.of.service': {\n id: 'terms.of.service',\n defaultMessage: 'Terms of Service',\n description: 'Text for the hyperlink that redirects user to the terms of service',\n },\n // Optional fields\n 'registration.year.of.birth.label': {\n id: 'registration.year.of.birth.label',\n defaultMessage: 'Year of birth (optional)',\n description: 'Placeholder for the year of birth options dropdown',\n },\n 'registration.field.gender.options.label': {\n id: 'registration.field.gender.options.label',\n defaultMessage: 'Gender (optional)',\n description: 'Placeholder for the gender options dropdown',\n },\n 'registration.goals.label': {\n id: 'registration.goals.label',\n defaultMessage: 'Tell us why you\\'re interested in edX (optional)',\n description: 'Placeholder for the goals options dropdown',\n },\n 'registration.field.gender.options.f': {\n id: 'registration.field.gender.options.f',\n defaultMessage: 'Female',\n description: 'The label for the female gender option.',\n },\n 'registration.field.gender.options.m': {\n id: 'registration.field.gender.options.m',\n defaultMessage: 'Male',\n description: 'The label for the male gender option.',\n },\n 'registration.field.gender.options.o': {\n id: 'registration.field.gender.options.o',\n defaultMessage: 'Other/Prefer not to say',\n description: 'The label for catch-all gender option.',\n },\n 'registration.field.education.levels.label': {\n id: 'registration.field.education.levels.label',\n defaultMessage: 'Highest level of education completed (optional)',\n description: 'Placeholder for the education levels dropdown.',\n },\n 'registration.field.education.levels.p': {\n id: 'registration.field.education.levels.p',\n defaultMessage: 'Doctorate',\n description: 'Selected by the user if their highest level of education is a doctorate degree.',\n },\n 'registration.field.education.levels.m': {\n id: 'registration.field.education.levels.m',\n defaultMessage: \"Master's or professional degree\",\n description: \"Selected by the user if their highest level of education is a master's or professional degree from a college or university.\",\n },\n 'registration.field.education.levels.b': {\n id: 'registration.field.education.levels.b',\n defaultMessage: \"Bachelor's degree\",\n description: \"Selected by the user if their highest level of education is a four year college or university bachelor's degree.\",\n },\n 'registration.field.education.levels.a': {\n id: 'registration.field.education.levels.a',\n defaultMessage: \"Associate's degree\",\n description: \"Selected by the user if their highest level of education is an associate's degree. 1-2 years of college or university.\",\n },\n 'registration.field.education.levels.hs': {\n id: 'registration.field.education.levels.hs',\n defaultMessage: 'Secondary/high school',\n description: 'Selected by the user if their highest level of education is secondary or high school. 9-12 years of education.',\n },\n 'registration.field.education.levels.jhs': {\n id: 'registration.field.education.levels.jhs',\n defaultMessage: 'Junior secondary/junior high/middle school',\n description: 'Selected by the user if their highest level of education is junior or middle school. 6-8 years of education.',\n },\n 'registration.field.education.levels.el': {\n id: 'registration.field.education.levels.el',\n defaultMessage: 'Elementary/primary school',\n description: 'Selected by the user if their highest level of education is elementary or primary school. 1-5 years of education.',\n },\n 'registration.field.education.levels.none': {\n id: 'registration.field.education.levels.none',\n defaultMessage: 'No formal education',\n description: 'Selected by the user to describe their education.',\n },\n 'registration.field.education.levels.other': {\n id: 'registration.field.education.levels.other',\n defaultMessage: 'Other education',\n description: 'Selected by the user if they have a type of education not described by the other choices.',\n },\n // miscellaneous strings\n 'registration.username.suggestion.label': {\n id: 'registration.username.suggestion.label',\n defaultMessage: 'Suggested:',\n description: 'Suggested usernames label text.',\n },\n 'registration.using.tpa.form.heading': {\n id: 'registration.using.tpa.form.heading',\n defaultMessage: 'Finish creating your account',\n description: 'Heading that appears above form when user is trying to Create an account using social auth',\n },\n 'did.you.mean.alert.text': {\n id: 'did.you.mean.alert.text',\n defaultMessage: 'Did you mean',\n description: 'Did you mean alert suggestion',\n },\n 'certificate.msg': {\n id: 'certificate.msg',\n defaultMessage: '*Offer not eligible for GTx’s Analytics: Essential Tools and Methods MicroMasters Program, ColumbiaX’s Corporate Finance Professional Certificate Program, or courses or programs offered by Wharton, and NYIF.',\n description: 'Text for the 15% discount experiment',\n },\n});\n\nexport default messages;\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport { Alert } from '@edx/paragon';\nimport { Error } from '@edx/paragon/icons';\n\nimport { FORBIDDEN_REQUEST, INTERNAL_SERVER_ERROR, TPA_SESSION_EXPIRED } from './data/constants';\nimport messages from './messages';\nimport { windowScrollTo } from '../data/utils';\n\nconst RegistrationFailureMessage = (props) => {\n const {\n context, errorCode, failureCount, intl,\n } = props;\n\n useEffect(() => {\n windowScrollTo({ left: 0, top: 0, behavior: 'smooth' });\n }, [errorCode, failureCount]);\n\n let errorMessage;\n switch (errorCode) {\n case INTERNAL_SERVER_ERROR:\n errorMessage = intl.formatMessage(messages['registration.request.server.error']);\n break;\n case FORBIDDEN_REQUEST:\n errorMessage = intl.formatMessage(messages['registration.rate.limit.error']);\n break;\n case TPA_SESSION_EXPIRED:\n errorMessage = intl.formatMessage(messages['registration.tpa.session.expired'], { provider: context.provider });\n break;\n default:\n errorMessage = intl.formatMessage(messages['registration.empty.form.submission.error']);\n break;\n }\n\n return (\n \n {props.intl.formatMessage(messages['registration.request.failure.header'])}\n

{errorMessage}

\n
\n );\n};\n\nRegistrationFailureMessage.defaultProps = {\n context: {},\n};\n\nRegistrationFailureMessage.propTypes = {\n context: PropTypes.shape({\n provider: PropTypes.string,\n }),\n errorCode: PropTypes.string.isRequired,\n failureCount: PropTypes.number.isRequired,\n intl: intlShape.isRequired,\n};\n\nexport default injectIntl(RegistrationFailureMessage);\n","import React from 'react';\nimport PropTypes, { string } from 'prop-types';\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\n\nimport { Button, IconButton, Icon } from '@edx/paragon';\nimport { Close } from '@edx/paragon/icons';\n\nimport { FormGroup } from '../common-components';\nimport messages from './messages';\n\nconst UsernameField = (props) => {\n const { intl, usernameSuggestions, errorMessage } = props;\n let className = '';\n let suggestedUsernameDiv = <>;\n let iconButton = <>;\n const suggestedUsernames = () => (\n
\n {intl.formatMessage(messages['registration.username.suggestion.label'])}\n
\n {usernameSuggestions.map((username, index) => (\n props.handleSuggestionClick(e, username)}\n >\n {username}\n \n ))}\n
\n {iconButton}\n
\n );\n if (usernameSuggestions.length > 0 && errorMessage && props.value === ' ') {\n className = 'suggested-username-with-error';\n iconButton = props.handleUsernameSuggestionClose()} variant=\"black\" size=\"sm\" className=\"suggested-username-close-button\" />;\n suggestedUsernameDiv = suggestedUsernames();\n } else if (usernameSuggestions.length > 0 && props.value === ' ') {\n className = 'suggested-username';\n iconButton = props.handleUsernameSuggestionClose()} variant=\"black\" size=\"sm\" className=\"suggested-username-close-button\" />;\n suggestedUsernameDiv = suggestedUsernames();\n } else if (usernameSuggestions.length > 0 && errorMessage) {\n suggestedUsernameDiv = suggestedUsernames();\n }\n return (\n \n {suggestedUsernameDiv}\n \n );\n};\n\nUsernameField.defaultProps = {\n usernameSuggestions: [],\n handleSuggestionClick: () => {},\n handleUsernameSuggestionClose: () => {},\n errorMessage: '',\n};\n\nUsernameField.propTypes = {\n usernameSuggestions: PropTypes.arrayOf(string),\n handleSuggestionClick: PropTypes.func,\n handleUsernameSuggestionClose: PropTypes.func,\n errorMessage: PropTypes.string,\n intl: intlShape.isRequired,\n name: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n};\n\nexport default injectIntl(UsernameField);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { injectIntl, intlShape, FormattedMessage } from '@edx/frontend-platform/i18n';\nimport { Hyperlink, Form } from '@edx/paragon';\nimport messages from './messages';\n\nconst HonorCode = (props) => {\n const {\n intl, errorMessage, onChangeHandler, fieldType, value,\n } = props;\n\n if (fieldType === 'tos_and_honor_code') {\n return (\n
\n \n {intl.formatMessage(messages['terms.of.service.and.honor.code'])}\n \n ),\n privacyPolicy: (\n \n {intl.formatMessage(messages['privacy.policy'])}\n \n ),\n }}\n />\n
\n );\n }\n\n return (\n
\n \n \n {intl.formatMessage(messages['honor.code'])}\n \n ),\n }}\n />\n \n {errorMessage && (\n \n {errorMessage}\n \n )}\n
\n );\n};\n\nHonorCode.defaultProps = {\n errorMessage: '',\n onChangeHandler: null,\n fieldType: 'honor_code',\n value: false,\n};\n\nHonorCode.propTypes = {\n intl: intlShape.isRequired,\n errorMessage: PropTypes.string,\n onChangeHandler: PropTypes.func,\n fieldType: PropTypes.string,\n value: PropTypes.bool,\n};\n\nexport default injectIntl(HonorCode);\n","import React from 'react';\nimport { Icon, IconButton } from '@edx/paragon';\nimport { ExpandMore, ExpandLess } from '@edx/paragon/icons';\nimport onClickOutside from 'react-onclickoutside';\nimport PropTypes from 'prop-types';\nimport { FormGroup } from '../common-components';\nimport { FORM_SUBMISSION_ERROR } from './data/constants';\n\nclass CountryDropdown extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n displayValue: '',\n icon: this.expandMoreButton(),\n errorMessage: '',\n showFieldError: true,\n };\n\n this.handleFocus = this.handleFocus.bind(this);\n this.handleOnBlur = this.handleOnBlur.bind(this);\n }\n\n shouldComponentUpdate(nextProps) {\n if (this.props.value !== nextProps.value && nextProps.value !== null) {\n const opt = this.props.options.find((o) => o[this.props.valueKey] === nextProps.value);\n if (opt && opt[this.props.displayValueKey] !== this.state.displayValue) {\n this.setState({ displayValue: opt[this.props.displayValueKey], showFieldError: false });\n }\n return false;\n }\n\n return true;\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.errorCode === FORM_SUBMISSION_ERROR && state.showFieldError) {\n return { errorMessage: props.errorMessage };\n }\n return null;\n }\n\n getItems(strToFind = '') {\n let { options } = this.props;\n if (strToFind.length > 0) {\n options = options.filter((option) => (option.name.toLowerCase().includes(strToFind.toLowerCase())));\n }\n\n return options.map((opt) => {\n const value = opt[this.props.valueKey];\n let displayValue = opt[this.props.displayValueKey];\n if (displayValue.length > 30) {\n displayValue = displayValue.substring(0, 30).concat('...');\n }\n\n return (\n \n );\n });\n }\n\n setValue(value) {\n if (this.props.value === value) {\n return;\n }\n\n if (this.props.handleChange) {\n this.props.handleChange(value);\n }\n\n const opt = this.props.options.find((o) => o[this.props.valueKey] === value);\n if (opt && opt[this.props.displayValueKey] !== this.state.displayValue) {\n this.setState({ displayValue: opt[this.props.displayValueKey], showFieldError: false });\n }\n }\n\n setDisplayValue(value) {\n const normalized = value.toLowerCase();\n const opt = this.props.options.find((o) => o[this.props.displayValueKey].toLowerCase() === normalized);\n if (opt) {\n this.setValue(opt[this.props.valueKey]);\n this.setState({ displayValue: opt[this.props.displayValueKey], showFieldError: false });\n } else {\n this.setValue(null);\n this.setState({ displayValue: value, showFieldError: true });\n }\n }\n\n handleClick = (e) => {\n const dropDownItems = this.getItems(e.target.value);\n if (dropDownItems?.length > 1) {\n this.setState({ dropDownItems, icon: this.expandLessButton(), errorMessage: '' });\n }\n\n if (this.state.dropDownItems?.length > 0) {\n this.setState({ dropDownItems: '', icon: this.expandMoreButton(), errorMessage: '' });\n }\n }\n\n handleOnChange = (e) => {\n const findstr = e.target.value;\n\n if (findstr.length > 0) {\n const filteredItems = this.getItems(findstr);\n this.setState({ dropDownItems: filteredItems, icon: this.expandLessButton(), errorMessage: '' });\n } else {\n this.setState({ dropDownItems: '', icon: this.expandMoreButton(), errorMessage: this.props.errorMessage });\n }\n\n this.setDisplayValue(e.target.value);\n }\n\n handleClickOutside = () => {\n if (this.state.dropDownItems?.length > 0) {\n const msg = this.state.displayValue === '' ? this.props.errorMessage : '';\n this.setState(() => ({\n icon: this.expandMoreButton(),\n dropDownItems: '',\n errorMessage: msg,\n }));\n }\n }\n\n handleExpandLess() {\n this.setState({ dropDownItems: '', icon: this.expandMoreButton() });\n }\n\n handleExpandMore(e) {\n const dropDownItems = this.getItems(e.target.value);\n this.setState({\n dropDownItems, icon: this.expandLessButton(), errorMessage: '', showFieldError: false,\n });\n }\n\n handleFocus(e) {\n if (this.props.handleFocus) { this.props.handleFocus(e); }\n }\n\n handleOnBlur(e) {\n if (this.props.handleBlur) { this.props.handleBlur(e); }\n }\n\n handleItemClick(e) {\n this.setValue(e.target.value);\n this.setState({ dropDownItems: '', icon: this.expandMoreButton() });\n }\n\n expandMoreButton() {\n return (\n { this.handleExpandMore(e); }}\n />\n );\n }\n\n expandLessButton() {\n return (\n { this.handleExpandLess(e); }}\n />\n );\n }\n\n render() {\n return (\n
\n \n
\n { this.state.dropDownItems?.length > 0 ? this.state.dropDownItems : null }\n
\n
\n );\n }\n}\n\nCountryDropdown.defaultProps = {\n options: null,\n floatingLabel: null,\n handleFocus: null,\n handleChange: null,\n handleBlur: null,\n value: null,\n errorMessage: null,\n errorCode: null,\n readOnly: false,\n};\n\nCountryDropdown.propTypes = {\n options: PropTypes.arrayOf(PropTypes.object),\n floatingLabel: PropTypes.string,\n valueKey: PropTypes.string.isRequired,\n displayValueKey: PropTypes.string.isRequired,\n handleFocus: PropTypes.func,\n handleChange: PropTypes.func,\n handleBlur: PropTypes.func,\n value: PropTypes.string,\n errorMessage: PropTypes.string,\n errorCode: PropTypes.string,\n name: PropTypes.string.isRequired,\n readOnly: PropTypes.bool,\n};\n\nexport default onClickOutside(CountryDropdown);\n","import { distance } from 'fastest-levenshtein';\nimport { COMMON_EMAIL_PROVIDERS } from './data/constants';\n\nexport function getLevenshteinSuggestion(word, knownWords, similarityThreshold = 4) {\n if (!word) {\n return null;\n }\n\n let minEditDistance = 100;\n let mostSimilar = word;\n\n for (let i = 0; i < knownWords.length; i++) {\n const editDistance = distance(knownWords[i].toLowerCase(), word.toLowerCase());\n if (editDistance < minEditDistance) {\n minEditDistance = editDistance;\n mostSimilar = knownWords[i];\n }\n }\n\n return minEditDistance <= similarityThreshold && word !== mostSimilar ? mostSimilar : null;\n}\n\nexport function getSuggestionForInvalidEmail(domain, username) {\n if (!domain) {\n return null;\n }\n\n const defaultDomains = ['yahoo', 'aol', 'hotmail', 'live', 'outlook', 'gmail'];\n const suggestion = getLevenshteinSuggestion(domain, COMMON_EMAIL_PROVIDERS);\n\n if (suggestion) {\n return `${username}@${suggestion}`;\n }\n\n for (let i = 0; i < defaultDomains.length; i++) {\n if (domain.includes(defaultDomains[i])) {\n return `${username}@${defaultDomains[i]}.com`;\n }\n }\n\n return null;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { injectIntl, intlShape, FormattedMessage } from '@edx/frontend-platform/i18n';\nimport { Hyperlink, Form } from '@edx/paragon';\nimport messages from './messages';\n\nconst TermsOfService = (props) => {\n const {\n intl, errorMessage, onChangeHandler, value,\n } = props;\n\n return (\n
\n \n \n {intl.formatMessage(messages['terms.of.service'])}\n \n ),\n }}\n />\n \n {errorMessage && (\n \n {errorMessage}\n \n )}\n
\n );\n};\n\nTermsOfService.defaultProps = {\n errorMessage: '',\n value: false,\n};\n\nTermsOfService.propTypes = {\n intl: intlShape.isRequired,\n errorMessage: PropTypes.string,\n onChangeHandler: PropTypes.func.isRequired,\n value: PropTypes.bool,\n};\n\nexport default injectIntl(TermsOfService);\n","import React from 'react';\n\nimport { connect } from 'react-redux';\nimport Skeleton from 'react-loading-skeleton';\nimport { Helmet } from 'react-helmet';\nimport PropTypes, { string } from 'prop-types';\n\nimport { getConfig, snakeCaseObject } from '@edx/frontend-platform';\nimport { sendPageEvent, sendTrackEvent } from '@edx/frontend-platform/analytics';\nimport {\n injectIntl, intlShape, getCountryList, getLocale, FormattedMessage\n} from '@edx/frontend-platform/i18n';\nimport {\n Alert, Form, Hyperlink, StatefulButton, Icon, Button,\n} from '@edx/paragon';\nimport { Error, Close } from '@edx/paragon/icons';\nimport FormFieldRenderer from '../field-renderer';\nimport {\n clearUsernameSuggestions, registerNewUser, resetRegistrationForm, fetchRealtimeValidations,\n} from './data/actions';\nimport {\n FIELDS, FORM_SUBMISSION_ERROR, DEFAULT_SERVICE_PROVIDER_DOMAINS, DEFAULT_TOP_LEVEL_DOMAINS, COMMON_EMAIL_PROVIDERS,\n} from './data/constants';\nimport {\n registrationErrorSelector,\n registrationRequestSelector,\n validationsSelector,\n usernameSuggestionsSelector,\n} from './data/selectors';\nimport messages from './messages';\nimport RegistrationFailure from './RegistrationFailure';\nimport UsernameField from './UsernameField';\nimport HonorCode from './HonorCode';\n\nimport {\n RedirectLogistration, SocialAuthProviders, ThirdPartyAuthAlert, RenderInstitutionButton,\n InstitutionLogistration, FormGroup, PasswordField,\n} from '../common-components';\nimport { getThirdPartyAuthContext } from '../common-components/data/actions';\nimport {\n extendedProfileSelector,\n fieldDescriptionSelector,\n thirdPartyAuthContextSelector,\n} from '../common-components/data/selectors';\nimport EnterpriseSSO from '../common-components/EnterpriseSSO';\nimport {\n DEFAULT_STATE, PENDING_STATE, REGISTER_PAGE, VALID_EMAIL_REGEX, LETTER_REGEX, NUMBER_REGEX, VALID_NAME_REGEX,\n} from '../data/constants';\nimport {\n getTpaProvider, getTpaHint, getAllPossibleQueryParam, setSurveyCookie, setCookie,\n} from '../data/utils';\nimport CountryDropdown from './CountryDropdown';\nimport { getLevenshteinSuggestion, getSuggestionForInvalidEmail } from './utils';\nimport TermsOfService from './TermsOfService';\n\nclass RegistrationPage extends React.Component {\n constructor(props, context) {\n super(props, context);\n sendPageEvent('login_and_registration', 'register');\n this.handleOnClose = this.handleOnClose.bind(this);\n\n this.queryParams = getAllPossibleQueryParam();\n // TODO: Once we have tested it and ready for openedX we can remove this flag and make the code\n // permanent part of Authn and remove extra code\n this.showDynamicRegistrationFields = getConfig().ENABLE_DYNAMIC_REGISTRATION_FIELDS;\n this.tpaHint = getTpaHint();\n this.state = {\n country: '',\n email: '',\n name: '',\n password: '',\n username: '',\n marketingOptIn: true,\n errors: {\n email: '',\n name: '',\n username: '',\n password: '',\n country: '',\n },\n emailErrorSuggestion: null,\n emailWarningSuggestion: null,\n errorCode: null,\n failureCount: 0,\n startTime: Date.now(),\n totalRegistrationTime: 0,\n optimizelyExperimentName: '',\n readOnly: true,\n validatePassword: false,\n // TODO: Remove after VAN-704 is complete\n registerRenameExpVariation: '',\n signUpWithEmailVisible: false,\n };\n }\n\n componentDidMount() {\n const payload = { ...this.queryParams };\n window.optimizely = window.optimizely || [];\n window.optimizely.push({\n type: 'page',\n pageName: 'authn_registration_page',\n isActive: true,\n });\n\n if (payload.save_for_later === 'true') {\n sendTrackEvent('edx.bi.user.saveforlater.course.enroll.clicked', { category: 'save-for-later' });\n }\n\n if (this.tpaHint) {\n payload.tpa_hint = this.tpaHint;\n }\n this.props.resetRegistrationForm();\n this.props.getThirdPartyAuthContext(payload);\n this.getExperiments();\n }\n\n shouldComponentUpdate(nextProps) {\n if (this.props.usernameSuggestions.length > 0 && this.state.username === '') {\n this.setState({\n username: ' ',\n });\n return false;\n }\n if (this.props.validationDecisions !== nextProps.validationDecisions) {\n const state = { errors: { ...this.state.errors, ...nextProps.validationDecisions } };\n let validatePassword = false;\n\n if (state.errors.password) {\n validatePassword = true;\n }\n if (nextProps.registrationErrorCode) {\n state.errorCode = nextProps.registrationErrorCode;\n }\n let {\n suggestedTldMessage,\n suggestedTopLevelDomain,\n suggestedSldMessage,\n suggestedServiceLevelDomain,\n\n } = this.state;\n if (state.errors.email) {\n suggestedTldMessage = '';\n suggestedTopLevelDomain = '';\n suggestedSldMessage = '';\n suggestedServiceLevelDomain = '';\n }\n this.setState({\n ...state,\n suggestedTldMessage,\n suggestedTopLevelDomain,\n suggestedSldMessage,\n suggestedServiceLevelDomain,\n validatePassword,\n });\n return false;\n }\n\n if (this.props.registrationErrorCode !== nextProps.registrationErrorCode) {\n this.setState({ errorCode: nextProps.registrationErrorCode });\n return false;\n }\n\n if (this.props.thirdPartyAuthContext.pipelineUserDetails !== nextProps.thirdPartyAuthContext.pipelineUserDetails) {\n this.setState({\n ...nextProps.thirdPartyAuthContext.pipelineUserDetails,\n country: nextProps.thirdPartyAuthContext.countryCode || '',\n signUpWithEmailVisible: (nextProps.thirdPartyAuthContext.pipelineUserDetails.email) ? true: false,\n });\n return false;\n }\n\n if (this.props.thirdPartyAuthContext.countryCode !== nextProps.thirdPartyAuthContext.countryCode) {\n this.setState({\n country: nextProps.thirdPartyAuthContext.countryCode || '',\n });\n return false;\n }\n\n return true;\n }\n\n getExperiments = () => {\n const { experimentName } = window;\n\n if (experimentName) {\n this.setState({ optimizelyExperimentName: experimentName });\n }\n };\n\n onChangeHandler = (e) => {\n const { name, value, checked } = e.target;\n const { errors, values } = this.state;\n if (e.target.type === 'checkbox') {\n errors[name] = '';\n values[name] = checked;\n } else {\n values[name] = value;\n }\n const state = { errors, values };\n this.setState({ ...state });\n };\n\n handleSubmit = (e) => {\n e.preventDefault();\n const { startTime } = this.state;\n const totalRegistrationTime = (Date.now() - startTime) / 1000;\n const dynamicFieldErrorMessages = {};\n let payload = {\n name: this.state.name,\n username: this.state.username,\n email: this.state.email,\n is_authn_mfe: true,\n };\n\n if (this.props.thirdPartyAuthContext.currentProvider) {\n payload.social_auth_provider = this.props.thirdPartyAuthContext.currentProvider;\n } else {\n payload.password = this.state.password;\n }\n\n if (this.showDynamicRegistrationFields) {\n payload.extendedProfile = [];\n Object.keys(this.props.fieldDescriptions).forEach((fieldName) => {\n if (this.props.extendedProfile.includes(fieldName)) {\n payload.extendedProfile.push({ fieldName, fieldValue: this.state.values[fieldName] });\n } else {\n payload[fieldName] = this.state.values[fieldName];\n }\n dynamicFieldErrorMessages[fieldName] = this.props.fieldDescriptions[fieldName].error_message;\n });\n if (\n this.props.fieldDescriptions[FIELDS.HONOR_CODE]\n && this.props.fieldDescriptions[FIELDS.HONOR_CODE].type === 'tos_and_honor_code'\n ) {\n payload[FIELDS.HONOR_CODE] = true;\n }\n } else {\n payload.country = this.state.country;\n payload.honor_code = true;\n }\n\n if (!this.isFormValid(payload, dynamicFieldErrorMessages)) {\n this.setState(prevState => ({\n errorCode: FORM_SUBMISSION_ERROR,\n failureCount: prevState.failureCount + 1,\n }));\n return;\n }\n\n if (getConfig().MARKETING_EMAILS_OPT_IN) {\n payload.marketing_emails_opt_in = this.state.marketingOptIn;\n }\n\n payload = snakeCaseObject(payload);\n payload.totalRegistrationTime = totalRegistrationTime;\n this.setState({\n totalRegistrationTime,\n }, () => {\n this.props.registerNewUser(payload);\n });\n }\n\n handleOnBlur = (e) => {\n let { name, value } = e.target;\n if (name === 'passwordValidation') {\n name = 'password';\n value = this.state.password;\n }\n const payload = {\n is_authn_mfe: true,\n form_field_key: name,\n email: this.state.email,\n username: this.state.username,\n password: this.state.password,\n name: this.state.name,\n honor_code: true,\n country: this.state.country,\n };\n this.validateInput(name, value, payload);\n }\n\n handleOnChange = (e) => {\n if (!(e.target.name === 'username' && e.target.value.length > 30)) {\n this.setState({\n [e.target.name]: e.target.value,\n });\n }\n }\n\n handleOnFocus = (e) => {\n const { errors } = this.state;\n errors[e.target.name] = '';\n const state = { errors };\n if (e.target.name === 'username') {\n this.props.clearUsernameSuggestions();\n }\n if (e.target.name === 'country') {\n state.readOnly = false;\n }\n if (e.target.name === 'passwordValidation') {\n state.errors.password = '';\n }\n this.setState({ ...state });\n }\n\n handleSuggestionClick = (e, suggestion) => {\n const { errors } = this.state;\n if (e.target.name === 'username') {\n errors.username = '';\n this.setState({\n username: suggestion,\n errors,\n });\n this.props.clearUsernameSuggestions();\n } else if (e.target.name === 'email') {\n e.preventDefault();\n errors.email = '';\n this.setState({\n borderClass: '',\n email: suggestion,\n emailErrorSuggestion: null,\n emailWarningSuggestion: null,\n errors,\n });\n }\n }\n\n handleUsernameSuggestionClose = () => {\n this.setState({\n username: '',\n });\n this.props.clearUsernameSuggestions();\n }\n\n handleSignUpEmailClick = () => {\n this.setState({ signUpWithEmailVisible: true });\n }\n\n isFormValid(payload, dynamicFieldError) {\n const { errors } = this.state;\n let isValid = true;\n\n Object.keys(payload).forEach(key => {\n if (!payload[key]) {\n errors[key] = (key in dynamicFieldError) ? dynamicFieldError[key] : this.props.intl.formatMessage(messages[`empty.${key}.field.error`]);\n }\n // Mark form invalid, if there was already a validation error for this key or we added empty field error\n if (errors[key]) {\n isValid = false;\n }\n });\n\n this.setState({ errors });\n return isValid;\n }\n\n validateInput(fieldName, value, payload) {\n const { errors } = this.state;\n const { intl, statusCode } = this.props;\n const emailRegex = new RegExp(VALID_EMAIL_REGEX, 'i');\n const urlRegex = new RegExp(VALID_NAME_REGEX);\n\n switch (fieldName) {\n case 'email':\n if (!value) {\n errors.email = intl.formatMessage(messages['empty.email.field.error']);\n } else if (value.length <= 2) {\n errors.email = intl.formatMessage(messages['email.invalid.format.error']);\n } else {\n let emailWarningSuggestion = null;\n let emailErrorSuggestion = null;\n\n const [username, domainName] = value.split('@');\n\n // Check if email address is invalid. If we have a suggestion for invalid email provide that along with\n // error message.\n if (!emailRegex.test(value)) {\n errors.email = intl.formatMessage(messages['email.invalid.format.error']);\n emailErrorSuggestion = getSuggestionForInvalidEmail(domainName, username);\n } else {\n let suggestion = null;\n const hasMultipleSubdomains = value.match(/\\./g).length > 1;\n const [serviceLevelDomain, topLevelDomain] = domainName.split('.');\n const tldSuggestion = !DEFAULT_TOP_LEVEL_DOMAINS.includes(topLevelDomain);\n const serviceSuggestion = getLevenshteinSuggestion(serviceLevelDomain, DEFAULT_SERVICE_PROVIDER_DOMAINS, 2);\n\n if (DEFAULT_SERVICE_PROVIDER_DOMAINS.includes(serviceSuggestion || serviceLevelDomain)) {\n suggestion = `${username}@${serviceSuggestion || serviceLevelDomain}.com`;\n }\n\n if (!hasMultipleSubdomains && tldSuggestion) {\n emailErrorSuggestion = suggestion;\n } else if (serviceSuggestion) {\n emailWarningSuggestion = suggestion;\n } else {\n suggestion = getLevenshteinSuggestion(domainName, COMMON_EMAIL_PROVIDERS, 3);\n if (suggestion) {\n emailWarningSuggestion = `${username}@${suggestion}`;\n }\n }\n\n if (!hasMultipleSubdomains && tldSuggestion) {\n errors.email = intl.formatMessage(messages['email.invalid.format.error']);\n } else if (payload && statusCode !== 403) {\n this.props.fetchRealtimeValidations(payload);\n } else {\n errors.email = '';\n }\n }\n this.setState({\n emailWarningSuggestion,\n emailErrorSuggestion,\n borderClass: emailWarningSuggestion ? 'yellow-border' : null,\n });\n }\n break;\n case 'name':\n if (!value) {\n errors.name = intl.formatMessage(messages['empty.name.field.error']);\n } else if (value && value.match(urlRegex)) {\n errors.name = intl.formatMessage(messages['name.validation.message']);\n } else {\n errors.name = '';\n }\n\n if (!this.state.username.trim() && value) {\n // fetch username suggestions based on the full name\n this.props.fetchRealtimeValidations(payload);\n }\n break;\n case 'username':\n if (value === ' ' && this.props.usernameSuggestions.length > 0) {\n errors.username = '';\n break;\n }\n if (!value || value.length <= 1 || value.length > 30) {\n errors.username = intl.formatMessage(messages['username.validation.message']);\n } else if (!value.match(/^[a-zA-Z0-9_-]*$/i)) {\n errors.username = intl.formatMessage(messages['username.format.validation.message']);\n } else if (payload && statusCode !== 403) {\n this.props.fetchRealtimeValidations(payload);\n } else {\n errors.username = '';\n }\n if (this.state.validatePassword) {\n this.props.fetchRealtimeValidations({ ...payload, form_field_key: 'password' });\n }\n break;\n case 'password':\n errors.password = '';\n if (!value || !LETTER_REGEX.test(value) || !NUMBER_REGEX.test(value) || value.length < 8) {\n errors.password = intl.formatMessage(messages['password.validation.message']);\n } else if (payload && statusCode !== 403) {\n this.props.fetchRealtimeValidations(payload);\n }\n break;\n case 'country':\n if (!value) {\n errors.country = intl.formatMessage(messages['empty.country.field.error']);\n } else {\n errors.country = '';\n }\n break;\n default:\n break;\n }\n\n this.setState({ errors });\n return errors;\n }\n\n handleOnClose() {\n this.setState({ emailErrorSuggestion: null });\n }\n\n renderEmailFeedback() {\n if (this.state.emailErrorSuggestion) {\n return (\n \n \n {this.props.intl.formatMessage(messages['did.you.mean.alert.text'])}{' '}\n { this.handleSuggestionClick(e, this.state.emailErrorSuggestion); }}\n >\n {this.state.emailErrorSuggestion}\n ?\n \n \n );\n }\n if (this.state.emailWarningSuggestion) {\n return (\n \n {this.props.intl.formatMessage(messages['did.you.mean.alert.text'])}:{' '}\n { this.handleSuggestionClick(e, this.state.emailWarningSuggestion); }}\n >\n {this.state.emailWarningSuggestion}\n ?\n \n );\n }\n\n return null;\n }\n\n renderThirdPartyAuth(providers, secondaryProviders, currentProvider, thirdPartyAuthApiStatus, intl) {\n const isInstitutionAuthActive = !!secondaryProviders.length && !currentProvider;\n const isSocialAuthActive = !!providers.length && !currentProvider;\n const isEnterpriseLoginDisabled = getConfig().DISABLE_ENTERPRISE_LOGIN;\n\n return (\n <>\n {((isEnterpriseLoginDisabled && isInstitutionAuthActive) || isSocialAuthActive) && (\n
\n {intl.formatMessage(messages['registration.create.account.heading'])}\n
\n )}\n\n {thirdPartyAuthApiStatus === PENDING_STATE ? (\n \n ) : (\n <>\n {(isEnterpriseLoginDisabled && isInstitutionAuthActive) && (\n \n )}\n {isSocialAuthActive && (\n
\n \n
\n )}\n \n )}\n \n );\n }\n\n renderSignUpForm(intl, currentProvider, submitState, formFields) {\n return (\n <>\n \n \n {this.renderEmailFeedback()}\n \n\n \n\n {!currentProvider && (\n \n )}\n this.setState({ country: value })}\n errorCode={this.state.errorCode}\n readOnly={this.state.readOnly}\n />\n {formFields}\n {(getConfig().MARKETING_EMAILS_OPT_IN)\n && (\n this.setState({ marketingOptIn: e.target.checked })}\n >\n {intl.formatMessage(messages['registration.opt.in.label'], { siteName: getConfig().SITE_NAME })}\n \n )}\n
\n \n {intl.formatMessage(messages['terms.and.conditions'])}\n \n ),\n privacyPolicy: (\n \n {intl.formatMessage(messages['privacy.policy'])}\n \n ),\n }}\n />\n
\n e.preventDefault()}\n />\n \n );\n }\n\n renderForm(currentProvider,\n providers,\n secondaryProviders,\n thirdPartyAuthApiStatus,\n finishAuthUrl,\n submitState,\n intl) {\n if (this.props.institutionLogin) {\n return (\n \n );\n }\n\n if (this.props.registrationResult.success) {\n setSurveyCookie('register');\n setCookie(getConfig().REGISTER_CONVERSION_COOKIE_NAME, true);\n setCookie('authn-returning-user');\n\n // Fire optimizely events\n window.optimizely = window.optimizely || [];\n window.optimizely.push({\n type: 'event',\n eventName: 'authn-register-conversion',\n tags: {\n value: this.state.totalRegistrationTime,\n },\n });\n }\n\n const honorCode = [];\n const formFields = this.showDynamicRegistrationFields ? (\n Object.keys(this.props.fieldDescriptions).map((fieldName) => {\n const fieldData = this.props.fieldDescriptions[fieldName];\n switch (fieldData.name) {\n case FIELDS.COUNTRY:\n return (\n \n this.setState(prevState => ({ values: { ...prevState.values, country: value } }))\n }\n errorCode={this.state.errorCode}\n readOnly={this.state.readOnly}\n />\n \n );\n case FIELDS.HONOR_CODE:\n honorCode.push(\n \n \n ,\n );\n return null;\n case FIELDS.TERMS_OF_SERVICE:\n honorCode.push(\n \n \n ,\n );\n return null;\n default:\n return (\n \n \n \n );\n }\n })\n ) : null;\n\n return (\n <>\n \n {intl.formatMessage(messages['register.page.title'],\n { siteName: getConfig().SITE_NAME })}\n \n \n \n
\n {this.state.errorCode ? (\n \n ) : null}\n {currentProvider && (\n <>\n \n

{intl.formatMessage(messages['registration.using.tpa.form.heading'])}

\n \n )}\n
\n {this.renderThirdPartyAuth(providers,\n secondaryProviders,\n currentProvider,\n thirdPartyAuthApiStatus,\n intl)}\n {!this.state.signUpWithEmailVisible\n ? (\n
\n {intl.formatMessage(messages['register.signupwith.or.heading'])}\n \n
\n )\n : this.renderSignUpForm(intl, currentProvider, submitState, formFields)}\n\n
\n {(this.state.optimizelyExperimentName === 'variation1' || this.state.optimizelyExperimentName === 'variation2')\n ? (\n
\n {intl.formatMessage(messages['certificate.msg'])}\n
\n )\n : null}\n
\n \n );\n }\n\n render() {\n const { intl, submitState, thirdPartyAuthApiStatus } = this.props;\n const {\n currentProvider, finishAuthUrl, providers, secondaryProviders,\n } = this.props.thirdPartyAuthContext;\n\n if (this.tpaHint) {\n if (thirdPartyAuthApiStatus === PENDING_STATE) {\n return ;\n }\n const { provider, skipHintedLogin } = getTpaProvider(this.tpaHint, providers, secondaryProviders);\n if (skipHintedLogin) {\n window.location.href = getConfig().LMS_BASE_URL + provider.registerUrl;\n return null;\n }\n return provider ? ()\n : this.renderForm(\n currentProvider,\n providers,\n secondaryProviders,\n thirdPartyAuthApiStatus,\n finishAuthUrl,\n submitState,\n intl,\n );\n }\n return this.renderForm(\n currentProvider,\n providers,\n secondaryProviders,\n thirdPartyAuthApiStatus,\n finishAuthUrl,\n submitState,\n intl,\n );\n }\n}\n\nRegistrationPage.defaultProps = {\n extendedProfile: [],\n fieldDescriptions: {},\n registrationResult: null,\n registerNewUser: null,\n registrationErrorCode: null,\n submitState: DEFAULT_STATE,\n thirdPartyAuthApiStatus: 'pending',\n thirdPartyAuthContext: {\n currentProvider: null,\n finishAuthUrl: null,\n countryCode: null,\n providers: [],\n secondaryProviders: [],\n pipelineUserDetails: null,\n },\n validationDecisions: null,\n statusCode: null,\n usernameSuggestions: [],\n};\n\nRegistrationPage.propTypes = {\n extendedProfile: PropTypes.arrayOf(PropTypes.string),\n fieldDescriptions: PropTypes.shape({}),\n intl: intlShape.isRequired,\n getThirdPartyAuthContext: PropTypes.func.isRequired,\n registerNewUser: PropTypes.func,\n resetRegistrationForm: PropTypes.func.isRequired,\n registrationResult: PropTypes.shape({\n redirectUrl: PropTypes.string,\n success: PropTypes.bool,\n }),\n registrationErrorCode: PropTypes.string,\n submitState: PropTypes.string,\n thirdPartyAuthApiStatus: PropTypes.string,\n thirdPartyAuthContext: PropTypes.shape({\n currentProvider: PropTypes.string,\n platformName: PropTypes.string,\n providers: PropTypes.array,\n secondaryProviders: PropTypes.array,\n finishAuthUrl: PropTypes.string,\n countryCode: PropTypes.string,\n pipelineUserDetails: PropTypes.shape({\n email: PropTypes.string,\n fullname: PropTypes.string,\n firstName: PropTypes.string,\n lastName: PropTypes.string,\n username: PropTypes.string,\n }),\n }),\n fetchRealtimeValidations: PropTypes.func.isRequired,\n validationDecisions: PropTypes.shape({\n country: PropTypes.string,\n email: PropTypes.string,\n name: PropTypes.string,\n password: PropTypes.string,\n username: PropTypes.string,\n }),\n clearUsernameSuggestions: PropTypes.func.isRequired,\n statusCode: PropTypes.number,\n usernameSuggestions: PropTypes.arrayOf(string),\n institutionLogin: PropTypes.bool.isRequired,\n handleInstitutionLogin: PropTypes.func.isRequired,\n};\n\nconst mapStateToProps = state => {\n const registrationResult = registrationRequestSelector(state);\n const thirdPartyAuthContext = thirdPartyAuthContextSelector(state);\n return {\n registrationErrorCode: registrationErrorSelector(state),\n submitState: state.register.submitState,\n thirdPartyAuthApiStatus: state.commonComponents.thirdPartyAuthApiStatus,\n registrationResult,\n thirdPartyAuthContext,\n validationDecisions: validationsSelector(state),\n statusCode: state.register.statusCode,\n usernameSuggestions: usernameSuggestionsSelector(state),\n fieldDescriptions: fieldDescriptionSelector(state),\n extendedProfile: extendedProfileSelector(state),\n };\n};\n\nexport default connect(\n mapStateToProps,\n {\n clearUsernameSuggestions,\n getThirdPartyAuthContext,\n fetchRealtimeValidations,\n registerNewUser,\n resetRegistrationForm,\n },\n)(injectIntl(RegistrationPage));\n","import {\n REGISTRATION_FORM,\n REGISTER_NEW_USER,\n REGISTER_FORM_VALIDATIONS,\n REGISTER_CLEAR_USERNAME_SUGGESTIONS,\n} from './actions';\n\nimport {\n DEFAULT_STATE,\n PENDING_STATE,\n} from '../../data/constants';\n\nexport const defaultState = {\n registrationError: {},\n registrationResult: {},\n formData: null,\n validations: null,\n statusCode: null,\n usernameSuggestions: [],\n extendedProfile: [],\n fieldDescriptions: {},\n formRenderState: DEFAULT_STATE,\n};\n\nconst reducer = (state = defaultState, action) => {\n switch (action.type) {\n case REGISTRATION_FORM.RESET:\n return {\n ...defaultState,\n };\n case REGISTER_NEW_USER.BEGIN:\n return {\n ...state,\n submitState: PENDING_STATE,\n registrationError: {},\n };\n case REGISTER_NEW_USER.SUCCESS:\n return {\n ...state,\n registrationResult: action.payload,\n };\n case REGISTER_NEW_USER.FAILURE: {\n const { usernameSuggestions } = action.payload;\n return {\n ...state,\n registrationError: { ...action.payload },\n submitState: DEFAULT_STATE,\n validations: null,\n usernameSuggestions: usernameSuggestions || state.usernameSuggestions,\n };\n }\n case REGISTER_FORM_VALIDATIONS.BEGIN:\n return {\n ...state,\n };\n case REGISTER_FORM_VALIDATIONS.SUCCESS: {\n const { usernameSuggestions } = action.payload.validations;\n return {\n ...state,\n validations: action.payload.validations,\n usernameSuggestions: usernameSuggestions || state.usernameSuggestions,\n };\n }\n case REGISTER_FORM_VALIDATIONS.FAILURE:\n return {\n ...state,\n statusCode: 403,\n validations: null,\n };\n case REGISTER_CLEAR_USERNAME_SUGGESTIONS:\n return {\n ...state,\n usernameSuggestions: [],\n };\n default:\n return state;\n }\n};\n\nexport default reducer;\n","import { getConfig } from '@edx/frontend-platform';\nimport { getHttpClient, getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';\nimport * as QueryString from 'query-string';\n\nexport async function registerRequest(registrationInformation) {\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 `${getConfig().LMS_BASE_URL}/api/user/v2/account/registration/`,\n QueryString.stringify(registrationInformation),\n requestConfig,\n )\n .catch((e) => {\n throw (e);\n });\n\n return {\n redirectUrl: data.redirect_url || `${getConfig().LMS_BASE_URL}/dashboard`,\n success: data.success || false,\n };\n}\n\nexport async function getFieldsValidations(formPayload) {\n const requestConfig = {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n };\n\n const { data } = await getHttpClient()\n .post(\n `${getConfig().LMS_BASE_URL}/api/user/v1/validation/registration`,\n QueryString.stringify(formPayload),\n requestConfig,\n )\n .catch((e) => {\n throw (e);\n });\n\n return {\n fieldValidations: data,\n };\n}\n","import { call, put, takeEvery } from 'redux-saga/effects';\n\nimport { camelCaseObject } from '@edx/frontend-platform';\nimport { logError, logInfo } from '@edx/frontend-platform/logging';\n\n// Actions\nimport {\n REGISTER_NEW_USER,\n registerNewUserBegin,\n registerNewUserFailure,\n registerNewUserSuccess,\n REGISTER_FORM_VALIDATIONS,\n fetchRealtimeValidationsBegin,\n fetchRealtimeValidationsSuccess,\n fetchRealtimeValidationsFailure,\n} from './actions';\nimport { INTERNAL_SERVER_ERROR } from './constants';\n\n// Services\nimport { getFieldsValidations, registerRequest } from './service';\n\nexport function* handleNewUserRegistration(action) {\n try {\n yield put(registerNewUserBegin());\n\n const { redirectUrl, success } = yield call(registerRequest, action.payload.registrationInfo);\n yield put(registerNewUserSuccess(\n redirectUrl,\n success,\n ));\n } catch (e) {\n const statusCodes = [400, 403, 409];\n if (e.response && statusCodes.includes(e.response.status)) {\n yield put(registerNewUserFailure(camelCaseObject(e.response.data)));\n logInfo(e);\n } else {\n yield put(registerNewUserFailure({ errorCode: INTERNAL_SERVER_ERROR }));\n logError(e);\n }\n }\n}\n\nexport function* fetchRealtimeValidations(action) {\n try {\n yield put(fetchRealtimeValidationsBegin());\n const { fieldValidations } = yield call(getFieldsValidations, action.payload.formPayload);\n\n yield put(fetchRealtimeValidationsSuccess(camelCaseObject(fieldValidations)));\n } catch (e) {\n if (e.response && e.response.status === 403) {\n yield put(fetchRealtimeValidationsFailure());\n logInfo(e);\n } else {\n logError(e);\n }\n }\n}\nexport default function* saga() {\n yield takeEvery(REGISTER_NEW_USER.BASE, handleNewUserRegistration);\n yield takeEvery(REGISTER_FORM_VALIDATIONS.BASE, fetchRealtimeValidations);\n}\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Redirect } from 'react-router-dom';\n\nimport { sendPageEvent, sendTrackEvent } from '@edx/frontend-platform/analytics';\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport { getConfig } from '@edx/frontend-platform';\nimport { getAuthService } from '@edx/frontend-platform/auth';\nimport {\n Tabs,\n Tab,\n Icon,\n} from '@edx/paragon';\nimport { ChevronLeft } from '@edx/paragon/icons';\n\nimport messages from './messages';\nimport { LOGIN_PAGE, REGISTER_PAGE } from '../data/constants';\nimport { updatePathWithQueryParams, getTpaHint } from '../data/utils';\nimport { LoginPage } from '../login';\nimport { RegistrationPage } from '../register';\nimport BaseComponent from '../base-component';\n\nconst Logistration = (props) => {\n const { intl, selectedPage } = props;\n const tpa = getTpaHint();\n const [institutionLogin, setInstitutionLogin] = useState(false);\n const [key, setKey] = useState('');\n\n useEffect(() => {\n const authService = getAuthService();\n if (authService) {\n authService.getCsrfTokenService().getCsrfToken(getConfig().LMS_BASE_URL);\n }\n });\n\n const handleInstitutionLogin = (e) => {\n sendTrackEvent('edx.bi.institution_login_form.toggled', { category: 'user-engagement' });\n if (typeof e === 'string') {\n sendPageEvent('login_and_registration', e === '/login' ? 'login' : 'register');\n } else {\n sendPageEvent('login_and_registration', e.target.dataset.eventName);\n }\n\n setInstitutionLogin(!institutionLogin);\n };\n\n const handleOnSelect = (tabKey) => {\n sendTrackEvent(`edx.bi.${tabKey.replace('/', '')}_form.toggled`, { category: 'user-engagement' });\n setKey(tabKey);\n };\n\n const tabTitle = (\n
\n \n \n {selectedPage === LOGIN_PAGE\n ? intl.formatMessage(messages['logistration.sign.in'])\n : intl.formatMessage(messages['logistration.register'])}\n \n
\n );\n\n return (\n \n
\n {institutionLogin\n ? (\n \n \n \n )\n : (\n <>\n {!tpa && (\n \n \n \n \n )}\n \n )}\n { key && (\n \n )}\n
\n {selectedPage === LOGIN_PAGE\n ? \n : }\n
\n
\n
\n );\n};\n\nLogistration.propTypes = {\n intl: intlShape.isRequired,\n selectedPage: PropTypes.string,\n};\n\nLogistration.defaultProps = {\n selectedPage: REGISTER_PAGE,\n};\n\nexport default injectIntl(Logistration);\n","import { AsyncActionType } from '../../data/utils';\n\nexport const GET_FIELDS_DATA = new AsyncActionType('FIELD_DESCRIPTION', 'GET_FIELDS_DATA');\nexport const SAVE_USER_PROFILE = new AsyncActionType('USER_PROFILE', 'SAVE_USER_PROFILE');\n\n// save additional user information\nexport const saveUserProfile = (username, data) => ({\n type: SAVE_USER_PROFILE.BASE,\n payload: { username, data },\n});\n\nexport const saveUserProfileBegin = () => ({\n type: SAVE_USER_PROFILE.BEGIN,\n});\n\nexport const saveUserProfileSuccess = () => ({\n type: SAVE_USER_PROFILE.SUCCESS,\n});\n\nexport const saveUserProfileFailure = () => ({\n type: SAVE_USER_PROFILE.FAILURE,\n});\n\n// get field data from platform\nexport const getFieldData = () => ({\n type: GET_FIELDS_DATA.BASE,\n});\n\nexport const getFieldDataBegin = () => ({\n type: GET_FIELDS_DATA.BEGIN,\n});\n\nexport const getFieldDataSuccess = (data, extendedProfile) => ({\n type: GET_FIELDS_DATA.SUCCESS,\n payload: { data, extendedProfile },\n});\n\nexport const getFieldDataFailure = () => ({\n type: GET_FIELDS_DATA.FAILURE,\n});\n","export const storeName = 'welcomePage';\n\nexport const welcomePageSelector = state => ({ ...state[storeName] });\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n 'progressive.profiling.page.title': {\n id: 'progressive.profiling.page.title',\n defaultMessage: 'Optional Fields | {siteName}',\n description: 'progressive profiling page title',\n },\n 'progressive.profiling.page.heading': {\n id: 'progressive.profiling.page.heading',\n defaultMessage: 'A few questions for you will help us get smarter.',\n description: 'The page heading for the progressive profiling page.',\n },\n 'gender.options.label': {\n id: 'gender.options.label',\n defaultMessage: 'Gender (optional)',\n description: 'Placeholder for the gender options dropdown',\n },\n 'gender.options.f': {\n id: 'gender.options.f',\n defaultMessage: 'Female',\n description: 'The label for the female gender option.',\n },\n 'gender.options.m': {\n id: 'gender.options.m',\n defaultMessage: 'Male',\n description: 'The label for the male gender option.',\n },\n 'gender.options.o': {\n id: 'gender.options.o',\n defaultMessage: 'Other/Prefer not to say',\n description: 'The label for catch-all gender option.',\n },\n 'education.levels.label': {\n id: 'education.levels.label',\n defaultMessage: 'Highest level of education completed (optional)',\n description: 'Placeholder for the education levels dropdown.',\n },\n 'education.levels.p': {\n id: 'education.levels.p',\n defaultMessage: 'Doctorate',\n description: 'Selected by the user if their highest level of education is a doctorate degree.',\n },\n 'education.levels.m': {\n id: 'education.levels.m',\n defaultMessage: \"Master's or professional degree\",\n description: \"Selected by the user if their highest level of education is a master's or professional degree from a college or university.\",\n },\n 'education.levels.b': {\n id: 'education.levels.b',\n defaultMessage: \"Bachelor's degree\",\n description: \"Selected by the user if their highest level of education is a four year college or university bachelor's degree.\",\n },\n 'education.levels.a': {\n id: 'education.levels.a',\n defaultMessage: \"Associate's degree\",\n description: \"Selected by the user if their highest level of education is an associate's degree. 1-2 years of college or university.\",\n },\n 'education.levels.hs': {\n id: 'education.levels.hs',\n defaultMessage: 'Secondary/high school',\n description: 'Selected by the user if their highest level of education is secondary or high school. 9-12 years of education.',\n },\n 'education.levels.jhs': {\n id: 'education.levels.jhs',\n defaultMessage: 'Junior secondary/junior high/middle school',\n description: 'Selected by the user if their highest level of education is junior or middle school. 6-8 years of education.',\n },\n 'education.levels.el': {\n id: 'education.levels.el',\n defaultMessage: 'Elementary/primary school',\n description: 'Selected by the user if their highest level of education is elementary or primary school. 1-5 years of education.',\n },\n 'education.levels.none': {\n id: 'education.levels.none',\n defaultMessage: 'No formal education',\n description: 'Selected by the user to describe their education.',\n },\n 'education.levels.other': {\n id: 'education.levels.other',\n defaultMessage: 'Other education',\n description: 'Selected by the user if they have a type of education not described by the other choices.',\n },\n 'year.of.birth.label': {\n id: 'year.of.birth.label',\n defaultMessage: 'Year of birth (optional)',\n description: 'Placeholder for the year of birth options dropdown',\n },\n 'optional.fields.information.link': {\n id: 'optional.fields.information.link',\n defaultMessage: 'Learn more about how we use this information.',\n description: 'Optional fields page information link',\n },\n 'optional.fields.submit.button': {\n id: 'optional.fields.submit.button',\n defaultMessage: 'Submit',\n description: 'Submit button text',\n },\n 'optional.fields.skip.button': {\n id: 'optional.fields.skip.button',\n defaultMessage: 'Skip for now',\n description: 'Skip button text',\n },\n // modal dialog box\n 'continue.to.platform': {\n id: 'continue.to.platform',\n defaultMessage: 'Continue to {platformName}',\n description: 'Button text for modal when user chooses \"skip for now\" option',\n },\n 'modal.title': {\n id: 'modal.title',\n defaultMessage: 'Thanks for letting us know.',\n description: 'Heading for welcome page modal',\n },\n 'modal.description': {\n id: 'modal.description',\n defaultMessage: 'You can complete your profile in settings at any time if you change your mind.',\n description: 'Modal body text',\n },\n // error message\n 'welcome.page.error.heading': {\n id: 'welcome.page.error.heading',\n defaultMessage: 'We couldn\\'t update your profile',\n description: 'Error message heading',\n },\n 'welcome.page.error.message': {\n id: 'welcome.page.error.message',\n defaultMessage: 'An error occurred. You can complete your profile in settings at any time.',\n description: 'Error message body',\n },\n});\nexport default messages;\n","import React from 'react';\n\nimport PropTypes from 'prop-types';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport { ActionRow, Button, ModalDialog } from '@edx/paragon';\nimport messages from './messages';\n\nconst WelcomePageModal = (props) => {\n const { intl, isOpen, redirectUrl } = props;\n const platformName = getConfig().SITE_NAME;\n\n const handleSubmit = (e) => {\n e.preventDefault();\n window.location.href = redirectUrl;\n };\n\n return (\n {}}\n size=\"sm\"\n variant=\"default\"\n hasCloseButton={false}\n >\n \n \n {intl.formatMessage(messages['modal.title'])}\n \n \n\n \n {intl.formatMessage(messages['modal.description'])}\n \n\n \n \n \n \n \n \n );\n};\n\nWelcomePageModal.propTypes = {\n intl: intlShape.isRequired,\n isOpen: PropTypes.bool,\n redirectUrl: PropTypes.string.isRequired,\n};\n\nWelcomePageModal.defaultProps = {\n isOpen: false,\n};\n\nexport default injectIntl(WelcomePageModal);\n","import React, { useState, useEffect } from 'react';\n\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Helmet } from 'react-helmet';\n\nimport { getConfig, snakeCaseObject } from '@edx/frontend-platform';\nimport { sendPageEvent, sendTrackEvent } from '@edx/frontend-platform/analytics';\nimport {\n configure as configureAuth,\n AxiosJwtAuthService,\n ensureAuthenticatedUser,\n hydrateAuthenticatedUser,\n getAuthenticatedUser,\n} from '@edx/frontend-platform/auth';\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport { getLoggingService } from '@edx/frontend-platform/logging';\nimport {\n Alert,\n Form,\n StatefulButton,\n Hyperlink,\n Icon,\n} from '@edx/paragon';\nimport { ExpandMore, Error } from '@edx/paragon/icons';\n\nimport { saveUserProfile } from './data/actions';\nimport { welcomePageSelector } from './data/selectors';\nimport messages from './messages';\n\nimport { RedirectLogistration } from '../common-components';\nimport { DEFAULT_REDIRECT_URL, DEFAULT_STATE } from '../data/constants';\nimport { EDUCATION_LEVELS, GENDER_OPTIONS, YEAR_OF_BIRTH_OPTIONS } from '../register/data/constants';\nimport WelcomePageModal from './WelcomePageModal';\nimport BaseComponent from '../base-component';\n\nconst WelcomePage = (props) => {\n const { intl, submitState, showError } = props;\n\n const [ready, setReady] = useState(false);\n const [registrationResult, setRegistrationResult] = useState({ redirectUrl: '' });\n const [values, setValues] = useState({ levelOfEducation: '', yearOfBirth: '', gender: '' });\n const [openDialog, setOpenDialog] = useState(false);\n\n const DASHBOARD_URL = getConfig().LMS_BASE_URL.concat(DEFAULT_REDIRECT_URL);\n\n useEffect(() => {\n window.optimizely = window.optimizely || [];\n configureAuth(AxiosJwtAuthService, { loggingService: getLoggingService, config: getConfig() });\n ensureAuthenticatedUser(DASHBOARD_URL).then(() => {\n hydrateAuthenticatedUser().then(() => {\n setReady(true);\n });\n });\n\n if (props.location.state && props.location.state.registrationResult) {\n setRegistrationResult(props.location.state.registrationResult);\n sendPageEvent('login_and_registration', 'welcome');\n }\n }, []);\n\n if (!props.location.state || !props.location.state.registrationResult) {\n global.location.assign(DASHBOARD_URL);\n return null;\n }\n\n if (!ready) {\n return null;\n }\n\n if (getConfig().ENABLE_COPPA_COMPLIANCE && EDUCATION_LEVELS) {\n const index = EDUCATION_LEVELS.indexOf('el');\n EDUCATION_LEVELS.splice(index, 1);\n }\n\n const getOptions = (fieldName) => {\n const options = {\n yearOfBirth: YEAR_OF_BIRTH_OPTIONS.map(({ value, label }) => (\n \n )),\n levelOfEducation: EDUCATION_LEVELS.map(key => (\n \n )),\n gender: GENDER_OPTIONS.map(key => (\n \n )),\n };\n\n return options[fieldName];\n };\n\n const handleSubmit = (e) => {\n e.preventDefault();\n const payload = {};\n const authenticatedUser = getAuthenticatedUser();\n\n ['yearOfBirth', 'gender', 'levelOfEducation'].forEach(fieldName => {\n if (values[fieldName]) {\n payload[fieldName] = values[fieldName];\n }\n });\n\n props.saveUserProfile(authenticatedUser.username, snakeCaseObject(payload));\n\n sendTrackEvent(\n 'edx.bi.welcome.page.submit.clicked',\n {\n isGenderSelected: !!payload.gender,\n isYearOfBirthSelected: !!payload.yearOfBirth,\n isLevelOfEducationSelected: !!payload.levelOfEducation,\n },\n );\n\n window.optimizely.push({\n type: 'event',\n eventName: 'authn_welcome_page_submit_btn_clicked',\n });\n };\n\n const handleSkip = (e) => {\n e.preventDefault();\n setOpenDialog(true);\n sendTrackEvent('edx.bi.welcome.page.skip.link.clicked');\n\n window.optimizely.push({\n type: 'event',\n eventName: 'authn_welcome_page_skip_btn_clicked',\n });\n };\n\n const onChangeHandler = (e) => {\n setValues({ ...values, [e.target.name]: e.target.value });\n };\n\n return (\n <>\n \n \n {intl.formatMessage(messages['progressive.profiling.page.title'],\n { siteName: getConfig().SITE_NAME })}\n \n \n \n {props.shouldRedirect ? (\n \n ) : null}\n
\n
\n

{intl.formatMessage(messages['progressive.profiling.page.heading'])}

\n
\n
\n {showError ? (\n \n {intl.formatMessage(messages['welcome.page.error.heading'])}\n

{intl.formatMessage(messages['welcome.page.error.message'])}

\n
\n ) : null}\n
\n \n onChangeHandler(e)}\n trailingElement={}\n floatingLabel={intl.formatMessage(messages['education.levels.label'])}\n >\n {getOptions('levelOfEducation')}\n \n \n {(!getConfig().ENABLE_COPPA_COMPLIANCE)\n && (\n \n onChangeHandler(e)}\n trailingElement={}\n floatingLabel={intl.formatMessage(messages['year.of.birth.label'])}\n >\n \n {getOptions('yearOfBirth')}\n \n \n )}\n \n onChangeHandler(e)}\n trailingElement={}\n floatingLabel={intl.formatMessage(messages['gender.options.label'])}\n >\n {getOptions('gender')}\n \n \n \n (sendTrackEvent('edx.bi.welcome.page.support.link.clicked'))}\n >\n {intl.formatMessage(messages['optional.fields.information.link'])}\n \n \n
\n e.preventDefault()}\n />\n e.preventDefault()}\n />\n
\n
\n
\n
\n \n );\n};\n\nWelcomePage.propTypes = {\n intl: intlShape.isRequired,\n location: PropTypes.shape({\n state: PropTypes.object,\n }),\n saveUserProfile: PropTypes.func.isRequired,\n showError: PropTypes.bool,\n shouldRedirect: PropTypes.bool,\n submitState: PropTypes.string,\n};\n\nWelcomePage.defaultProps = {\n location: { state: {} },\n shouldRedirect: false,\n showError: false,\n submitState: DEFAULT_STATE,\n};\n\nconst mapStateToProps = state => ({\n shouldRedirect: welcomePageSelector(state).success,\n submitState: welcomePageSelector(state).submitState,\n showError: welcomePageSelector(state).showError,\n});\n\nexport default connect(\n mapStateToProps,\n {\n saveUserProfile,\n },\n)(injectIntl(WelcomePage));\n","import React, { useState, useEffect } from 'react';\n\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Helmet } from 'react-helmet';\n\nimport { getConfig, snakeCaseObject } from '@edx/frontend-platform';\nimport { sendPageEvent, sendTrackEvent } from '@edx/frontend-platform/analytics';\nimport {\n configure as configureAuth,\n AxiosJwtAuthService,\n ensureAuthenticatedUser,\n hydrateAuthenticatedUser,\n getAuthenticatedUser,\n} from '@edx/frontend-platform/auth';\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport { getLoggingService } from '@edx/frontend-platform/logging';\nimport {\n Alert,\n Form,\n StatefulButton,\n Hyperlink,\n Spinner,\n} from '@edx/paragon';\nimport { Error } from '@edx/paragon/icons';\n\nimport { getFieldData, saveUserProfile } from './data/actions';\nimport { welcomePageSelector } from './data/selectors';\nimport messages from './messages';\n\nimport { RedirectLogistration } from '../common-components';\nimport {\n DEFAULT_REDIRECT_URL, DEFAULT_STATE, FAILURE_STATE, COMPLETE_STATE,\n} from '../data/constants';\nimport FormFieldRenderer from '../field-renderer';\nimport WelcomePageModal from './WelcomePageModal';\nimport BaseComponent from '../base-component';\n\nconst ProgressiveProfiling = (props) => {\n const {\n extendedProfile, fieldDescriptions, formRenderState, intl, submitState, showError,\n } = props;\n\n const [ready, setReady] = useState(false);\n const [registrationResult, setRegistrationResult] = useState({ redirectUrl: '' });\n const [values, setValues] = useState({});\n const [openDialog, setOpenDialog] = useState(false);\n\n const DASHBOARD_URL = getConfig().LMS_BASE_URL.concat(DEFAULT_REDIRECT_URL);\n\n useEffect(() => {\n configureAuth(AxiosJwtAuthService, { loggingService: getLoggingService(), config: getConfig() });\n ensureAuthenticatedUser(DASHBOARD_URL).then(() => {\n hydrateAuthenticatedUser().then(() => {\n props.getFieldData();\n setReady(true);\n });\n });\n\n if (props.location.state && props.location.state.registrationResult) {\n setRegistrationResult(props.location.state.registrationResult);\n sendPageEvent('login_and_registration', 'welcome');\n }\n }, []);\n\n if (!props.location.state || !props.location.state.registrationResult || formRenderState === FAILURE_STATE) {\n global.location.assign(DASHBOARD_URL);\n return null;\n }\n\n if (!ready) {\n return null;\n }\n\n const handleSubmit = (e) => {\n e.preventDefault();\n const authenticatedUser = getAuthenticatedUser();\n const payload = { ...values, extendedProfile: [] };\n extendedProfile.forEach(fieldName => {\n if (values[fieldName]) {\n payload.extendedProfile.push({ fieldName, fieldValue: values[fieldName] });\n }\n delete payload[fieldName];\n });\n props.saveUserProfile(authenticatedUser.username, snakeCaseObject(payload));\n\n sendTrackEvent(\n 'edx.bi.welcome.page.submit.clicked',\n {\n isGenderSelected: !!values.gender,\n isYearOfBirthSelected: !!values.year_of_birth,\n isLevelOfEducationSelected: !!values.level_of_education,\n },\n );\n };\n\n const handleSkip = (e) => {\n e.preventDefault();\n setOpenDialog(true);\n sendTrackEvent('edx.bi.welcome.page.skip.link.clicked');\n };\n\n const onChangeHandler = (e) => {\n if (e.target.type === 'checkbox') {\n setValues({ ...values, [e.target.name]: e.target.checked });\n } else {\n setValues({ ...values, [e.target.name]: e.target.value });\n }\n };\n\n const formFields = Object.keys(fieldDescriptions).map((fieldName) => {\n const fieldData = fieldDescriptions[fieldName];\n return (\n \n \n \n );\n });\n\n if (formRenderState === COMPLETE_STATE) {\n return (\n <>\n \n \n {intl.formatMessage(messages['progressive.profiling.page.title'],\n { siteName: getConfig().SITE_NAME })}\n \n \n \n {props.shouldRedirect ? (\n \n ) : null}\n
\n
\n

{intl.formatMessage(messages['progressive.profiling.page.heading'])}

\n
\n
\n {showError ? (\n \n {intl.formatMessage(messages['welcome.page.error.heading'])}\n

{intl.formatMessage(messages['welcome.page.error.message'])}

\n
\n ) : null}\n
\n {formFields}\n \n (sendTrackEvent('edx.bi.welcome.page.support.link.clicked'))}\n >\n {intl.formatMessage(messages['optional.fields.information.link'])}\n \n \n
\n e.preventDefault()}\n />\n e.preventDefault()}\n />\n
\n
\n
\n
\n \n );\n }\n return ;\n};\n\nProgressiveProfiling.propTypes = {\n extendedProfile: PropTypes.arrayOf(PropTypes.string),\n fieldDescriptions: PropTypes.shape({}),\n formRenderState: PropTypes.string.isRequired,\n intl: intlShape.isRequired,\n location: PropTypes.shape({\n state: PropTypes.object,\n }),\n getFieldData: PropTypes.func.isRequired,\n saveUserProfile: PropTypes.func.isRequired,\n showError: PropTypes.bool,\n shouldRedirect: PropTypes.bool,\n submitState: PropTypes.string,\n};\n\nProgressiveProfiling.defaultProps = {\n extendedProfile: [],\n fieldDescriptions: {},\n location: { state: {} },\n shouldRedirect: false,\n showError: false,\n submitState: DEFAULT_STATE,\n};\n\nconst mapStateToProps = state => ({\n extendedProfile: welcomePageSelector(state).extendedProfile,\n fieldDescriptions: welcomePageSelector(state).fieldDescriptions,\n formRenderState: welcomePageSelector(state).formRenderState,\n shouldRedirect: welcomePageSelector(state).success,\n submitState: welcomePageSelector(state).submitState,\n showError: welcomePageSelector(state).showError,\n});\n\nexport default connect(\n mapStateToProps,\n {\n saveUserProfile,\n getFieldData,\n },\n)(injectIntl(ProgressiveProfiling));\n","import { GET_FIELDS_DATA, SAVE_USER_PROFILE } from './actions';\nimport {\n DEFAULT_STATE, PENDING_STATE, COMPLETE_STATE, FAILURE_STATE,\n} from '../../data/constants';\n\nexport const defaultState = {\n extendedProfile: [],\n fieldDescriptions: {},\n formRenderState: DEFAULT_STATE,\n success: false,\n submitState: DEFAULT_STATE,\n showError: false,\n};\n\nconst reducer = (state = defaultState, action) => {\n switch (action.type) {\n case GET_FIELDS_DATA.BEGIN:\n return {\n ...state,\n formRenderState: PENDING_STATE,\n };\n case GET_FIELDS_DATA.SUCCESS:\n return {\n ...state,\n extendedProfile: action.payload.extendedProfile,\n fieldDescriptions: action.payload.data,\n formRenderState: COMPLETE_STATE,\n };\n case GET_FIELDS_DATA.FAILURE:\n return {\n ...state,\n formRenderState: FAILURE_STATE,\n };\n case SAVE_USER_PROFILE.BEGIN:\n return {\n ...state,\n submitState: PENDING_STATE,\n };\n case SAVE_USER_PROFILE.SUCCESS:\n return {\n ...state,\n success: true,\n showError: false,\n };\n case SAVE_USER_PROFILE.FAILURE:\n return {\n ...state,\n submitState: DEFAULT_STATE,\n showError: true,\n };\n default:\n return state;\n }\n};\n\nexport default reducer;\n","import { getConfig } from '@edx/frontend-platform';\nimport { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';\n\nexport async function patchAccount(username, commitValues) {\n const requestConfig = {\n headers: { 'Content-Type': 'application/merge-patch+json' },\n };\n\n await getAuthenticatedHttpClient()\n .patch(\n `${getConfig().LMS_BASE_URL}/api/user/v1/accounts/${username}`,\n commitValues,\n requestConfig,\n )\n .catch((error) => {\n throw (error);\n });\n}\n\nexport async function getOptionalFieldData() {\n const requestConfig = {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n };\n\n const { data } = await getAuthenticatedHttpClient()\n .get(\n `${getConfig().LMS_BASE_URL}/api/optional_fields`,\n requestConfig,\n )\n .catch((e) => {\n throw (e);\n });\n\n return data;\n}\n","import { call, put, takeEvery } from 'redux-saga/effects';\n\nimport {\n GET_FIELDS_DATA,\n getFieldDataBegin,\n getFieldDataFailure,\n getFieldDataSuccess,\n SAVE_USER_PROFILE,\n saveUserProfileBegin,\n saveUserProfileFailure,\n saveUserProfileSuccess,\n} from './actions';\n\nimport { patchAccount, getOptionalFieldData } from './service';\n\nexport function* saveUserProfileInformation(action) {\n try {\n yield put(saveUserProfileBegin());\n yield call(patchAccount, action.payload.username, action.payload.data);\n\n yield put(saveUserProfileSuccess());\n } catch (e) {\n yield put(saveUserProfileFailure());\n }\n}\n\nexport function* getFieldData() {\n try {\n yield put(getFieldDataBegin());\n const data = yield call(getOptionalFieldData);\n yield put(getFieldDataSuccess(data.fields, data.extended_profile));\n } catch (e) {\n yield put(getFieldDataFailure());\n }\n}\n\nexport default function* saga() {\n yield takeEvery(SAVE_USER_PROFILE.BASE, saveUserProfileInformation);\n yield takeEvery(GET_FIELDS_DATA.BASE, getFieldData);\n}\n","import { combineReducers } from 'redux';\n\nimport {\n reducer as loginReducer,\n storeName as loginStoreName,\n} from '../login';\nimport {\n reducer as registerReducer,\n storeName as registerStoreName,\n} from '../register';\nimport {\n reducer as commonComponentsReducer,\n storeName as commonComponentsStoreName,\n} from '../common-components';\nimport {\n reducer as forgotPasswordReducer,\n storeName as forgotPasswordStoreName,\n} from '../forgot-password';\nimport {\n reducer as resetPasswordReducer,\n storeName as resetPasswordStoreName,\n} from '../reset-password';\n\nimport {\n reducer as welcomePageReducers,\n storeName as welcomePageStoreName,\n} from '../welcome';\n\nconst createRootReducer = () => combineReducers({\n [loginStoreName]: loginReducer,\n [registerStoreName]: registerReducer,\n [commonComponentsStoreName]: commonComponentsReducer,\n [forgotPasswordStoreName]: forgotPasswordReducer,\n [resetPasswordStoreName]: resetPasswordReducer,\n [welcomePageStoreName]: welcomePageReducers,\n});\nexport default createRootReducer;\n","import { all } from 'redux-saga/effects';\n\nimport { saga as registrationSaga } from '../register';\nimport { saga as loginSaga } from '../login';\nimport { saga as commonComponentsSaga } from '../common-components';\nimport { saga as forgotPasswordSaga } from '../forgot-password';\nimport { saga as resetPasswordSaga } from '../reset-password';\nimport { saga as welcomePageSaga } from '../welcome';\n\nexport default function* rootSaga() {\n yield all([\n loginSaga(),\n registrationSaga(),\n commonComponentsSaga(),\n forgotPasswordSaga(),\n resetPasswordSaga(),\n welcomePageSaga(),\n ]);\n}\n","import { getConfig } from '@edx/frontend-platform';\nimport { applyMiddleware, createStore, compose } from 'redux';\nimport thunkMiddleware from 'redux-thunk';\nimport { composeWithDevTools } from '@redux-devtools/extension';\nimport { createLogger } from 'redux-logger';\nimport createSagaMiddleware from 'redux-saga';\n\nimport createRootReducer from './reducers';\nimport rootSaga from './sagas';\n\nconst sagaMiddleware = createSagaMiddleware();\n\nfunction composeMiddleware() {\n if (getConfig().ENVIRONMENT === 'development') {\n const loggerMiddleware = createLogger({\n collapsed: true,\n });\n return composeWithDevTools(applyMiddleware(thunkMiddleware, sagaMiddleware, loggerMiddleware));\n }\n\n return compose(applyMiddleware(thunkMiddleware, sagaMiddleware));\n}\n\nexport default function configureStore(initialState = {}) {\n const store = createStore(\n createRootReducer(),\n initialState,\n composeMiddleware(),\n );\n sagaMiddleware.run(rootSaga);\n\n return store;\n}\n","import { library } from '@fortawesome/fontawesome-svg-core';\nimport {\n faApple, faFacebook, faGoogle, faMicrosoft,\n} from '@fortawesome/free-brands-svg-icons';\n\nexport default function registerIcons() {\n library.add(faApple, faFacebook, faGoogle, faMicrosoft);\n}\n","import React from 'react';\nimport { Redirect, Route, Switch } from 'react-router-dom';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { AppProvider } from '@edx/frontend-platform/react';\n\nimport {\n UnAuthOnlyRoute, registerIcons, NotFoundPage, Logistration,\n} from './common-components';\nimport {\n LOGIN_PAGE, PAGE_NOT_FOUND, REGISTER_PAGE, RESET_PAGE, PASSWORD_RESET_CONFIRM, WELCOME_PAGE,\n} from './data/constants';\nimport configureStore from './data/configureStore';\nimport { updatePathWithQueryParams } from './data/utils';\nimport ForgotPasswordPage from './forgot-password';\nimport ResetPasswordPage from './reset-password';\nimport WelcomePage, { ProgressiveProfiling } from './welcome';\nimport './index.scss';\n\nregisterIcons();\n\nconst MainApp = () => (\n \n \n \n \n \n } />\n \n \n \n \n \n \n \n \n \n \n);\n\nexport default MainApp;\n","import arMessages from './messages/ar.json';\nimport caMessages from './messages/ca.json';\n// no need to import en messages-- they are in the defaultMessage field\nimport es419Messages from './messages/es_419.json';\nimport frMessages from './messages/fr.json';\nimport zhcnMessages from './messages/zh_CN.json';\nimport ititMessages from './messages/it_IT.json';\nimport ptptMessages from './messages/pt_PT.json';\nimport dedeMessages from './messages/de_DE.json';\nimport hiMessages from './messages/hi.json';\nimport heMessages from './messages/he.json';\nimport idMessages from './messages/id.json';\nimport kokrMessages from './messages/ko_kr.json';\nimport plMessages from './messages/pl.json';\nimport ptbrMessages from './messages/pt_br.json';\nimport ruMessages from './messages/ru.json';\nimport thMessages from './messages/th.json';\nimport ukMessages from './messages/uk.json';\n\nconst messages = {\n ar: arMessages,\n es: es419Messages, // Prospectus uses es language code for spanish, added `es` option and pointed to es-419 strings.\n 'es-419': es419Messages,\n fr: frMessages,\n 'zh-cn': zhcnMessages,\n 'it-it': ititMessages,\n 'pt-pt': ptptMessages,\n 'de-de': dedeMessages,\n ca: caMessages,\n he: heMessages,\n id: idMessages,\n 'ko-kr': kokrMessages,\n pl: plMessages,\n 'pt-br': ptbrMessages,\n ru: ruMessages,\n th: thMessages,\n uk: ukMessages,\n hi: hiMessages,\n};\n\nexport default messages;\n","import 'core-js/stable';\nimport 'regenerator-runtime/runtime';\n\nimport {\n APP_INIT_ERROR, APP_READY, subscribe, initialize, mergeConfig,\n} from '@edx/frontend-platform';\nimport { ErrorPage } from '@edx/frontend-platform/react';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport MainApp from './MainApp';\nimport messages from './i18n';\n\nsubscribe(APP_READY, () => {\n ReactDOM.render(\n ,\n document.getElementById('root'),\n );\n});\n\nsubscribe(APP_INIT_ERROR, (error) => {\n ReactDOM.render(, document.getElementById('root'));\n});\n\ninitialize({\n handlers: {\n config: () => {\n mergeConfig({\n LOGIN_ISSUE_SUPPORT_LINK: process.env.LOGIN_ISSUE_SUPPORT_LINK || null,\n ACTIVATION_EMAIL_SUPPORT_LINK: process.env.ACTIVATION_EMAIL_SUPPORT_LINK || null,\n PASSWORD_RESET_SUPPORT_LINK: process.env.PASSWORD_RESET_SUPPORT_LINK || null,\n TOS_AND_HONOR_CODE: process.env.TOS_AND_HONOR_CODE || null,\n PRIVACY_POLICY: process.env.PRIVACY_POLICY || null,\n USER_SURVEY_COOKIE_NAME: process.env.USER_SURVEY_COOKIE_NAME || null,\n COOKIE_DOMAIN: process.env.COOKIE_DOMAIN,\n WELCOME_PAGE_SUPPORT_LINK: process.env.WELCOME_PAGE_SUPPORT_LINK || null,\n DISABLE_ENTERPRISE_LOGIN: process.env.DISABLE_ENTERPRISE_LOGIN || '',\n INFO_EMAIL: process.env.INFO_EMAIL || '',\n REGISTER_CONVERSION_COOKIE_NAME: process.env.REGISTER_CONVERSION_COOKIE_NAME || null,\n ENABLE_PROGRESSIVE_PROFILING: process.env.ENABLE_PROGRESSIVE_PROFILING || false,\n MARKETING_EMAILS_OPT_IN: process.env.MARKETING_EMAILS_OPT_IN || '',\n ENABLE_COPPA_COMPLIANCE: process.env.ENABLE_COPPA_COMPLIANCE || '',\n SHOW_DYNAMIC_PROFILING_PAGE: process.env.SHOW_DYNAMIC_PROFILING_PAGE || false,\n ENABLE_DYNAMIC_REGISTRATION_FIELDS: process.env.ENABLE_DYNAMIC_REGISTRATION_FIELDS || false,\n });\n },\n },\n messages: [\n messages,\n ],\n});\n"],"names":["LOGIN_PAGE","REGISTER_PAGE","RESET_PAGE","DEFAULT_REDIRECT_URL","PAGE_NOT_FOUND","SUPPORTED_ICON_CLASSES","INTERNAL_SERVER_ERROR","DEFAULT_STATE","PENDING_STATE","COMPLETE_STATE","FAILURE_STATE","VALID_EMAIL_REGEX","LETTER_REGEX","NUMBER_REGEX","VALID_NAME_REGEX","AUTH_PARAMS","getTpaProvider","tpaHintProvider","primaryProviders","secondaryProviders","tpaProvider","skipHintedLogin","forEach","provider","id","getTpaHint","params","QueryString","window","location","search","tpaHint","tpa_hint","next","index","indexOf","substring","length","updatePathWithQueryParams","path","queryParams","replace","getAllPossibleQueryParam","urlParams","Object","entries","key","value","windowScrollTo","options","document","documentElement","style","scrollTo","top","left","AsyncActionType","topic","name","this","setCookie","cookieName","cookieValue","cookieExpiry","cookies","Cookies","domain","getConfig","COOKIE_DOMAIN","expires","set","setSurveyCookie","surveyType","USER_SURVEY_COOKIE_NAME","signupTimestamp","Date","getTime","RedirectLogistration","props","finishAuthUrl","redirectUrl","redirectToWelcomePage","finalRedirectUrl","success","includes","LMS_BASE_URL","href","defaultProps","propTypes","PropTypes","useState","authUser","setAuthUser","isReady","setIsReady","useEffect","fetchAuthenticatedUser","forceRefresh","getAuthenticatedUser","then","authenticatedUser","username","global","concat","NotFoundPage","className","defaultMessage","description","defineMessages","SocialAuthProviders","intl","referrer","handleSubmit","e","preventDefault","url","currentTarget","dataset","providerUrl","socialAuth","socialAuthProviders","map","type","loginUrl","registerUrl","onClick","iconImage","Image","src","alt","icon","iconClass","faSignInAlt","formatMessage","messages","providerName","intlShape","injectIntl","ThirdPartyAuthAlert","message","currentProvider","platformName","SITE_NAME","Alert","RenderInstitutionButton","onSubmitHandler","buttonTitle","Button","variant","Icon","Institution","InstitutionLogistration","lmsBaseUrl","headingTitle","Hyperlink","destination","LogistrationDefaultProps","LogistrationProps","THIRD_PARTY_AUTH_CONTEXT","getThirdPartyAuthContext","BASE","payload","getThirdPartyAuthContextSuccess","fieldDescriptions","thirdPartyAuthContext","SUCCESS","defaultState","extendedProfile","thirdPartyAuthApiStatus","state","action","BEGIN","fields","FAILURE","requestConfig","headers","isPublic","getAuthenticatedHttpClient","get","catch","data","registration_fields","camelCaseObject","convertKeyNames","context_data","fullname","fetchThirdPartyAuthContext","saga","put","call","logError","takeEvery","storeName","commonComponentsSelector","thirdPartyAuthContextSelector","createSelector","commonComponents","fieldDescriptionSelector","extendedProfileSelector","FormGroup","hasFocus","setHasFocus","Form","controlId","isInvalid","errorMessage","as","readOnly","autoComplete","onFocus","handleFocus","onBlur","handleBlur","handleClick","onChange","handleChange","controlClassName","borderClass","trailingElement","floatingLabel","TransitionReplace","helpText","toString","hasIcon","children","PasswordField","useToggle","isPasswordHidden","setHiddenTrue","setHiddenFalse","showTooltip","setShowTooltip","showRequirements","setTimeout","HideButton","IconButton","VisibilityOff","iconAs","size","ShowButton","Visibility","placement","innerWidth","tooltip","Tooltip","test","Check","Remove","Overlay","O","overlay","show","INVALID_FORM","FORBIDDEN_REQUEST","ACCOUNT_ACTIVATION_MESSAGE","AccountActivationMessage","activationMessage","heading","messageType","activationOrVerification","MARKETING_EMAILS_OPT_IN","iconMapping","CheckCircle","Error","supportLink","ACTIVATION_EMAIL_SUPPORT_LINK","values","LOGIN_REQUEST","loginRequestSuccess","loginRequestFailure","loginError","loginSelector","loginRequestSelector","login","loginResult","loginErrorSelector","breakpoint","isMobileWindow","setIsMobileWindow","checkForMobile","matchMedia","breakpoints","matches","addEventListener","removeEventListener","ChangePasswordPrompt","isMobileView","useMobileResponsive","redirectToResetPasswordPage","setRedirectToResetPasswordPage","handlers","handleToggleOff","isOpen","close","to","ModalDialog","title","onClose","hasCloseButton","ActionRow","classNames","LoginFailureMessage","errorList","link","context","errorCode","authService","getAuthService","resetLink","isInline","lineBreak","email","remainingAttempts","failureCount","getCsrfTokenService","clearCsrfTokenCache","trim","split","error","Array","prototype","slice","arguments","processLink","beforeLink","linkText","afterLink","EnterpriseSSO","FORGOT_PASSWORD","forgotPasswordResultSelector","forgotPassword","TOKEN_STATE","FORM_SUBMISSION_ERROR","PASSWORD_RESET_ERROR","PASSWORD_VALIDATION_ERROR","PASSWORD_RESET","ForgotPasswordAlert","emailError","status","supportUrl","PASSWORD_RESET_SUPPORT_LINK","open","SideDiscountBanner","discountText","certificateMsg","LargeLeftLayout","isRegistrationPage","experimentName","showToast","setToastShow","ClipboardJS","Toast","x1","y1","x2","y2","faCut","LargeLayout","MARKETING_SITE_BASE_URL","LOGO_WHITE_URL","width","height","preserveAspectRatio","transform","x","y","MediumLayout","SmallLayout","AuthExtraLargeLayout","Row","Col","xs","h3","h2","siteName","AuthMediumLayout","AuthSmallLayout","DiscountExperimentBanner","setShow","PageBanner","dismissible","onDismiss","discount","BaseComponent","showWelcomeBanner","optimizelyExperimentName","setOptimizelyExperimentName","languageCode","getLocale","minWidth","maxWidth","authenticated","ForgotPasswordPage","submitState","regex","RegExp","validationError","setValidationError","setKey","LOGIN_ISSUE_SUPPORT_LINK","sendPageEvent","sendTrackEvent","category","getValidationMessage","tabTitle","ChevronLeft","Tabs","activeKey","onSelect","k","Tab","eventKey","initialValues","validateOnChange","validate","validationMessage","behavior","onSubmit","errors","setFieldValue","Helmet","target","StatefulButton","labels","default","pending","onMouseDown","INFO_EMAIL","connect","RESET_PASSWORD","VALIDATE_TOKEN","PASSWORD_RESET_FAILURE","passwordResetFailure","resetPasswordSuccess","resetPasswordFailure","errorMsg","FORBIDDEN","post","formurlencoded","handleForgotPassword","response","logInfo","ResetPasswordSuccess","LoginPage","setState","isSubmitted","emailOrUsername","password","emailValidationError","validateEmail","passwordValidationError","validatePassword","email_or_username","loginRequest","loginRequestReset","providers","isInstitutionAuthActive","isSocialAuthActive","isEnterpriseLoginDisabled","DISABLE_ENTERPRISE_LOGIN","getEnterPriseLoginURL","count","handleInstitutionLogin","activationMsgType","account_activation_status","institutionLogin","optimizely","push","eventName","LoginFailure","resetPassword","renderThirdPartyAuth","handleOnFocus","handleForgotPasswordLinkClickEvent","renderForm","React","creds","RESET","resetPasswordResultSelector","validateToken","token","getHttpClient","URL","is_account_recovery","searchParams","append","validation_decisions","ResetPasswordFailure","ResetPasswordPage","newPassword","setNewPassword","confirmPassword","setConfirmPassword","formErrors","setFormErrors","setErrorCode","validatePasswordFromBackend","reset_password_page","validateInput","some","event","relatedTarget","isPasswordValid","isPasswordConfirmed","formPayload","new_password1","new_password2","getQueryParameters","match","Spinner","animation","handleValidateToken","handleResetPassword","isValid","is_valid","tokenStatus","resetStatus","reset_status","resetErrors","err_msg","redirect_url","handleLoginRequest","statusCodes","FormFieldRenderer","formField","fieldData","onChangeHandler","isRequired","handleOnBlur","Boolean","ExpandMore","label","option","checked","REGISTER_NEW_USER","REGISTER_FORM_VALIDATIONS","REGISTRATION_FORM","REGISTER_CLEAR_USERNAME_SUGGESTIONS","registerNewUserSuccess","registerNewUserFailure","FIELDS","YEAR_OF_BIRTH_OPTIONS","currentYear","getFullYear","years","startYear","reverse","EDUCATION_LEVELS","GENDER_OPTIONS","FORM_FIELDS","COMMON_EMAIL_PROVIDERS","DEFAULT_SERVICE_PROVIDER_DOMAINS","DEFAULT_TOP_LEVEL_DOMAINS","registerSelector","registrationRequestSelector","register","registrationResult","registrationErrorSelector","registrationError","validationsSelector","validations","validationDecisions","keys","field","userMessage","usernameSuggestionsSelector","usernameSuggestions","RegistrationFailureMessage","UsernameField","suggestedUsernameDiv","iconButton","suggestedUsernames","handleSuggestionClick","Close","handleUsernameSuggestionClose","string","HonorCode","fieldType","tosAndHonorCode","TOS_AND_HONOR_CODE","privacyPolicy","PRIVACY_POLICY","CountryDropdown","dropDownItems","getItems","expandLessButton","expandMoreButton","findstr","filteredItems","setDisplayValue","msg","displayValue","showFieldError","bind","nextProps","opt","find","o","valueKey","displayValueKey","strToFind","filter","toLowerCase","handleItemClick","normalized","setValue","handleExpandMore","ExpandLess","handleExpandLess","handleOnChange","onClickOutside","getLevenshteinSuggestion","word","knownWords","similarityThreshold","minEditDistance","mostSimilar","i","editDistance","distance","TermsOfService","termsOfService","TOS_LINK","RegistrationPage","startTime","totalRegistrationTime","now","dynamicFieldErrorMessages","is_authn_mfe","social_auth_provider","showDynamicRegistrationFields","fieldName","fieldValue","error_message","country","honor_code","isFormValid","marketing_emails_opt_in","marketingOptIn","snakeCaseObject","registerNewUser","prevState","form_field_key","clearUsernameSuggestions","suggestion","emailErrorSuggestion","emailWarningSuggestion","signUpWithEmailVisible","handleOnClose","ENABLE_DYNAMIC_REGISTRATION_FIELDS","registerRenameExpVariation","pageName","isActive","save_for_later","resetRegistrationForm","getExperiments","registrationErrorCode","suggestedTldMessage","suggestedTopLevelDomain","suggestedSldMessage","suggestedServiceLevelDomain","pipelineUserDetails","countryCode","dynamicFieldError","statusCode","emailRegex","urlRegex","domainName","hasMultipleSubdomains","serviceLevelDomain","topLevelDomain","tldSuggestion","serviceSuggestion","fetchRealtimeValidations","defaultDomains","getSuggestionForInvalidEmail","tabIndex","formFields","renderEmailFeedback","getCountryList","REGISTER_CONVERSION_COOKIE_NAME","tags","honorCode","validateDynamicFields","ENABLE_PROGRESSIVE_PROFILING","RegistrationFailure","renderSignUpForm","handleSignUpEmailClick","firstName","lastName","registrationInfo","formData","formRenderState","registerRequest","registrationInformation","getFieldsValidations","fieldValidations","handleNewUserRegistration","Logistration","selectedPage","tpa","setInstitutionLogin","getCsrfToken","defaultActiveKey","tabKey","GET_FIELDS_DATA","SAVE_USER_PROFILE","saveUserProfile","getFieldDataSuccess","welcomePageSelector","WelcomePageModal","WelcomePage","showError","ready","setReady","setRegistrationResult","levelOfEducation","yearOfBirth","gender","setValues","openDialog","setOpenDialog","DASHBOARD_URL","configureAuth","AxiosJwtAuthService","loggingService","getLoggingService","config","ensureAuthenticatedUser","hydrateAuthenticatedUser","assign","ENABLE_COPPA_COMPLIANCE","splice","getOptions","shouldRedirect","WELCOME_PAGE_SUPPORT_LINK","showLaunchIcon","isGenderSelected","isYearOfBirthSelected","isLevelOfEducationSelected","ProgressiveProfiling","getFieldData","year_of_birth","level_of_education","patchAccount","commitValues","patch","getOptionalFieldData","saveUserProfileInformation","extended_profile","combineReducers","loginReducer","registerReducer","commonComponentsStoreName","commonComponentsReducer","forgotPasswordReducer","resetPasswordReducer","welcomePageReducers","rootSaga","all","loginSaga","registrationSaga","commonComponentsSaga","forgotPasswordSaga","resetPasswordSaga","welcomePageSaga","sagaMiddleware","createSagaMiddleware","composeMiddleware","ENVIRONMENT","loggerMiddleware","createLogger","collapsed","composeWithDevTools","applyMiddleware","thunkMiddleware","compose","configureStore","initialState","store","createStore","createRootReducer","run","library","faApple","faFacebook","faGoogle","faMicrosoft","AppProvider","exact","render","component","SHOW_DYNAMIC_PROFILING_PAGE","ar","arMessages","es","es419Messages","fr","frMessages","zhcnMessages","ititMessages","ptptMessages","dedeMessages","ca","he","pl","ru","th","uk","hi","hiMessages","subscribe","APP_READY","ReactDOM","getElementById","APP_INIT_ERROR","ErrorPage","initialize","mergeConfig","process"],"sourceRoot":""}