@openedx/frontend-app-authn 1.0.0-alpha.6 → 1.0.0-alpha.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Main.js +1 -3
- package/dist/Main.js.map +1 -1
- package/dist/app.js +0 -2
- package/dist/app.js.map +1 -1
- package/dist/common-components/EmbeddedRegistrationRoute.js +2 -2
- package/dist/common-components/EmbeddedRegistrationRoute.js.map +1 -1
- package/dist/common-components/EnterpriseSSO.js +6 -3
- package/dist/common-components/EnterpriseSSO.js.map +1 -1
- package/dist/common-components/PasswordField.d.ts +17 -9
- package/dist/common-components/PasswordField.js +10 -6
- package/dist/common-components/PasswordField.js.map +1 -1
- package/dist/common-components/RedirectLogistration.js +7 -3
- package/dist/common-components/RedirectLogistration.js.map +1 -1
- package/dist/common-components/SocialAuthProviders.d.ts +2 -2
- package/dist/common-components/SocialAuthProviders.js +5 -4
- package/dist/common-components/SocialAuthProviders.js.map +1 -1
- package/dist/common-components/ThirdPartyAuth.js +3 -2
- package/dist/common-components/ThirdPartyAuth.js.map +1 -1
- package/dist/common-components/ThirdPartyAuthAlert.d.ts +2 -2
- package/dist/common-components/ThirdPartyAuthAlert.js +4 -4
- package/dist/common-components/ThirdPartyAuthAlert.js.map +1 -1
- package/dist/common-components/UnAuthOnlyRoute.js +5 -4
- package/dist/common-components/UnAuthOnlyRoute.js.map +1 -1
- package/dist/common-components/components/ThirdPartyAuthContext.d.ts +31 -0
- package/dist/common-components/components/ThirdPartyAuthContext.js +84 -0
- package/dist/common-components/components/ThirdPartyAuthContext.js.map +1 -0
- package/dist/common-components/data/api.d.ts +6 -0
- package/dist/common-components/data/api.js +26 -0
- package/dist/common-components/data/api.js.map +1 -0
- package/dist/common-components/data/apiHook.d.ts +9 -0
- package/dist/common-components/data/apiHook.js +14 -0
- package/dist/common-components/data/apiHook.js.map +1 -0
- package/dist/common-components/data/queryKeys.d.ts +4 -0
- package/dist/common-components/data/queryKeys.js +6 -0
- package/dist/common-components/data/queryKeys.js.map +1 -0
- package/dist/common-components/index.d.ts +0 -3
- package/dist/common-components/index.js +0 -3
- package/dist/common-components/index.js.map +1 -1
- package/dist/constants.d.ts +13 -0
- package/dist/constants.js +15 -0
- package/dist/constants.js.map +1 -1
- package/dist/data/constants.d.ts +0 -8
- package/dist/data/constants.js +0 -9
- package/dist/data/constants.js.map +1 -1
- package/dist/data/utils/dataUtils.d.ts +1 -0
- package/dist/data/utils/dataUtils.js +14 -0
- package/dist/data/utils/dataUtils.js.map +1 -1
- package/dist/data/utils/index.d.ts +1 -2
- package/dist/data/utils/index.js +1 -2
- package/dist/data/utils/index.js.map +1 -1
- package/dist/forgot-password/ForgotPasswordPage.d.ts +2 -36
- package/dist/forgot-password/ForgotPasswordPage.js +45 -44
- package/dist/forgot-password/ForgotPasswordPage.js.map +1 -1
- package/dist/forgot-password/data/api.d.ts +2 -0
- package/dist/forgot-password/data/{service.js → api.js} +13 -14
- package/dist/forgot-password/data/api.js.map +1 -0
- package/dist/forgot-password/data/apiHook.d.ts +16 -0
- package/dist/forgot-password/data/apiHook.js +26 -0
- package/dist/forgot-password/data/apiHook.js.map +1 -0
- package/dist/forgot-password/index.d.ts +0 -4
- package/dist/forgot-password/index.js +0 -4
- package/dist/forgot-password/index.js.map +1 -1
- package/dist/forgot-password/messages.js +1 -1
- package/dist/forgot-password/messages.js.map +1 -1
- package/dist/i18n/index.d.ts +1 -25
- package/dist/i18n/index.js +1 -25
- package/dist/i18n/index.js.map +1 -1
- package/dist/login/ChangePasswordPrompt.js +11 -5
- package/dist/login/ChangePasswordPrompt.js.map +1 -1
- package/dist/login/LoginPage.d.ts +12 -10
- package/dist/login/LoginPage.js +85 -127
- package/dist/login/LoginPage.js.map +1 -1
- package/dist/login/components/LoginContext.d.ts +21 -0
- package/dist/login/components/LoginContext.js +28 -0
- package/dist/login/components/LoginContext.js.map +1 -0
- package/dist/login/data/api.d.ts +2 -0
- package/dist/login/data/api.js +27 -0
- package/dist/login/data/api.js.map +1 -0
- package/dist/login/data/apiHook.d.ts +13 -0
- package/dist/login/data/apiHook.js +57 -0
- package/dist/login/data/apiHook.js.map +1 -0
- package/dist/login/index.d.ts +0 -3
- package/dist/login/index.js +0 -3
- package/dist/login/index.js.map +1 -1
- package/dist/logistration/Logistration.d.ts +5 -32
- package/dist/logistration/Logistration.js +28 -54
- package/dist/logistration/Logistration.js.map +1 -1
- package/dist/progressive-profiling/ProgressiveProfiling.d.ts +2 -46
- package/dist/progressive-profiling/ProgressiveProfiling.js +47 -71
- package/dist/progressive-profiling/ProgressiveProfiling.js.map +1 -1
- package/dist/progressive-profiling/ProgressiveProfilingPageModal.js +8 -1
- package/dist/progressive-profiling/ProgressiveProfilingPageModal.js.map +1 -1
- package/dist/progressive-profiling/components/ProgressiveProfilingContext.d.ts +18 -0
- package/dist/progressive-profiling/components/ProgressiveProfilingContext.js +52 -0
- package/dist/progressive-profiling/components/ProgressiveProfilingContext.js.map +1 -0
- package/dist/progressive-profiling/data/api.d.ts +2 -0
- package/dist/progressive-profiling/data/{service.js → api.js} +11 -12
- package/dist/progressive-profiling/data/api.js.map +1 -0
- package/dist/progressive-profiling/data/apiHook.d.ts +10 -0
- package/dist/progressive-profiling/data/apiHook.js +36 -0
- package/dist/progressive-profiling/data/apiHook.js.map +1 -0
- package/dist/progressive-profiling/index.d.ts +0 -2
- package/dist/progressive-profiling/index.js +0 -2
- package/dist/progressive-profiling/index.js.map +1 -1
- package/dist/register/RegistrationFields/CountryField/CountryField.d.ts +1 -1
- package/dist/register/RegistrationFields/CountryField/CountryField.js +5 -7
- package/dist/register/RegistrationFields/CountryField/CountryField.js.map +1 -1
- package/dist/register/RegistrationFields/EmailField/EmailField.js +17 -9
- package/dist/register/RegistrationFields/EmailField/EmailField.js.map +1 -1
- package/dist/register/RegistrationFields/NameField/NameField.js +14 -7
- package/dist/register/RegistrationFields/NameField/NameField.js.map +1 -1
- package/dist/register/RegistrationFields/NameField/validator.d.ts +1 -0
- package/dist/register/RegistrationFields/NameField/validator.js +4 -0
- package/dist/register/RegistrationFields/NameField/validator.js.map +1 -1
- package/dist/register/RegistrationFields/UsernameField/UsernameField.js +20 -14
- package/dist/register/RegistrationFields/UsernameField/UsernameField.js.map +1 -1
- package/dist/register/RegistrationPage.d.ts +1 -1
- package/dist/register/RegistrationPage.js +102 -59
- package/dist/register/RegistrationPage.js.map +1 -1
- package/dist/register/components/RegisterContext.d.ts +8 -0
- package/dist/register/components/RegisterContext.js +167 -0
- package/dist/register/components/RegisterContext.js.map +1 -0
- package/dist/register/components/RegistrationFailure.js +4 -1
- package/dist/register/components/RegistrationFailure.js.map +1 -1
- package/dist/register/data/api.d.ts +9 -0
- package/dist/register/data/api.js +45 -0
- package/dist/register/data/api.js.map +1 -0
- package/dist/register/data/apiHook.d.ts +33 -0
- package/dist/register/data/apiHook.js +66 -0
- package/dist/register/data/apiHook.js.map +1 -0
- package/dist/register/data/constants.d.ts +1 -0
- package/dist/register/data/constants.js +1 -0
- package/dist/register/data/constants.js.map +1 -1
- package/dist/register/index.d.ts +0 -2
- package/dist/register/index.js +0 -3
- package/dist/register/index.js.map +1 -1
- package/dist/register/messages.d.ts +10 -0
- package/dist/register/messages.js +10 -0
- package/dist/register/messages.js.map +1 -1
- package/dist/register/types.d.ts +74 -0
- package/dist/register/types.js +2 -0
- package/dist/register/types.js.map +1 -0
- package/dist/reset-password/ResetPasswordPage.d.ts +2 -32
- package/dist/reset-password/ResetPasswordPage.js +90 -58
- package/dist/reset-password/ResetPasswordPage.js.map +1 -1
- package/dist/reset-password/data/api.d.ts +4 -0
- package/dist/reset-password/data/api.js +57 -0
- package/dist/reset-password/data/api.js.map +1 -0
- package/dist/reset-password/data/apiHook.d.ts +31 -0
- package/dist/reset-password/data/apiHook.js +74 -0
- package/dist/reset-password/data/apiHook.js.map +1 -0
- package/dist/reset-password/index.d.ts +0 -4
- package/dist/reset-password/index.js +0 -4
- package/dist/reset-password/index.js.map +1 -1
- package/dist/routes.d.ts +1 -0
- package/dist/routes.js +15 -14
- package/dist/routes.js.map +1 -1
- package/dist/sass/_registration.scss +8 -10
- package/dist/slots/LoginComponentSlot/index.d.ts +12 -0
- package/dist/slots/LoginComponentSlot/index.js +11 -0
- package/dist/slots/LoginComponentSlot/index.js.map +1 -0
- package/package.json +25 -14
- package/dist/common-components/data/actions.d.ts +0 -26
- package/dist/common-components/data/actions.js +0 -22
- package/dist/common-components/data/actions.js.map +0 -1
- package/dist/common-components/data/reducers.d.ts +0 -62
- package/dist/common-components/data/reducers.js +0 -39
- package/dist/common-components/data/reducers.js.map +0 -1
- package/dist/common-components/data/sagas.d.ts +0 -12
- package/dist/common-components/data/sagas.js +0 -21
- package/dist/common-components/data/sagas.js.map +0 -1
- package/dist/common-components/data/selectors.d.ts +0 -98
- package/dist/common-components/data/selectors.js +0 -11
- package/dist/common-components/data/selectors.js.map +0 -1
- package/dist/common-components/data/service.d.ts +0 -5
- package/dist/common-components/data/service.js +0 -31
- package/dist/common-components/data/service.js.map +0 -1
- package/dist/data/configureStore.d.ts +0 -3
- package/dist/data/configureStore.js +0 -24
- package/dist/data/configureStore.js.map +0 -1
- package/dist/data/reducers.d.ts +0 -254
- package/dist/data/reducers.js +0 -17
- package/dist/data/reducers.js.map +0 -1
- package/dist/data/sagas.d.ts +0 -1
- package/dist/data/sagas.js +0 -18
- package/dist/data/sagas.js.map +0 -1
- package/dist/data/utils/reduxUtils.d.ts +0 -15
- package/dist/data/utils/reduxUtils.js +0 -29
- package/dist/data/utils/reduxUtils.js.map +0 -1
- package/dist/forgot-password/data/actions.d.ts +0 -30
- package/dist/forgot-password/data/actions.js +0 -26
- package/dist/forgot-password/data/actions.js.map +0 -1
- package/dist/forgot-password/data/reducers.d.ts +0 -13
- package/dist/forgot-password/data/reducers.js +0 -46
- package/dist/forgot-password/data/reducers.js.map +0 -1
- package/dist/forgot-password/data/sagas.d.ts +0 -4
- package/dist/forgot-password/data/sagas.js +0 -28
- package/dist/forgot-password/data/sagas.js.map +0 -1
- package/dist/forgot-password/data/selectors.d.ts +0 -23
- package/dist/forgot-password/data/selectors.js +0 -5
- package/dist/forgot-password/data/selectors.js.map +0 -1
- package/dist/forgot-password/data/service.d.ts +0 -1
- package/dist/forgot-password/data/service.js.map +0 -1
- package/dist/login/data/actions.d.ts +0 -36
- package/dist/login/data/actions.js +0 -32
- package/dist/login/data/actions.js.map +0 -1
- package/dist/login/data/reducers.d.ts +0 -82
- package/dist/login/data/reducers.js +0 -44
- package/dist/login/data/reducers.js.map +0 -1
- package/dist/login/data/sagas.d.ts +0 -10
- package/dist/login/data/sagas.js +0 -34
- package/dist/login/data/sagas.js.map +0 -1
- package/dist/login/data/service.d.ts +0 -4
- package/dist/login/data/service.js +0 -32
- package/dist/login/data/service.js.map +0 -1
- package/dist/progressive-profiling/data/actions.d.ts +0 -19
- package/dist/progressive-profiling/data/actions.js +0 -18
- package/dist/progressive-profiling/data/actions.js.map +0 -1
- package/dist/progressive-profiling/data/reducers.d.ts +0 -22
- package/dist/progressive-profiling/data/reducers.js +0 -23
- package/dist/progressive-profiling/data/reducers.js.map +0 -1
- package/dist/progressive-profiling/data/sagas.d.ts +0 -4
- package/dist/progressive-profiling/data/sagas.js +0 -17
- package/dist/progressive-profiling/data/sagas.js.map +0 -1
- package/dist/progressive-profiling/data/selectors.d.ts +0 -39
- package/dist/progressive-profiling/data/selectors.js +0 -9
- package/dist/progressive-profiling/data/selectors.js.map +0 -1
- package/dist/progressive-profiling/data/service.d.ts +0 -1
- package/dist/progressive-profiling/data/service.js.map +0 -1
- package/dist/register/data/actions.d.ts +0 -80
- package/dist/register/data/actions.js +0 -69
- package/dist/register/data/actions.js.map +0 -1
- package/dist/register/data/reducers.d.ts +0 -237
- package/dist/register/data/reducers.js +0 -86
- package/dist/register/data/reducers.js.map +0 -1
- package/dist/register/data/sagas.d.ts +0 -19
- package/dist/register/data/sagas.js +0 -45
- package/dist/register/data/sagas.js.map +0 -1
- package/dist/register/data/selectors.d.ts +0 -26
- package/dist/register/data/selectors.js +0 -25
- package/dist/register/data/selectors.js.map +0 -1
- package/dist/register/data/service.d.ts +0 -8
- package/dist/register/data/service.js +0 -46
- package/dist/register/data/service.js.map +0 -1
- package/dist/reset-password/data/actions.d.ts +0 -56
- package/dist/reset-password/data/actions.js +0 -41
- package/dist/reset-password/data/actions.js.map +0 -1
- package/dist/reset-password/data/reducers.d.ts +0 -19
- package/dist/reset-password/data/reducers.js +0 -25
- package/dist/reset-password/data/reducers.js.map +0 -1
- package/dist/reset-password/data/sagas.d.ts +0 -7
- package/dist/reset-password/data/sagas.js +0 -63
- package/dist/reset-password/data/sagas.js.map +0 -1
- package/dist/reset-password/data/selectors.d.ts +0 -23
- package/dist/reset-password/data/selectors.js +0 -5
- package/dist/reset-password/data/selectors.js.map +0 -1
- package/dist/reset-password/data/service.d.ts +0 -3
- package/dist/reset-password/data/service.js +0 -62
- package/dist/reset-password/data/service.js.map +0 -1
package/dist/Main.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Provider as ReduxProvider } from 'react-redux';
|
|
3
2
|
import { Outlet } from 'react-router-dom';
|
|
4
3
|
import { CurrentAppProvider } from '@openedx/frontend-base';
|
|
5
4
|
import { appId } from './constants';
|
|
6
5
|
import { registerIcons, } from './common-components';
|
|
7
|
-
import configureStore from './data/configureStore';
|
|
8
6
|
import './sass/_style.scss';
|
|
9
7
|
registerIcons();
|
|
10
|
-
const Main = () => (_jsx(CurrentAppProvider, { appId: appId, children: _jsx(
|
|
8
|
+
const Main = () => (_jsx(CurrentAppProvider, { appId: appId, children: _jsx(Outlet, {}) }));
|
|
11
9
|
export default Main;
|
|
12
10
|
//# sourceMappingURL=Main.js.map
|
package/dist/Main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Main.js","sourceRoot":"","sources":["../src/Main.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Main.js","sourceRoot":"","sources":["../src/Main.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EACL,aAAa,GACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,oBAAoB,CAAC;AAE5B,aAAa,EAAE,CAAC;AAEhB,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,CACjB,KAAC,kBAAkB,IAAC,KAAK,EAAE,KAAK,YAC9B,KAAC,MAAM,KAAG,GACS,CACtB,CAAC;AAEF,eAAe,IAAI,CAAC","sourcesContent":["import { Outlet } from 'react-router-dom';\nimport { CurrentAppProvider } from '@openedx/frontend-base';\n\nimport { appId } from './constants';\nimport {\n registerIcons,\n} from './common-components';\n\nimport './sass/_style.scss';\n\nregisterIcons();\n\nconst Main = () => (\n <CurrentAppProvider appId={appId}>\n <Outlet />\n </CurrentAppProvider>\n);\n\nexport default Main;\n"]}
|
package/dist/app.js
CHANGED
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,MAAM,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,MAAM,GAAG,GAAQ;IACf,KAAK;IACL,MAAM;IACN,MAAM,EAAE;QACN,6BAA6B,EAAE,IAAI;QACnC,6BAA6B,EAAE,IAAI;QACnC,wCAAwC,EAAE,IAAI;QAC9C,wBAAwB,EAAE,EAAE;QAC5B,kBAAkB,EAAE,EAAE;QACtB,mBAAmB,EAAE,EAAE;QACvB,kBAAkB,EAAE,EAAE;QACtB,wBAAwB,EAAE,IAAI;QAC9B,8BAA8B,EAAE,KAAK;QACrC,kCAAkC,EAAE,KAAK;QACzC,mBAAmB,EAAE,KAAK;QAC1B,qCAAqC,EAAE,KAAK;QAC5C,WAAW,EAAE,4CAA4C;QACzD,UAAU,EAAE,EAAE;QACd,wBAAwB,EAAE,IAAI;QAC9B,kBAAkB,EAAE,mDAAmD;QACvE,QAAQ,EAAE,yCAAyC;QACnD,cAAc,EAAE,+CAA+C;QAC/D,uBAAuB,EAAE,EAAE;QAC3B,uBAAuB,EAAE,yBAAyB;QAClD,2BAA2B,EAAE,IAAI;QACjC,8BAA8B,EAAE,EAAE;QAClC,cAAc,EAAE,IAAI;QACpB,kBAAkB,EAAE,IAAI;QACxB,qBAAqB,EAAE,kBAAkB;QACzC,uBAAuB,EAAE,IAAI;QAC7B,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,IAAI;QACd,0BAA0B,EAAE,EAAE;KAC/B;CACF,CAAC;AAEF,eAAe,GAAG,CAAC","sourcesContent":["import { App } from '@openedx/frontend-base';\nimport { appId } from './constants';\nimport routes from './routes';\n\nconst app: App = {\n appId,\n routes,\n config: {\n ACTIVATION_EMAIL_SUPPORT_LINK: null,\n ALLOW_PUBLIC_ACCOUNT_CREATION: true,\n AUTHN_PROGRESSIVE_PROFILING_SUPPORT_LINK: null,\n BANNER_IMAGE_EXTRA_SMALL: '',\n BANNER_IMAGE_LARGE: '',\n BANNER_IMAGE_MEDIUM: '',\n BANNER_IMAGE_SMALL: '',\n DISABLE_ENTERPRISE_LOGIN: true,\n ENABLE_AUTO_GENERATED_USERNAME: false,\n ENABLE_DYNAMIC_REGISTRATION_FIELDS: false,\n ENABLE_IMAGE_LAYOUT: false,\n ENABLE_PROGRESSIVE_PROFILING_ON_AUTHN: false,\n FAVICON_URL: 'https://edx-cdn.org/v3/default/favicon.ico',\n INFO_EMAIL: '',\n LOGIN_ISSUE_SUPPORT_LINK: null,\n LOGO_TRADEMARK_URL: 'https://edx-cdn.org/v3/default/logo-trademark.svg',\n LOGO_URL: 'https://edx-cdn.org/v3/default/logo.svg',\n LOGO_WHITE_URL: 'https://edx-cdn.org/v3/default/logo-white.svg',\n MARKETING_EMAILS_OPT_IN: '',\n MARKETING_SITE_BASE_URL: 'http://local.openedx.io',\n PASSWORD_RESET_SUPPORT_LINK: null,\n POST_REGISTRATION_REDIRECT_URL: '',\n PRIVACY_POLICY: null,\n SEARCH_CATALOG_URL: null,\n SESSION_COOKIE_DOMAIN: 'local.openedx.io',\n SHOW_REGISTRATION_LINKS: true,\n TOS_AND_HONOR_CODE: null,\n TOS_LINK: null,\n USER_RETENTION_COOKIE_NAME: '',\n },\n};\n\nexport default app;\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import { Navigate } from 'react-router-dom';
|
|
4
|
-
import {
|
|
4
|
+
import { notFoundPath } from '../constants';
|
|
5
5
|
import { isHostAvailableInQueryParams } from '../data/utils';
|
|
6
6
|
/**
|
|
7
7
|
* This wrapper redirects the requester to embedded register page only if host
|
|
@@ -13,7 +13,7 @@ const EmbeddedRegistrationRoute = ({ children }) => {
|
|
|
13
13
|
if (registrationEmbedded) {
|
|
14
14
|
return children;
|
|
15
15
|
}
|
|
16
|
-
return _jsx(Navigate, { to:
|
|
16
|
+
return _jsx(Navigate, { to: `../${notFoundPath}`, replace: true });
|
|
17
17
|
};
|
|
18
18
|
EmbeddedRegistrationRoute.propTypes = {
|
|
19
19
|
children: PropTypes.node.isRequired,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmbeddedRegistrationRoute.js","sourceRoot":"","sources":["../../src/common-components/EmbeddedRegistrationRoute.jsx"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"EmbeddedRegistrationRoute.js","sourceRoot":"","sources":["../../src/common-components/EmbeddedRegistrationRoute.jsx"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAE7D;;;GAGG;AACH,MAAM,yBAAyB,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IACjD,MAAM,oBAAoB,GAAG,4BAA4B,EAAE,CAAC;IAE5D,mFAAmF;IACnF,IAAI,oBAAoB,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,KAAC,QAAQ,IAAC,EAAE,EAAE,MAAM,YAAY,EAAE,EAAE,OAAO,SAAG,CAAC;AACxD,CAAC,CAAC;AAEF,yBAAyB,CAAC,SAAS,GAAG;IACpC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;CACpC,CAAC;AAEF,eAAe,yBAAyB,CAAC","sourcesContent":["import PropTypes from 'prop-types';\nimport { Navigate } from 'react-router-dom';\n\nimport { notFoundPath } from '../constants';\nimport { isHostAvailableInQueryParams } from '../data/utils';\n\n/**\n * This wrapper redirects the requester to embedded register page only if host\n * query param is present.\n */\nconst EmbeddedRegistrationRoute = ({ children }) => {\n const registrationEmbedded = isHostAvailableInQueryParams();\n\n // Show registration page for embedded experience even if the user is authenticated\n if (registrationEmbedded) {\n return children;\n }\n\n return <Navigate to={`../${notFoundPath}`} replace />;\n};\n\nEmbeddedRegistrationRoute.propTypes = {\n children: PropTypes.node.isRequired,\n};\n\nexport default EmbeddedRegistrationRoute;\n"]}
|
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
3
|
-
import { useAppConfig, getSiteConfig, useIntl } from '@openedx/frontend-base';
|
|
3
|
+
import { useAppConfig, getSiteConfig, getUrlByRouteRole, useIntl } from '@openedx/frontend-base';
|
|
4
4
|
import { Button, Form, Icon, } from '@openedx/paragon';
|
|
5
5
|
import { Login } from '@openedx/paragon/icons';
|
|
6
6
|
import PropTypes from 'prop-types';
|
|
7
|
-
import {
|
|
7
|
+
import { useNavigate } from 'react-router-dom';
|
|
8
|
+
import { loginRole } from '../constants';
|
|
9
|
+
import { SUPPORTED_ICON_CLASSES } from '../data/constants';
|
|
8
10
|
import messages from './messages';
|
|
9
11
|
/**
|
|
10
12
|
* This component renders the Single sign-on (SSO) button only for the tpa provider passed
|
|
11
13
|
* */
|
|
12
14
|
const EnterpriseSSO = (props) => {
|
|
13
15
|
const { formatMessage } = useIntl();
|
|
16
|
+
const navigate = useNavigate();
|
|
14
17
|
const tpaProvider = props.provider;
|
|
15
18
|
const hideRegistrationLink = useAppConfig().ALLOW_PUBLIC_ACCOUNT_CREATION === false
|
|
16
19
|
|| useAppConfig().SHOW_REGISTRATION_LINKS === false;
|
|
@@ -20,7 +23,7 @@ const EnterpriseSSO = (props) => {
|
|
|
20
23
|
};
|
|
21
24
|
const handleClick = (e) => {
|
|
22
25
|
e.preventDefault();
|
|
23
|
-
|
|
26
|
+
navigate(getUrlByRouteRole(loginRole));
|
|
24
27
|
};
|
|
25
28
|
if (tpaProvider) {
|
|
26
29
|
return (_jsx("div", { className: "d-flex justify-content-center m-4", children: _jsx("div", { className: "d-flex flex-column", children: _jsx("div", { className: "mw-450", children: _jsxs(Form, { className: "m-0", children: [_jsx("p", { children: formatMessage(messages['enterprisetpa.title.heading'], { providerName: tpaProvider.name }) }), _jsx(Button, { id: tpaProvider.id, type: "submit", variant: "link", className: `btn-tpa btn-${tpaProvider.id}`, onClick: (e) => handleSubmit(e, tpaProvider.loginUrl), children: tpaProvider.iconImage ? (_jsxs("div", { "aria-hidden": "true", children: [_jsx("img", { className: "btn-tpa__image-icon", src: tpaProvider.iconImage, alt: `icon ${tpaProvider.name}` }), _jsx("span", { className: "pl-2", "aria-hidden": "true", children: tpaProvider.name })] }))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnterpriseSSO.js","sourceRoot":"","sources":["../../src/common-components/EnterpriseSSO.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"EnterpriseSSO.js","sourceRoot":"","sources":["../../src/common-components/EnterpriseSSO.jsx"],"names":[],"mappings":"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","sourcesContent":["import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { useAppConfig, getSiteConfig, getUrlByRouteRole, useIntl } from '@openedx/frontend-base';\nimport {\n Button, Form,\n Icon,\n} from '@openedx/paragon';\nimport { Login } from '@openedx/paragon/icons';\nimport PropTypes from 'prop-types';\nimport { useNavigate } from 'react-router-dom';\n\nimport { loginRole } from '../constants';\nimport { SUPPORTED_ICON_CLASSES } from '../data/constants';\nimport messages from './messages';\n\n/**\n * This component renders the Single sign-on (SSO) button only for the tpa provider passed\n * */\nconst EnterpriseSSO = (props) => {\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const tpaProvider = props.provider;\n const hideRegistrationLink = useAppConfig().ALLOW_PUBLIC_ACCOUNT_CREATION === false\n || useAppConfig().SHOW_REGISTRATION_LINKS === false;\n\n const handleSubmit = (e, url) => {\n e.preventDefault();\n window.location.href = getSiteConfig().lmsBaseUrl + url;\n };\n\n const handleClick = (e) => {\n e.preventDefault();\n navigate(getUrlByRouteRole(loginRole));\n };\n\n if (tpaProvider) {\n return (\n <div className=\"d-flex justify-content-center m-4\">\n <div className=\"d-flex flex-column\">\n <div className=\"mw-450\">\n <Form className=\"m-0\">\n <p>{formatMessage(messages['enterprisetpa.title.heading'], { providerName: tpaProvider.name })}</p>\n <Button\n id={tpaProvider.id}\n key={tpaProvider.id}\n type=\"submit\"\n variant=\"link\"\n className={`btn-tpa btn-${tpaProvider.id}`}\n onClick={(e) => handleSubmit(e, tpaProvider.loginUrl)}\n >\n {tpaProvider.iconImage ? (\n <div aria-hidden=\"true\">\n <img className=\"btn-tpa__image-icon\" src={tpaProvider.iconImage} alt={`icon ${tpaProvider.name}`} />\n <span className=\"pl-2\" aria-hidden=\"true\">{tpaProvider.name}</span>\n </div>\n )\n : (\n <>\n <div className=\"btn-tpa__font-container\" aria-hidden=\"true\">\n {SUPPORTED_ICON_CLASSES.includes(tpaProvider.iconClass) ? (\n <FontAwesomeIcon icon={['fab', tpaProvider.iconClass]} />)\n : (\n <Icon className=\"h-75\" src={Login} />\n )}\n </div>\n <span className=\"pl-2\" aria-hidden=\"true\">{tpaProvider.name}</span>\n </>\n )}\n </Button>\n <div className=\"mb-4\" />\n <Button\n type=\"submit\"\n id=\"other-ways-to-sign-in\"\n variant=\"outline-primary\"\n state=\"Complete\"\n className=\"w-100\"\n onClick={(e) => handleClick(e)}\n >\n {hideRegistrationLink\n ? formatMessage(messages['enterprisetpa.login.button.text.public.account.creation.disabled'])\n : formatMessage(messages['enterprisetpa.login.button.text'])}\n </Button>\n </Form>\n </div>\n </div>\n </div>\n );\n }\n return <div />;\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};\n\nexport default EnterpriseSSO;\n"]}
|
|
@@ -2,15 +2,18 @@ export default PasswordField;
|
|
|
2
2
|
declare function PasswordField(props: any): import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
declare namespace PasswordField {
|
|
4
4
|
namespace defaultProps {
|
|
5
|
-
let borderClass: string;
|
|
6
|
-
let errorMessage: string;
|
|
7
|
-
let handleBlur: null;
|
|
8
|
-
let handleFocus: null;
|
|
9
|
-
function handleChange(): void;
|
|
10
|
-
let handleErrorChange: null;
|
|
11
|
-
let showRequirements: boolean;
|
|
12
|
-
let showScreenReaderText: boolean;
|
|
13
|
-
let autoComplete: null;
|
|
5
|
+
export let borderClass: string;
|
|
6
|
+
export let errorMessage: string;
|
|
7
|
+
export let handleBlur: null;
|
|
8
|
+
export let handleFocus: null;
|
|
9
|
+
export function handleChange(): void;
|
|
10
|
+
export let handleErrorChange: null;
|
|
11
|
+
export let showRequirements: boolean;
|
|
12
|
+
export let showScreenReaderText: boolean;
|
|
13
|
+
export let autoComplete: null;
|
|
14
|
+
export { noopFn as clearRegistrationBackendError };
|
|
15
|
+
export { noopFn as validateField };
|
|
16
|
+
export let validationApiRateLimited: boolean;
|
|
14
17
|
}
|
|
15
18
|
namespace propTypes {
|
|
16
19
|
let borderClass_1: PropTypes.Requireable<string>;
|
|
@@ -34,6 +37,11 @@ declare namespace PasswordField {
|
|
|
34
37
|
export { autoComplete_1 as autoComplete };
|
|
35
38
|
let showScreenReaderText_1: PropTypes.Requireable<boolean>;
|
|
36
39
|
export { showScreenReaderText_1 as showScreenReaderText };
|
|
40
|
+
export let clearRegistrationBackendError: PropTypes.Requireable<(...args: any[]) => any>;
|
|
41
|
+
export let validateField: PropTypes.Requireable<(...args: any[]) => any>;
|
|
42
|
+
let validationApiRateLimited_1: PropTypes.Requireable<boolean>;
|
|
43
|
+
export { validationApiRateLimited_1 as validationApiRateLimited };
|
|
37
44
|
}
|
|
38
45
|
}
|
|
46
|
+
declare function noopFn(): void;
|
|
39
47
|
import PropTypes from 'prop-types';
|
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useState } from 'react';
|
|
3
|
-
import { useDispatch, useSelector } from 'react-redux';
|
|
4
3
|
import { useIntl } from '@openedx/frontend-base';
|
|
5
4
|
import { Form, Icon, IconButton, OverlayTrigger, Tooltip, useToggle, } from '@openedx/paragon';
|
|
6
5
|
import { Check, Remove, Visibility, VisibilityOff, } from '@openedx/paragon/icons';
|
|
7
6
|
import PropTypes from 'prop-types';
|
|
8
7
|
import { LETTER_REGEX, NUMBER_REGEX } from '../data/constants';
|
|
9
|
-
import { clearRegistrationBackendError, fetchRealtimeValidations } from '../register/data/actions';
|
|
10
8
|
import { validatePasswordField } from '../register/data/utils';
|
|
11
9
|
import messages from './messages';
|
|
10
|
+
const noopFn = () => { };
|
|
12
11
|
const PasswordField = (props) => {
|
|
13
12
|
const { formatMessage } = useIntl();
|
|
14
|
-
const dispatch = useDispatch();
|
|
15
|
-
const validationApiRateLimited = useSelector(state => state.register.validationApiRateLimited);
|
|
16
13
|
const [isPasswordHidden, setHiddenTrue, setHiddenFalse] = useToggle(true);
|
|
17
14
|
const [showTooltip, setShowTooltip] = useState(false);
|
|
15
|
+
const { validationApiRateLimited = false, clearRegistrationBackendError = noopFn, validateField = noopFn, } = props;
|
|
18
16
|
const handleBlur = (e) => {
|
|
19
17
|
var _a;
|
|
20
18
|
const { name, value } = e.target;
|
|
@@ -41,7 +39,7 @@ const PasswordField = (props) => {
|
|
|
41
39
|
props.handleErrorChange('password', fieldError);
|
|
42
40
|
}
|
|
43
41
|
else if (!validationApiRateLimited) {
|
|
44
|
-
|
|
42
|
+
validateField({ password: passwordValue });
|
|
45
43
|
}
|
|
46
44
|
}
|
|
47
45
|
};
|
|
@@ -55,7 +53,7 @@ const PasswordField = (props) => {
|
|
|
55
53
|
}
|
|
56
54
|
if (props.handleErrorChange) {
|
|
57
55
|
props.handleErrorChange('password', '');
|
|
58
|
-
|
|
56
|
+
clearRegistrationBackendError('password');
|
|
59
57
|
}
|
|
60
58
|
setTimeout(() => setShowTooltip(props.showRequirements && true), 150);
|
|
61
59
|
};
|
|
@@ -75,6 +73,9 @@ PasswordField.defaultProps = {
|
|
|
75
73
|
showRequirements: true,
|
|
76
74
|
showScreenReaderText: true,
|
|
77
75
|
autoComplete: null,
|
|
76
|
+
clearRegistrationBackendError: noopFn,
|
|
77
|
+
validateField: noopFn,
|
|
78
|
+
validationApiRateLimited: false,
|
|
78
79
|
};
|
|
79
80
|
PasswordField.propTypes = {
|
|
80
81
|
borderClass: PropTypes.string,
|
|
@@ -89,6 +90,9 @@ PasswordField.propTypes = {
|
|
|
89
90
|
value: PropTypes.string.isRequired,
|
|
90
91
|
autoComplete: PropTypes.string,
|
|
91
92
|
showScreenReaderText: PropTypes.bool,
|
|
93
|
+
clearRegistrationBackendError: PropTypes.func,
|
|
94
|
+
validateField: PropTypes.func,
|
|
95
|
+
validationApiRateLimited: PropTypes.bool,
|
|
92
96
|
};
|
|
93
97
|
export default PasswordField;
|
|
94
98
|
//# sourceMappingURL=PasswordField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PasswordField.js","sourceRoot":"","sources":["../../src/common-components/PasswordField.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EACL,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,GAC3D,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,GACzC,MAAM,wBAAwB,CAAC;AAChC,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,6BAA6B,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACnG,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,EAAE;IAC9B,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,MAAM,wBAAwB,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;IAC/F,MAAM,CAAC,gBAAgB,EAAE,aAAa,EAAE,cAAc,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1E,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEtD,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,EAAE;;QACvB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;QACjC,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,CAAA,MAAA,CAAC,CAAC,aAAa,0CAAE,IAAI,MAAK,cAAc,EAAE,CAAC;YACpE,OAAO,CAAC,gDAAgD;QAC1D,CAAC;QAED,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;YAC5B,+FAA+F;YAC/F,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC;QAC9B,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,KAAK,CAAC,UAAU,CAAC;gBACf,MAAM,EAAE;oBACN,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,KAAK,EAAE,aAAa;iBACrB;aACF,CAAC,CAAC;QACL,CAAC;QAED,cAAc,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,CAAC;QAChD,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC,kCAAkC;YAC/D,MAAM,UAAU,GAAG,qBAAqB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;YACvE,IAAI,UAAU,EAAE,CAAC;gBACf,KAAK,CAAC,iBAAiB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAClD,CAAC;iBAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBACrC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,CAAC,EAAE,EAAE;;QACxB,IAAI,CAAA,MAAA,CAAC,CAAC,MAAM,0CAAE,IAAI,MAAK,cAAc,EAAE,CAAC;YACtC,OAAO,CAAC,4CAA4C;QACtD,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;QACD,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACxC,QAAQ,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,UAAU,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IACxE,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CACjB,KAAC,UAAU,IACT,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAC,cAAc,EACnB,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,IAAI,EACZ,OAAO,EAAE,aAAa,EACtB,IAAI,EAAC,IAAI,EACT,OAAO,EAAC,WAAW,EACnB,GAAG,EAAE,aAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,GAC7C,CACH,CAAC;IAEF,MAAM,UAAU,GAAG,CACjB,KAAC,UAAU,IACT,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAC,cAAc,EACnB,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,IAAI,EACZ,OAAO,EAAE,cAAc,EACvB,IAAI,EAAC,IAAI,EACT,OAAO,EAAC,WAAW,EACnB,GAAG,EAAE,aAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,GAC7C,CACH,CAAC;IAEF,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3D,MAAM,OAAO,GAAG,CACd,MAAC,OAAO,IAAC,EAAE,EAAE,wBAAwB,SAAS,EAAE,aAC9C,gBAAM,EAAE,EAAC,cAAc,EAAC,SAAS,EAAC,2BAA2B,aAC1D,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,SAAS,EAAC,mBAAmB,EAAC,GAAG,EAAE,KAAK,GAAI,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,SAAS,EAAC,qBAAqB,EAAC,GAAG,EAAE,MAAM,GAAI,EAC3I,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IACjC,EACP,gBAAM,EAAE,EAAC,cAAc,EAAC,SAAS,EAAC,2BAA2B,aAC1D,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,SAAS,EAAC,mBAAmB,EAAC,GAAG,EAAE,KAAK,GAAI,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,SAAS,EAAC,qBAAqB,EAAC,GAAG,EAAE,MAAM,GAAI,EAC3I,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IACjC,EACP,gBAAM,EAAE,EAAC,kBAAkB,EAAC,SAAS,EAAC,2BAA2B,aAC9D,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,SAAS,EAAC,mBAAmB,EAAC,GAAG,EAAE,KAAK,GAAI,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,SAAS,EAAC,qBAAqB,EAAC,GAAG,EAAE,MAAM,GAAI,EACpI,aAAa,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,IACvC,IACC,CACX,CAAC;IAEF,OAAO,CACL,MAAC,IAAI,CAAC,KAAK,IAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,YAAY,KAAK,EAAE,aACrE,KAAC,cAAc,IAAe,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,YACrF,KAAC,IAAI,CAAC,OAAO,IACX,EAAE,EAAC,OAAO,EACV,SAAS,EAAC,wBAAwB,EAClC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EAC5C,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,YAAY,EAAE,KAAK,CAAC,YAAY,kBAClB,KAAK,CAAC,YAAY,KAAK,EAAE,EACvC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,KAAK,CAAC,YAAY,EAC5B,gBAAgB,EAAE,KAAK,CAAC,WAAW,EACnC,eAAe,EAAE,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAC3D,aAAa,EAAE,KAAK,CAAC,aAAa,GAClC,IAfgB,SAAS,CAgBZ,EAChB,KAAK,CAAC,YAAY,KAAK,EAAE,IAAI,CAC5B,MAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAa,SAAS,EAAC,gBAAgB,EAAC,OAAO,EAAE,KAAK,kBAAgB,KAAK,CAAC,IAAI,EAAE,IAAI,EAAC,SAAS,aACnH,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,oBAAoB,IAAI,eAAM,SAAS,EAAC,SAAS,YAAE,aAAa,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC,GAAQ,KAFjG,OAAO,CAGV,CACzB,IACU,CACd,CAAC;AACJ,CAAC,CAAC;AAEF,aAAa,CAAC,YAAY,GAAG;IAC3B,WAAW,EAAE,EAAE;IACf,YAAY,EAAE,EAAE;IAChB,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,IAAI;IACjB,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC;IACtB,iBAAiB,EAAE,IAAI;IACvB,gBAAgB,EAAE,IAAI;IACtB,oBAAoB,EAAE,IAAI;IAC1B,YAAY,EAAE,IAAI;CACnB,CAAC;AAEF,aAAa,CAAC,SAAS,GAAG;IACxB,WAAW,EAAE,SAAS,CAAC,MAAM;IAC7B,YAAY,EAAE,SAAS,CAAC,MAAM;IAC9B,aAAa,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;IAC1C,UAAU,EAAE,SAAS,CAAC,IAAI;IAC1B,WAAW,EAAE,SAAS,CAAC,IAAI;IAC3B,YAAY,EAAE,SAAS,CAAC,IAAI;IAC5B,iBAAiB,EAAE,SAAS,CAAC,IAAI;IACjC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;IACjC,gBAAgB,EAAE,SAAS,CAAC,IAAI;IAChC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;IAClC,YAAY,EAAE,SAAS,CAAC,MAAM;IAC9B,oBAAoB,EAAE,SAAS,CAAC,IAAI;CACrC,CAAC;AAEF,eAAe,aAAa,CAAC","sourcesContent":["import { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { useIntl } from '@openedx/frontend-base';\nimport {\n Form, Icon, IconButton, OverlayTrigger, Tooltip, useToggle,\n} from '@openedx/paragon';\nimport {\n Check, Remove, Visibility, VisibilityOff,\n} from '@openedx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nimport { LETTER_REGEX, NUMBER_REGEX } from '../data/constants';\nimport { clearRegistrationBackendError, fetchRealtimeValidations } from '../register/data/actions';\nimport { validatePasswordField } from '../register/data/utils';\nimport messages from './messages';\n\nconst PasswordField = (props) => {\n const { formatMessage } = useIntl();\n const dispatch = useDispatch();\n\n const validationApiRateLimited = useSelector(state => state.register.validationApiRateLimited);\n const [isPasswordHidden, setHiddenTrue, setHiddenFalse] = useToggle(true);\n const [showTooltip, setShowTooltip] = useState(false);\n\n const handleBlur = (e) => {\n const { name, value } = e.target;\n if (name === props.name && e.relatedTarget?.name === 'passwordIcon') {\n return; // Do not run validations on password icon click\n }\n\n let passwordValue = value;\n if (name === 'passwordIcon') {\n // To validate actual password value when onBlur is triggered by focusing out the password icon\n passwordValue = props.value;\n }\n\n if (props.handleBlur) {\n props.handleBlur({\n target: {\n name: props.name,\n value: passwordValue,\n },\n });\n }\n\n setShowTooltip(props.showRequirements && false);\n if (props.handleErrorChange) { // If rendering from register page\n const fieldError = validatePasswordField(passwordValue, formatMessage);\n if (fieldError) {\n props.handleErrorChange('password', fieldError);\n } else if (!validationApiRateLimited) {\n dispatch(fetchRealtimeValidations({ password: passwordValue }));\n }\n }\n };\n\n const handleFocus = (e) => {\n if (e.target?.name === 'passwordIcon') {\n return; // Do not clear error on password icon focus\n }\n\n if (props.handleFocus) {\n props.handleFocus(e);\n }\n if (props.handleErrorChange) {\n props.handleErrorChange('password', '');\n dispatch(clearRegistrationBackendError('password'));\n }\n setTimeout(() => setShowTooltip(props.showRequirements && true), 150);\n };\n\n const HideButton = (\n <IconButton\n onFocus={handleFocus}\n onBlur={handleBlur}\n name=\"passwordIcon\"\n src={VisibilityOff}\n iconAs={Icon}\n onClick={setHiddenTrue}\n size=\"sm\"\n variant=\"secondary\"\n alt={formatMessage(messages['hide.password'])}\n />\n );\n\n const ShowButton = (\n <IconButton\n onFocus={handleFocus}\n onBlur={handleBlur}\n name=\"passwordIcon\"\n src={Visibility}\n iconAs={Icon}\n onClick={setHiddenFalse}\n size=\"sm\"\n variant=\"secondary\"\n alt={formatMessage(messages['show.password'])}\n />\n );\n\n const placement = window.innerWidth < 768 ? 'top' : 'left';\n const tooltip = (\n <Tooltip id={`password-requirement-${placement}`}>\n <span id=\"letter-check\" className=\"d-flex align-items-center\">\n {LETTER_REGEX.test(props.value) ? <Icon className=\"text-success mr-1\" src={Check} /> : <Icon className=\"mr-1 text-light-700\" src={Remove} />}\n {formatMessage(messages['one.letter'])}\n </span>\n <span id=\"number-check\" className=\"d-flex align-items-center\">\n {NUMBER_REGEX.test(props.value) ? <Icon className=\"text-success mr-1\" src={Check} /> : <Icon className=\"mr-1 text-light-700\" src={Remove} />}\n {formatMessage(messages['one.number'])}\n </span>\n <span id=\"characters-check\" className=\"d-flex align-items-center\">\n {props.value.length >= 8 ? <Icon className=\"text-success mr-1\" src={Check} /> : <Icon className=\"mr-1 text-light-700\" src={Remove} />}\n {formatMessage(messages['eight.characters'])}\n </span>\n </Tooltip>\n );\n\n return (\n <Form.Group controlId={props.name} isInvalid={props.errorMessage !== ''}>\n <OverlayTrigger key=\"tooltip\" placement={placement} overlay={tooltip} show={showTooltip}>\n <Form.Control\n as=\"input\"\n className=\"form-group__form-field\"\n type={isPasswordHidden ? 'password' : 'text'}\n name={props.name}\n value={props.value}\n autoComplete={props.autoComplete}\n aria-invalid={props.errorMessage !== ''}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={props.handleChange}\n controlClassName={props.borderClass}\n trailingElement={isPasswordHidden ? ShowButton : HideButton}\n floatingLabel={props.floatingLabel}\n />\n </OverlayTrigger>\n {props.errorMessage !== '' && (\n <Form.Control.Feedback key=\"error\" className=\"form-text-size\" hasIcon={false} feedback-for={props.name} type=\"invalid\">\n {props.errorMessage}\n {props.showScreenReaderText && <span className=\"sr-only\">{formatMessage(messages['password.sr.only.helping.text'])}</span>}\n </Form.Control.Feedback>\n )}\n </Form.Group>\n );\n};\n\nPasswordField.defaultProps = {\n borderClass: '',\n errorMessage: '',\n handleBlur: null,\n handleFocus: null,\n handleChange: () => {},\n handleErrorChange: null,\n showRequirements: true,\n showScreenReaderText: true,\n autoComplete: null,\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 handleErrorChange: PropTypes.func,\n name: PropTypes.string.isRequired,\n showRequirements: PropTypes.bool,\n value: PropTypes.string.isRequired,\n autoComplete: PropTypes.string,\n showScreenReaderText: PropTypes.bool,\n};\n\nexport default PasswordField;\n"]}
|
|
1
|
+
{"version":3,"file":"PasswordField.js","sourceRoot":"","sources":["../../src/common-components/PasswordField.jsx"],"names":[],"mappings":"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","sourcesContent":["import { useState } from 'react';\n\nimport { useIntl } from '@openedx/frontend-base';\nimport {\n Form, Icon, IconButton, OverlayTrigger, Tooltip, useToggle,\n} from '@openedx/paragon';\nimport {\n Check, Remove, Visibility, VisibilityOff,\n} from '@openedx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nimport { LETTER_REGEX, NUMBER_REGEX } from '../data/constants';\nimport { validatePasswordField } from '../register/data/utils';\nimport messages from './messages';\n\nconst noopFn = () => {};\n\nconst PasswordField = (props) => {\n const { formatMessage } = useIntl();\n const [isPasswordHidden, setHiddenTrue, setHiddenFalse] = useToggle(true);\n const [showTooltip, setShowTooltip] = useState(false);\n\n const {\n validationApiRateLimited = false,\n clearRegistrationBackendError = noopFn,\n validateField = noopFn,\n } = props;\n\n const handleBlur = (e) => {\n const { name, value } = e.target;\n if (name === props.name && e.relatedTarget?.name === 'passwordIcon') {\n return; // Do not run validations on password icon click\n }\n\n let passwordValue = value;\n if (name === 'passwordIcon') {\n // To validate actual password value when onBlur is triggered by focusing out the password icon\n passwordValue = props.value;\n }\n\n if (props.handleBlur) {\n props.handleBlur({\n target: {\n name: props.name,\n value: passwordValue,\n },\n });\n }\n\n setShowTooltip(props.showRequirements && false);\n if (props.handleErrorChange) { // If rendering from register page\n const fieldError = validatePasswordField(passwordValue, formatMessage);\n if (fieldError) {\n props.handleErrorChange('password', fieldError);\n } else if (!validationApiRateLimited) {\n validateField({ password: passwordValue });\n }\n }\n };\n\n const handleFocus = (e) => {\n if (e.target?.name === 'passwordIcon') {\n return; // Do not clear error on password icon focus\n }\n\n if (props.handleFocus) {\n props.handleFocus(e);\n }\n if (props.handleErrorChange) {\n props.handleErrorChange('password', '');\n clearRegistrationBackendError('password');\n }\n setTimeout(() => setShowTooltip(props.showRequirements && true), 150);\n };\n\n const HideButton = (\n <IconButton\n onFocus={handleFocus}\n onBlur={handleBlur}\n name=\"passwordIcon\"\n src={VisibilityOff}\n iconAs={Icon}\n onClick={setHiddenTrue}\n size=\"sm\"\n variant=\"secondary\"\n alt={formatMessage(messages['hide.password'])}\n />\n );\n\n const ShowButton = (\n <IconButton\n onFocus={handleFocus}\n onBlur={handleBlur}\n name=\"passwordIcon\"\n src={Visibility}\n iconAs={Icon}\n onClick={setHiddenFalse}\n size=\"sm\"\n variant=\"secondary\"\n alt={formatMessage(messages['show.password'])}\n />\n );\n\n const placement = window.innerWidth < 768 ? 'top' : 'left';\n const tooltip = (\n <Tooltip id={`password-requirement-${placement}`}>\n <span id=\"letter-check\" className=\"d-flex align-items-center\">\n {LETTER_REGEX.test(props.value) ? <Icon className=\"text-success mr-1\" src={Check} /> : <Icon className=\"mr-1 text-light-700\" src={Remove} />}\n {formatMessage(messages['one.letter'])}\n </span>\n <span id=\"number-check\" className=\"d-flex align-items-center\">\n {NUMBER_REGEX.test(props.value) ? <Icon className=\"text-success mr-1\" src={Check} /> : <Icon className=\"mr-1 text-light-700\" src={Remove} />}\n {formatMessage(messages['one.number'])}\n </span>\n <span id=\"characters-check\" className=\"d-flex align-items-center\">\n {props.value.length >= 8 ? <Icon className=\"text-success mr-1\" src={Check} /> : <Icon className=\"mr-1 text-light-700\" src={Remove} />}\n {formatMessage(messages['eight.characters'])}\n </span>\n </Tooltip>\n );\n\n return (\n <Form.Group controlId={props.name} isInvalid={props.errorMessage !== ''}>\n <OverlayTrigger key=\"tooltip\" placement={placement} overlay={tooltip} show={showTooltip}>\n <Form.Control\n as=\"input\"\n className=\"form-group__form-field\"\n type={isPasswordHidden ? 'password' : 'text'}\n name={props.name}\n value={props.value}\n autoComplete={props.autoComplete}\n aria-invalid={props.errorMessage !== ''}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={props.handleChange}\n controlClassName={props.borderClass}\n trailingElement={isPasswordHidden ? ShowButton : HideButton}\n floatingLabel={props.floatingLabel}\n />\n </OverlayTrigger>\n {props.errorMessage !== '' && (\n <Form.Control.Feedback key=\"error\" className=\"form-text-size\" hasIcon={false} feedback-for={props.name} type=\"invalid\">\n {props.errorMessage}\n {props.showScreenReaderText && <span className=\"sr-only\">{formatMessage(messages['password.sr.only.helping.text'])}</span>}\n </Form.Control.Feedback>\n )}\n </Form.Group>\n );\n};\n\nPasswordField.defaultProps = {\n borderClass: '',\n errorMessage: '',\n handleBlur: null,\n handleFocus: null,\n handleChange: () => {},\n handleErrorChange: null,\n showRequirements: true,\n showScreenReaderText: true,\n autoComplete: null,\n clearRegistrationBackendError: noopFn,\n validateField: noopFn,\n validationApiRateLimited: false,\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 handleErrorChange: PropTypes.func,\n name: PropTypes.string.isRequired,\n showRequirements: PropTypes.bool,\n value: PropTypes.string.isRequired,\n autoComplete: PropTypes.string,\n showScreenReaderText: PropTypes.bool,\n clearRegistrationBackendError: PropTypes.func,\n validateField: PropTypes.func,\n validationApiRateLimited: PropTypes.bool,\n};\n\nexport default PasswordField;\n"]}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useAppConfig, getSiteConfig } from '@openedx/frontend-base';
|
|
2
|
+
import { useAppConfig, getSiteConfig, getUrlByRouteRole } from '@openedx/frontend-base';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import { Navigate } from 'react-router-dom';
|
|
5
|
-
import {
|
|
5
|
+
import { welcomeRole } from '../constants';
|
|
6
|
+
import { REDIRECT } from '../data/constants';
|
|
6
7
|
import { setCookie } from '../data/utils';
|
|
7
8
|
const RedirectLogistration = (props) => {
|
|
8
9
|
const { authenticatedUser, finishAuthUrl, redirectUrl, redirectToProgressiveProfilingPage, success, optionalFields, educationLevel, userId, registrationEmbedded, host, } = props;
|
|
@@ -30,12 +31,15 @@ const RedirectLogistration = (props) => {
|
|
|
30
31
|
return null;
|
|
31
32
|
}
|
|
32
33
|
const registrationResult = { redirectUrl: finalRedirectUrl, success };
|
|
33
|
-
return (_jsx(Navigate, { to:
|
|
34
|
+
return (_jsx(Navigate, { to: getUrlByRouteRole(welcomeRole), state: {
|
|
34
35
|
registrationResult,
|
|
35
36
|
optionalFields,
|
|
36
37
|
authenticatedUser,
|
|
37
38
|
}, replace: true }));
|
|
38
39
|
}
|
|
40
|
+
if (finalRedirectUrl.startsWith('/')) {
|
|
41
|
+
return _jsx(Navigate, { to: finalRedirectUrl, replace: true });
|
|
42
|
+
}
|
|
39
43
|
window.location.href = finalRedirectUrl;
|
|
40
44
|
}
|
|
41
45
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RedirectLogistration.js","sourceRoot":"","sources":["../../src/common-components/RedirectLogistration.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"RedirectLogistration.js","sourceRoot":"","sources":["../../src/common-components/RedirectLogistration.jsx"],"names":[],"mappings":"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","sourcesContent":["import { useAppConfig, getSiteConfig, getUrlByRouteRole } from '@openedx/frontend-base';\nimport PropTypes from 'prop-types';\nimport { Navigate } from 'react-router-dom';\n\nimport { welcomeRole } from '../constants';\nimport { REDIRECT } from '../data/constants';\nimport { setCookie } from '../data/utils';\n\nconst RedirectLogistration = (props) => {\n const {\n authenticatedUser,\n finishAuthUrl,\n redirectUrl,\n redirectToProgressiveProfilingPage,\n success,\n optionalFields,\n educationLevel,\n userId,\n registrationEmbedded,\n host,\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 = getSiteConfig().lmsBaseUrl + finishAuthUrl;\n } else {\n finalRedirectUrl = redirectUrl;\n }\n\n // Redirect to Progressive Profiling after successful registration\n if (redirectToProgressiveProfilingPage) {\n // TODO: Do we still need this cookie?\n setCookie('van-504-returning-user', true, useAppConfig().SESSION_COOKIE_DOMAIN);\n\n if (registrationEmbedded) {\n window.parent.postMessage({\n action: REDIRECT,\n redirectUrl: useAppConfig().POST_REGISTRATION_REDIRECT_URL,\n }, host);\n return null;\n }\n const registrationResult = { redirectUrl: finalRedirectUrl, success };\n return (\n <Navigate\n to={getUrlByRouteRole(welcomeRole)}\n state={{\n registrationResult,\n optionalFields,\n authenticatedUser,\n }}\n replace\n />\n );\n }\n\n if (finalRedirectUrl.startsWith('/')) {\n return <Navigate to={finalRedirectUrl} replace />;\n }\n window.location.href = finalRedirectUrl;\n }\n\n return null;\n};\n\nRedirectLogistration.defaultProps = {\n authenticatedUser: {},\n educationLevel: null,\n finishAuthUrl: null,\n success: false,\n redirectUrl: '',\n redirectToProgressiveProfilingPage: false,\n optionalFields: {},\n userId: null,\n registrationEmbedded: false,\n host: '',\n};\n\nRedirectLogistration.propTypes = {\n authenticatedUser: PropTypes.shape({}),\n educationLevel: PropTypes.string,\n finishAuthUrl: PropTypes.string,\n success: PropTypes.bool,\n redirectUrl: PropTypes.string,\n redirectToProgressiveProfilingPage: PropTypes.bool,\n optionalFields: PropTypes.shape({}),\n userId: PropTypes.number,\n registrationEmbedded: PropTypes.bool,\n host: PropTypes.string,\n};\n\nexport default RedirectLogistration;\n"]}
|
|
@@ -2,7 +2,7 @@ export default SocialAuthProviders;
|
|
|
2
2
|
declare function SocialAuthProviders(props: any): import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
declare namespace SocialAuthProviders {
|
|
4
4
|
namespace defaultProps {
|
|
5
|
-
export {
|
|
5
|
+
export { loginPath as referrer };
|
|
6
6
|
export let socialAuthProviders: never[];
|
|
7
7
|
}
|
|
8
8
|
namespace propTypes {
|
|
@@ -19,5 +19,5 @@ declare namespace SocialAuthProviders {
|
|
|
19
19
|
export { socialAuthProviders_1 as socialAuthProviders };
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
import {
|
|
22
|
+
import { loginPath } from '../constants';
|
|
23
23
|
import PropTypes from 'prop-types';
|
|
@@ -4,7 +4,8 @@ import { getSiteConfig, useIntl } from '@openedx/frontend-base';
|
|
|
4
4
|
import { Icon } from '@openedx/paragon';
|
|
5
5
|
import { Login } from '@openedx/paragon/icons';
|
|
6
6
|
import PropTypes from 'prop-types';
|
|
7
|
-
import {
|
|
7
|
+
import { loginPath } from '../constants';
|
|
8
|
+
import { SUPPORTED_ICON_CLASSES } from '../data/constants';
|
|
8
9
|
import messages from './messages';
|
|
9
10
|
const SocialAuthProviders = (props) => {
|
|
10
11
|
const { formatMessage } = useIntl();
|
|
@@ -14,16 +15,16 @@ const SocialAuthProviders = (props) => {
|
|
|
14
15
|
const url = e.currentTarget.dataset.providerUrl;
|
|
15
16
|
window.location.href = getSiteConfig().lmsBaseUrl + url;
|
|
16
17
|
}
|
|
17
|
-
const socialAuth = socialAuthProviders.map((provider, index) => (_jsxs("button", { id: provider.id, type: "button", className: `btn-social btn-${provider.id} ${index % 2 === 0 ? 'mr-3' : ''}`, "data-provider-url": referrer ===
|
|
18
|
+
const socialAuth = socialAuthProviders.map((provider, index) => (_jsxs("button", { id: provider.id, type: "button", className: `btn-social btn-${provider.id} ${index % 2 === 0 ? 'mr-3' : ''}`, "data-provider-url": referrer === loginPath ? provider.loginUrl : provider.registerUrl, onClick: handleSubmit, children: [provider.iconImage ? (_jsx("div", { "aria-hidden": "true", children: _jsx("img", { className: "btn-tpa__image-icon", src: provider.iconImage, alt: `icon ${provider.name}` }) }))
|
|
18
19
|
: (_jsx("div", { className: "btn-tpa__font-container", "aria-hidden": "true", children: SUPPORTED_ICON_CLASSES.includes(provider.iconClass) ? (_jsx(FontAwesomeIcon, { icon: ['fab', provider.iconClass] }))
|
|
19
|
-
: (_jsx(Icon, { className: "h-75", src: Login })) })), _jsx("span", { id: "provider-name", className: "notranslate mr-auto pl-2", "aria-hidden": "true", children: provider.name }), _jsx("span", { className: "sr-only", children: referrer ===
|
|
20
|
+
: (_jsx(Icon, { className: "h-75", src: Login })) })), _jsx("span", { id: "provider-name", className: "notranslate mr-auto pl-2", "aria-hidden": "true", children: provider.name }), _jsx("span", { className: "sr-only", children: referrer === loginPath
|
|
20
21
|
? formatMessage(messages['sso.sign.in.with'], { providerName: provider.name })
|
|
21
22
|
: formatMessage(messages['sso.create.account.using'], { providerName: provider.name }) })] }, provider.id)));
|
|
22
23
|
// eslint-disable-next-line react/jsx-no-useless-fragment
|
|
23
24
|
return _jsx(_Fragment, { children: socialAuth });
|
|
24
25
|
};
|
|
25
26
|
SocialAuthProviders.defaultProps = {
|
|
26
|
-
referrer:
|
|
27
|
+
referrer: loginPath,
|
|
27
28
|
socialAuthProviders: [],
|
|
28
29
|
};
|
|
29
30
|
SocialAuthProviders.propTypes = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SocialAuthProviders.js","sourceRoot":"","sources":["../../src/common-components/SocialAuthProviders.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"SocialAuthProviders.js","sourceRoot":"","sources":["../../src/common-components/SocialAuthProviders.jsx"],"names":[],"mappings":"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","sourcesContent":["import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { getSiteConfig, useIntl } from '@openedx/frontend-base';\nimport { Icon } from '@openedx/paragon';\nimport { Login } from '@openedx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nimport { loginPath } from '../constants';\nimport { SUPPORTED_ICON_CLASSES } from '../data/constants';\nimport messages from './messages';\n\nconst SocialAuthProviders = (props) => {\n const { formatMessage } = useIntl();\n const { referrer, socialAuthProviders } = props;\n\n function handleSubmit(e) {\n e.preventDefault();\n\n const url = e.currentTarget.dataset.providerUrl;\n window.location.href = getSiteConfig().lmsBaseUrl + url;\n }\n\n const socialAuth = socialAuthProviders.map((provider, index) => (\n <button\n id={provider.id}\n key={provider.id}\n type=\"button\"\n className={`btn-social btn-${provider.id} ${index % 2 === 0 ? 'mr-3' : ''}`}\n data-provider-url={referrer === loginPath ? provider.loginUrl : provider.registerUrl}\n onClick={handleSubmit}\n >\n {provider.iconImage ? (\n <div aria-hidden=\"true\">\n <img className=\"btn-tpa__image-icon\" src={provider.iconImage} alt={`icon ${provider.name}`} />\n </div>\n )\n : (\n <div className=\"btn-tpa__font-container\" aria-hidden=\"true\">\n {SUPPORTED_ICON_CLASSES.includes(provider.iconClass) ? (\n <FontAwesomeIcon icon={['fab', provider.iconClass]} />)\n : (\n <Icon className=\"h-75\" src={Login} />\n )}\n </div>\n )}\n <span id=\"provider-name\" className=\"notranslate mr-auto pl-2\" aria-hidden=\"true\">{provider.name}</span>\n <span className=\"sr-only\">\n {referrer === loginPath\n ? formatMessage(messages['sso.sign.in.with'], { providerName: provider.name })\n : formatMessage(messages['sso.create.account.using'], { providerName: provider.name })}\n </span>\n </button>\n ));\n\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{socialAuth}</>;\n};\n\nSocialAuthProviders.defaultProps = {\n referrer: loginPath,\n socialAuthProviders: [],\n};\n\nSocialAuthProviders.propTypes = {\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 skipRegistrationForm: PropTypes.bool,\n })),\n};\n\nexport default SocialAuthProviders;\n"]}
|
|
@@ -5,7 +5,8 @@ import { Institution } from '@openedx/paragon/icons';
|
|
|
5
5
|
import classNames from 'classnames';
|
|
6
6
|
import PropTypes from 'prop-types';
|
|
7
7
|
import Skeleton from 'react-loading-skeleton';
|
|
8
|
-
import {
|
|
8
|
+
import { loginPath, registerPath } from '../constants';
|
|
9
|
+
import { ENTERPRISE_LOGIN_URL, PENDING_STATE } from '../data/constants';
|
|
9
10
|
import messages from './messages';
|
|
10
11
|
import { RenderInstitutionButton, SocialAuthProviders, } from './index';
|
|
11
12
|
/**
|
|
@@ -21,7 +22,7 @@ const ThirdPartyAuth = (props) => {
|
|
|
21
22
|
const isThirdPartyAuthActive = isSocialAuthActive || (isEnterpriseLoginDisabled && isInstitutionAuthActive);
|
|
22
23
|
return (_jsxs(_Fragment, { children: [((isEnterpriseLoginDisabled && isInstitutionAuthActive) || isSocialAuthActive) && (_jsx("div", { className: "mt-4 mb-3 h4", children: isLoginPage
|
|
23
24
|
? formatMessage(messages['login.other.options.heading'])
|
|
24
|
-
: formatMessage(messages['registration.other.options.heading']) })), (isLoginPage && !isEnterpriseLoginDisabled && isSocialAuthActive) && (_jsxs(Hyperlink, { className: classNames('btn btn-link btn-sm text-body p-0', { 'mb-0': thirdPartyAuthApiStatus === PENDING_STATE }, { 'mb-4': thirdPartyAuthApiStatus !== PENDING_STATE }), destination: enterpriseLoginURL, children: [_jsx(Icon, { src: Institution, className: "institute-icon" }), formatMessage(messages['enterprise.login.btn.text'])] })), thirdPartyAuthApiStatus === PENDING_STATE && isThirdPartyAuthActive ? (_jsx("div", { className: "mt-4", children: _jsx(Skeleton, { className: "tpa-skeleton", height: 36, count: 2 }) })) : (_jsxs(_Fragment, { children: [(isEnterpriseLoginDisabled && isInstitutionAuthActive) && (_jsx(RenderInstitutionButton, { onSubmitHandler: handleInstitutionLogin, buttonTitle: formatMessage(messages['institution.login.button']) })), isSocialAuthActive && (_jsx("div", { className: "row m-0", children: _jsx(SocialAuthProviders, { socialAuthProviders: providers, referrer: isLoginPage ?
|
|
25
|
+
: formatMessage(messages['registration.other.options.heading']) })), (isLoginPage && !isEnterpriseLoginDisabled && isSocialAuthActive) && (_jsxs(Hyperlink, { className: classNames('btn btn-link btn-sm text-body p-0', { 'mb-0': thirdPartyAuthApiStatus === PENDING_STATE }, { 'mb-4': thirdPartyAuthApiStatus !== PENDING_STATE }), destination: enterpriseLoginURL, children: [_jsx(Icon, { src: Institution, className: "institute-icon" }), formatMessage(messages['enterprise.login.btn.text'])] })), thirdPartyAuthApiStatus === PENDING_STATE && isThirdPartyAuthActive ? (_jsx("div", { className: "mt-4", children: _jsx(Skeleton, { className: "tpa-skeleton", height: 36, count: 2 }) })) : (_jsxs(_Fragment, { children: [(isEnterpriseLoginDisabled && isInstitutionAuthActive) && (_jsx(RenderInstitutionButton, { onSubmitHandler: handleInstitutionLogin, buttonTitle: formatMessage(messages['institution.login.button']) })), isSocialAuthActive && (_jsx("div", { className: "row m-0", children: _jsx(SocialAuthProviders, { socialAuthProviders: providers, referrer: isLoginPage ? loginPath : registerPath }) }))] }))] }));
|
|
25
26
|
};
|
|
26
27
|
ThirdPartyAuth.defaultProps = {
|
|
27
28
|
currentProvider: null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThirdPartyAuth.js","sourceRoot":"","sources":["../../src/common-components/ThirdPartyAuth.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EACL,SAAS,EAAE,IAAI,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAE9C,OAAO,
|
|
1
|
+
{"version":3,"file":"ThirdPartyAuth.js","sourceRoot":"","sources":["../../src/common-components/ThirdPartyAuth.jsx"],"names":[],"mappings":"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","sourcesContent":["import { useAppConfig, getSiteConfig, useIntl } from '@openedx/frontend-base';\nimport {\n Hyperlink, Icon,\n} from '@openedx/paragon';\nimport { Institution } from '@openedx/paragon/icons';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport Skeleton from 'react-loading-skeleton';\n\nimport { loginPath, registerPath } from '../constants';\nimport { ENTERPRISE_LOGIN_URL, PENDING_STATE } from '../data/constants';\nimport messages from './messages';\n\nimport {\n RenderInstitutionButton,\n SocialAuthProviders,\n} from './index';\n\n/**\n * This component renders the Single sign-on (SSO) buttons for the providers passed.\n * */\nconst ThirdPartyAuth = (props) => {\n const { formatMessage } = useIntl();\n const {\n providers,\n secondaryProviders,\n currentProvider,\n handleInstitutionLogin,\n thirdPartyAuthApiStatus,\n isLoginPage,\n } = props;\n const isInstitutionAuthActive = !!secondaryProviders.length && !currentProvider;\n const isSocialAuthActive = !!providers.length && !currentProvider;\n const isEnterpriseLoginDisabled = useAppConfig().DISABLE_ENTERPRISE_LOGIN;\n const enterpriseLoginURL = getSiteConfig().lmsBaseUrl + ENTERPRISE_LOGIN_URL;\n const isThirdPartyAuthActive = isSocialAuthActive || (isEnterpriseLoginDisabled && isInstitutionAuthActive);\n\n return (\n <>\n {((isEnterpriseLoginDisabled && isInstitutionAuthActive) || isSocialAuthActive) && (\n <div className=\"mt-4 mb-3 h4\">\n {isLoginPage\n ? formatMessage(messages['login.other.options.heading'])\n : formatMessage(messages['registration.other.options.heading'])}\n </div>\n )}\n {(isLoginPage && !isEnterpriseLoginDisabled && isSocialAuthActive) && (\n <Hyperlink\n className={classNames(\n 'btn btn-link btn-sm text-body p-0',\n { 'mb-0': thirdPartyAuthApiStatus === PENDING_STATE },\n { 'mb-4': thirdPartyAuthApiStatus !== PENDING_STATE },\n )}\n destination={enterpriseLoginURL}\n >\n <Icon src={Institution} className=\"institute-icon\" />\n {formatMessage(messages['enterprise.login.btn.text'])}\n </Hyperlink>\n )}\n\n {thirdPartyAuthApiStatus === PENDING_STATE && isThirdPartyAuthActive ? (\n <div className=\"mt-4\">\n <Skeleton className=\"tpa-skeleton\" height={36} count={2} />\n </div>\n ) : (\n <>\n {(isEnterpriseLoginDisabled && isInstitutionAuthActive) && (\n <RenderInstitutionButton\n onSubmitHandler={handleInstitutionLogin}\n buttonTitle={formatMessage(messages['institution.login.button'])}\n />\n )}\n {isSocialAuthActive && (\n <div className=\"row m-0\">\n <SocialAuthProviders\n socialAuthProviders={providers}\n referrer={isLoginPage ? loginPath : registerPath}\n />\n </div>\n )}\n </>\n )}\n </>\n );\n};\n\nThirdPartyAuth.defaultProps = {\n currentProvider: null,\n providers: [],\n secondaryProviders: [],\n thirdPartyAuthApiStatus: PENDING_STATE,\n isLoginPage: false,\n};\n\nThirdPartyAuth.propTypes = {\n currentProvider: PropTypes.string,\n handleInstitutionLogin: PropTypes.func.isRequired,\n providers: PropTypes.arrayOf(\n 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 secondaryProviders: PropTypes.arrayOf(\n 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 thirdPartyAuthApiStatus: PropTypes.string,\n isLoginPage: PropTypes.bool,\n};\n\nexport default ThirdPartyAuth;\n"]}
|
|
@@ -3,7 +3,7 @@ declare function ThirdPartyAuthAlert(props: any): import("react/jsx-runtime").JS
|
|
|
3
3
|
declare namespace ThirdPartyAuthAlert {
|
|
4
4
|
namespace defaultProps {
|
|
5
5
|
export let currentProvider: string;
|
|
6
|
-
export {
|
|
6
|
+
export { loginPath as referrer };
|
|
7
7
|
}
|
|
8
8
|
namespace propTypes {
|
|
9
9
|
let currentProvider_1: PropTypes.Requireable<string>;
|
|
@@ -11,5 +11,5 @@ declare namespace ThirdPartyAuthAlert {
|
|
|
11
11
|
export let referrer: PropTypes.Requireable<string>;
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
|
-
import {
|
|
14
|
+
import { loginPath } from '../constants';
|
|
15
15
|
import PropTypes from 'prop-types';
|
|
@@ -2,14 +2,14 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
2
2
|
import { getSiteConfig, useIntl } from '@openedx/frontend-base';
|
|
3
3
|
import { Alert } from '@openedx/paragon';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
|
-
import {
|
|
5
|
+
import { loginPath, registerPath } from '../constants';
|
|
6
6
|
import messages from './messages';
|
|
7
7
|
const ThirdPartyAuthAlert = (props) => {
|
|
8
8
|
const { formatMessage } = useIntl();
|
|
9
9
|
const { currentProvider, referrer } = props;
|
|
10
10
|
const platformName = getSiteConfig().siteName;
|
|
11
11
|
let message;
|
|
12
|
-
if (referrer ===
|
|
12
|
+
if (referrer === loginPath) {
|
|
13
13
|
message = formatMessage(messages['login.third.party.auth.account.not.linked'], { currentProvider, platformName });
|
|
14
14
|
}
|
|
15
15
|
else {
|
|
@@ -18,11 +18,11 @@ const ThirdPartyAuthAlert = (props) => {
|
|
|
18
18
|
if (!currentProvider) {
|
|
19
19
|
return null;
|
|
20
20
|
}
|
|
21
|
-
return (_jsxs(_Fragment, { children: [_jsxs(Alert, { id: "tpa-alert", className: referrer ===
|
|
21
|
+
return (_jsxs(_Fragment, { children: [_jsxs(Alert, { id: "tpa-alert", className: referrer === registerPath ? 'alert-success mt-n2 mb-5' : 'alert-warning mt-n2 mb-5', children: [referrer === registerPath ? (_jsx(Alert.Heading, { children: formatMessage(messages['tpa.alert.heading']) })) : null, _jsx("p", { children: message })] }), referrer === registerPath ? (_jsx("h4", { className: "mt-4 mb-4", children: formatMessage(messages['registration.using.tpa.form.heading']) })) : null] }));
|
|
22
22
|
};
|
|
23
23
|
ThirdPartyAuthAlert.defaultProps = {
|
|
24
24
|
currentProvider: '',
|
|
25
|
-
referrer:
|
|
25
|
+
referrer: loginPath,
|
|
26
26
|
};
|
|
27
27
|
ThirdPartyAuthAlert.propTypes = {
|
|
28
28
|
currentProvider: PropTypes.string,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThirdPartyAuthAlert.js","sourceRoot":"","sources":["../../src/common-components/ThirdPartyAuthAlert.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ThirdPartyAuthAlert.js","sourceRoot":"","sources":["../../src/common-components/ThirdPartyAuthAlert.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,EAAE;IACpC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC5C,MAAM,YAAY,GAAG,aAAa,EAAE,CAAC,QAAQ,CAAC;IAC9C,IAAI,OAAO,CAAC;IAEZ,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,2CAA2C,CAAC,EAAE,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC,CAAC;IACpH,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,8CAA8C,CAAC,EAAE,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC,CAAC;IACvH,CAAC;IAED,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,8BACE,MAAC,KAAK,IAAC,EAAE,EAAC,WAAW,EAAC,SAAS,EAAE,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,0BAA0B,aACjH,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,CAC3B,KAAC,KAAK,CAAC,OAAO,cAAE,aAAa,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,GAAiB,CAC9E,CAAC,CAAC,CAAC,IAAI,EACR,sBAAI,OAAO,GAAK,IACV,EACP,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,CAC3B,aAAI,SAAS,EAAC,WAAW,YAAE,aAAa,CAAC,QAAQ,CAAC,qCAAqC,CAAC,CAAC,GAAM,CAChG,CAAC,CAAC,CAAC,IAAI,IACP,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,mBAAmB,CAAC,YAAY,GAAG;IACjC,eAAe,EAAE,EAAE;IACnB,QAAQ,EAAE,SAAS;CACpB,CAAC;AAEF,mBAAmB,CAAC,SAAS,GAAG;IAC9B,eAAe,EAAE,SAAS,CAAC,MAAM;IACjC,QAAQ,EAAE,SAAS,CAAC,MAAM;CAC3B,CAAC;AAEF,eAAe,mBAAmB,CAAC","sourcesContent":["import { getSiteConfig, useIntl } from '@openedx/frontend-base';\nimport { Alert } from '@openedx/paragon';\nimport PropTypes from 'prop-types';\n\nimport { loginPath, registerPath } from '../constants';\nimport messages from './messages';\n\nconst ThirdPartyAuthAlert = (props) => {\n const { formatMessage } = useIntl();\n const { currentProvider, referrer } = props;\n const platformName = getSiteConfig().siteName;\n let message;\n\n if (referrer === loginPath) {\n message = formatMessage(messages['login.third.party.auth.account.not.linked'], { currentProvider, platformName });\n } else {\n message = formatMessage(messages['register.third.party.auth.account.not.linked'], { currentProvider, platformName });\n }\n\n if (!currentProvider) {\n return null;\n }\n\n return (\n <>\n <Alert id=\"tpa-alert\" className={referrer === registerPath ? 'alert-success mt-n2 mb-5' : 'alert-warning mt-n2 mb-5'}>\n {referrer === registerPath ? (\n <Alert.Heading>{formatMessage(messages['tpa.alert.heading'])}</Alert.Heading>\n ) : null}\n <p>{message}</p>\n </Alert>\n {referrer === registerPath ? (\n <h4 className=\"mt-4 mb-4\">{formatMessage(messages['registration.using.tpa.form.heading'])}</h4>\n ) : null}\n </>\n );\n};\n\nThirdPartyAuthAlert.defaultProps = {\n currentProvider: '',\n referrer: loginPath,\n};\n\nThirdPartyAuthAlert.propTypes = {\n currentProvider: PropTypes.string,\n referrer: PropTypes.string,\n};\n\nexport default ThirdPartyAuthAlert;\n"]}
|