@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.
Files changed (259) hide show
  1. package/dist/Main.js +1 -3
  2. package/dist/Main.js.map +1 -1
  3. package/dist/app.js +0 -2
  4. package/dist/app.js.map +1 -1
  5. package/dist/common-components/EmbeddedRegistrationRoute.js +2 -2
  6. package/dist/common-components/EmbeddedRegistrationRoute.js.map +1 -1
  7. package/dist/common-components/EnterpriseSSO.js +6 -3
  8. package/dist/common-components/EnterpriseSSO.js.map +1 -1
  9. package/dist/common-components/PasswordField.d.ts +17 -9
  10. package/dist/common-components/PasswordField.js +10 -6
  11. package/dist/common-components/PasswordField.js.map +1 -1
  12. package/dist/common-components/RedirectLogistration.js +7 -3
  13. package/dist/common-components/RedirectLogistration.js.map +1 -1
  14. package/dist/common-components/SocialAuthProviders.d.ts +2 -2
  15. package/dist/common-components/SocialAuthProviders.js +5 -4
  16. package/dist/common-components/SocialAuthProviders.js.map +1 -1
  17. package/dist/common-components/ThirdPartyAuth.js +3 -2
  18. package/dist/common-components/ThirdPartyAuth.js.map +1 -1
  19. package/dist/common-components/ThirdPartyAuthAlert.d.ts +2 -2
  20. package/dist/common-components/ThirdPartyAuthAlert.js +4 -4
  21. package/dist/common-components/ThirdPartyAuthAlert.js.map +1 -1
  22. package/dist/common-components/UnAuthOnlyRoute.js +5 -4
  23. package/dist/common-components/UnAuthOnlyRoute.js.map +1 -1
  24. package/dist/common-components/components/ThirdPartyAuthContext.d.ts +31 -0
  25. package/dist/common-components/components/ThirdPartyAuthContext.js +84 -0
  26. package/dist/common-components/components/ThirdPartyAuthContext.js.map +1 -0
  27. package/dist/common-components/data/api.d.ts +6 -0
  28. package/dist/common-components/data/api.js +26 -0
  29. package/dist/common-components/data/api.js.map +1 -0
  30. package/dist/common-components/data/apiHook.d.ts +9 -0
  31. package/dist/common-components/data/apiHook.js +14 -0
  32. package/dist/common-components/data/apiHook.js.map +1 -0
  33. package/dist/common-components/data/queryKeys.d.ts +4 -0
  34. package/dist/common-components/data/queryKeys.js +6 -0
  35. package/dist/common-components/data/queryKeys.js.map +1 -0
  36. package/dist/common-components/index.d.ts +0 -3
  37. package/dist/common-components/index.js +0 -3
  38. package/dist/common-components/index.js.map +1 -1
  39. package/dist/constants.d.ts +13 -0
  40. package/dist/constants.js +15 -0
  41. package/dist/constants.js.map +1 -1
  42. package/dist/data/constants.d.ts +0 -8
  43. package/dist/data/constants.js +0 -9
  44. package/dist/data/constants.js.map +1 -1
  45. package/dist/data/utils/dataUtils.d.ts +1 -0
  46. package/dist/data/utils/dataUtils.js +14 -0
  47. package/dist/data/utils/dataUtils.js.map +1 -1
  48. package/dist/data/utils/index.d.ts +1 -2
  49. package/dist/data/utils/index.js +1 -2
  50. package/dist/data/utils/index.js.map +1 -1
  51. package/dist/forgot-password/ForgotPasswordPage.d.ts +2 -36
  52. package/dist/forgot-password/ForgotPasswordPage.js +45 -44
  53. package/dist/forgot-password/ForgotPasswordPage.js.map +1 -1
  54. package/dist/forgot-password/data/api.d.ts +2 -0
  55. package/dist/forgot-password/data/{service.js → api.js} +13 -14
  56. package/dist/forgot-password/data/api.js.map +1 -0
  57. package/dist/forgot-password/data/apiHook.d.ts +16 -0
  58. package/dist/forgot-password/data/apiHook.js +26 -0
  59. package/dist/forgot-password/data/apiHook.js.map +1 -0
  60. package/dist/forgot-password/index.d.ts +0 -4
  61. package/dist/forgot-password/index.js +0 -4
  62. package/dist/forgot-password/index.js.map +1 -1
  63. package/dist/forgot-password/messages.js +1 -1
  64. package/dist/forgot-password/messages.js.map +1 -1
  65. package/dist/i18n/index.d.ts +1 -25
  66. package/dist/i18n/index.js +1 -25
  67. package/dist/i18n/index.js.map +1 -1
  68. package/dist/login/ChangePasswordPrompt.js +11 -5
  69. package/dist/login/ChangePasswordPrompt.js.map +1 -1
  70. package/dist/login/LoginPage.d.ts +12 -10
  71. package/dist/login/LoginPage.js +85 -127
  72. package/dist/login/LoginPage.js.map +1 -1
  73. package/dist/login/components/LoginContext.d.ts +21 -0
  74. package/dist/login/components/LoginContext.js +28 -0
  75. package/dist/login/components/LoginContext.js.map +1 -0
  76. package/dist/login/data/api.d.ts +2 -0
  77. package/dist/login/data/api.js +27 -0
  78. package/dist/login/data/api.js.map +1 -0
  79. package/dist/login/data/apiHook.d.ts +13 -0
  80. package/dist/login/data/apiHook.js +57 -0
  81. package/dist/login/data/apiHook.js.map +1 -0
  82. package/dist/login/index.d.ts +0 -3
  83. package/dist/login/index.js +0 -3
  84. package/dist/login/index.js.map +1 -1
  85. package/dist/logistration/Logistration.d.ts +5 -32
  86. package/dist/logistration/Logistration.js +28 -54
  87. package/dist/logistration/Logistration.js.map +1 -1
  88. package/dist/progressive-profiling/ProgressiveProfiling.d.ts +2 -46
  89. package/dist/progressive-profiling/ProgressiveProfiling.js +47 -71
  90. package/dist/progressive-profiling/ProgressiveProfiling.js.map +1 -1
  91. package/dist/progressive-profiling/ProgressiveProfilingPageModal.js +8 -1
  92. package/dist/progressive-profiling/ProgressiveProfilingPageModal.js.map +1 -1
  93. package/dist/progressive-profiling/components/ProgressiveProfilingContext.d.ts +18 -0
  94. package/dist/progressive-profiling/components/ProgressiveProfilingContext.js +52 -0
  95. package/dist/progressive-profiling/components/ProgressiveProfilingContext.js.map +1 -0
  96. package/dist/progressive-profiling/data/api.d.ts +2 -0
  97. package/dist/progressive-profiling/data/{service.js → api.js} +11 -12
  98. package/dist/progressive-profiling/data/api.js.map +1 -0
  99. package/dist/progressive-profiling/data/apiHook.d.ts +10 -0
  100. package/dist/progressive-profiling/data/apiHook.js +36 -0
  101. package/dist/progressive-profiling/data/apiHook.js.map +1 -0
  102. package/dist/progressive-profiling/index.d.ts +0 -2
  103. package/dist/progressive-profiling/index.js +0 -2
  104. package/dist/progressive-profiling/index.js.map +1 -1
  105. package/dist/register/RegistrationFields/CountryField/CountryField.d.ts +1 -1
  106. package/dist/register/RegistrationFields/CountryField/CountryField.js +5 -7
  107. package/dist/register/RegistrationFields/CountryField/CountryField.js.map +1 -1
  108. package/dist/register/RegistrationFields/EmailField/EmailField.js +17 -9
  109. package/dist/register/RegistrationFields/EmailField/EmailField.js.map +1 -1
  110. package/dist/register/RegistrationFields/NameField/NameField.js +14 -7
  111. package/dist/register/RegistrationFields/NameField/NameField.js.map +1 -1
  112. package/dist/register/RegistrationFields/NameField/validator.d.ts +1 -0
  113. package/dist/register/RegistrationFields/NameField/validator.js +4 -0
  114. package/dist/register/RegistrationFields/NameField/validator.js.map +1 -1
  115. package/dist/register/RegistrationFields/UsernameField/UsernameField.js +20 -14
  116. package/dist/register/RegistrationFields/UsernameField/UsernameField.js.map +1 -1
  117. package/dist/register/RegistrationPage.d.ts +1 -1
  118. package/dist/register/RegistrationPage.js +102 -59
  119. package/dist/register/RegistrationPage.js.map +1 -1
  120. package/dist/register/components/RegisterContext.d.ts +8 -0
  121. package/dist/register/components/RegisterContext.js +167 -0
  122. package/dist/register/components/RegisterContext.js.map +1 -0
  123. package/dist/register/components/RegistrationFailure.js +4 -1
  124. package/dist/register/components/RegistrationFailure.js.map +1 -1
  125. package/dist/register/data/api.d.ts +9 -0
  126. package/dist/register/data/api.js +45 -0
  127. package/dist/register/data/api.js.map +1 -0
  128. package/dist/register/data/apiHook.d.ts +33 -0
  129. package/dist/register/data/apiHook.js +66 -0
  130. package/dist/register/data/apiHook.js.map +1 -0
  131. package/dist/register/data/constants.d.ts +1 -0
  132. package/dist/register/data/constants.js +1 -0
  133. package/dist/register/data/constants.js.map +1 -1
  134. package/dist/register/index.d.ts +0 -2
  135. package/dist/register/index.js +0 -3
  136. package/dist/register/index.js.map +1 -1
  137. package/dist/register/messages.d.ts +10 -0
  138. package/dist/register/messages.js +10 -0
  139. package/dist/register/messages.js.map +1 -1
  140. package/dist/register/types.d.ts +74 -0
  141. package/dist/register/types.js +2 -0
  142. package/dist/register/types.js.map +1 -0
  143. package/dist/reset-password/ResetPasswordPage.d.ts +2 -32
  144. package/dist/reset-password/ResetPasswordPage.js +90 -58
  145. package/dist/reset-password/ResetPasswordPage.js.map +1 -1
  146. package/dist/reset-password/data/api.d.ts +4 -0
  147. package/dist/reset-password/data/api.js +57 -0
  148. package/dist/reset-password/data/api.js.map +1 -0
  149. package/dist/reset-password/data/apiHook.d.ts +31 -0
  150. package/dist/reset-password/data/apiHook.js +74 -0
  151. package/dist/reset-password/data/apiHook.js.map +1 -0
  152. package/dist/reset-password/index.d.ts +0 -4
  153. package/dist/reset-password/index.js +0 -4
  154. package/dist/reset-password/index.js.map +1 -1
  155. package/dist/routes.d.ts +1 -0
  156. package/dist/routes.js +15 -14
  157. package/dist/routes.js.map +1 -1
  158. package/dist/sass/_registration.scss +8 -10
  159. package/dist/slots/LoginComponentSlot/index.d.ts +12 -0
  160. package/dist/slots/LoginComponentSlot/index.js +11 -0
  161. package/dist/slots/LoginComponentSlot/index.js.map +1 -0
  162. package/package.json +25 -14
  163. package/dist/common-components/data/actions.d.ts +0 -26
  164. package/dist/common-components/data/actions.js +0 -22
  165. package/dist/common-components/data/actions.js.map +0 -1
  166. package/dist/common-components/data/reducers.d.ts +0 -62
  167. package/dist/common-components/data/reducers.js +0 -39
  168. package/dist/common-components/data/reducers.js.map +0 -1
  169. package/dist/common-components/data/sagas.d.ts +0 -12
  170. package/dist/common-components/data/sagas.js +0 -21
  171. package/dist/common-components/data/sagas.js.map +0 -1
  172. package/dist/common-components/data/selectors.d.ts +0 -98
  173. package/dist/common-components/data/selectors.js +0 -11
  174. package/dist/common-components/data/selectors.js.map +0 -1
  175. package/dist/common-components/data/service.d.ts +0 -5
  176. package/dist/common-components/data/service.js +0 -31
  177. package/dist/common-components/data/service.js.map +0 -1
  178. package/dist/data/configureStore.d.ts +0 -3
  179. package/dist/data/configureStore.js +0 -24
  180. package/dist/data/configureStore.js.map +0 -1
  181. package/dist/data/reducers.d.ts +0 -254
  182. package/dist/data/reducers.js +0 -17
  183. package/dist/data/reducers.js.map +0 -1
  184. package/dist/data/sagas.d.ts +0 -1
  185. package/dist/data/sagas.js +0 -18
  186. package/dist/data/sagas.js.map +0 -1
  187. package/dist/data/utils/reduxUtils.d.ts +0 -15
  188. package/dist/data/utils/reduxUtils.js +0 -29
  189. package/dist/data/utils/reduxUtils.js.map +0 -1
  190. package/dist/forgot-password/data/actions.d.ts +0 -30
  191. package/dist/forgot-password/data/actions.js +0 -26
  192. package/dist/forgot-password/data/actions.js.map +0 -1
  193. package/dist/forgot-password/data/reducers.d.ts +0 -13
  194. package/dist/forgot-password/data/reducers.js +0 -46
  195. package/dist/forgot-password/data/reducers.js.map +0 -1
  196. package/dist/forgot-password/data/sagas.d.ts +0 -4
  197. package/dist/forgot-password/data/sagas.js +0 -28
  198. package/dist/forgot-password/data/sagas.js.map +0 -1
  199. package/dist/forgot-password/data/selectors.d.ts +0 -23
  200. package/dist/forgot-password/data/selectors.js +0 -5
  201. package/dist/forgot-password/data/selectors.js.map +0 -1
  202. package/dist/forgot-password/data/service.d.ts +0 -1
  203. package/dist/forgot-password/data/service.js.map +0 -1
  204. package/dist/login/data/actions.d.ts +0 -36
  205. package/dist/login/data/actions.js +0 -32
  206. package/dist/login/data/actions.js.map +0 -1
  207. package/dist/login/data/reducers.d.ts +0 -82
  208. package/dist/login/data/reducers.js +0 -44
  209. package/dist/login/data/reducers.js.map +0 -1
  210. package/dist/login/data/sagas.d.ts +0 -10
  211. package/dist/login/data/sagas.js +0 -34
  212. package/dist/login/data/sagas.js.map +0 -1
  213. package/dist/login/data/service.d.ts +0 -4
  214. package/dist/login/data/service.js +0 -32
  215. package/dist/login/data/service.js.map +0 -1
  216. package/dist/progressive-profiling/data/actions.d.ts +0 -19
  217. package/dist/progressive-profiling/data/actions.js +0 -18
  218. package/dist/progressive-profiling/data/actions.js.map +0 -1
  219. package/dist/progressive-profiling/data/reducers.d.ts +0 -22
  220. package/dist/progressive-profiling/data/reducers.js +0 -23
  221. package/dist/progressive-profiling/data/reducers.js.map +0 -1
  222. package/dist/progressive-profiling/data/sagas.d.ts +0 -4
  223. package/dist/progressive-profiling/data/sagas.js +0 -17
  224. package/dist/progressive-profiling/data/sagas.js.map +0 -1
  225. package/dist/progressive-profiling/data/selectors.d.ts +0 -39
  226. package/dist/progressive-profiling/data/selectors.js +0 -9
  227. package/dist/progressive-profiling/data/selectors.js.map +0 -1
  228. package/dist/progressive-profiling/data/service.d.ts +0 -1
  229. package/dist/progressive-profiling/data/service.js.map +0 -1
  230. package/dist/register/data/actions.d.ts +0 -80
  231. package/dist/register/data/actions.js +0 -69
  232. package/dist/register/data/actions.js.map +0 -1
  233. package/dist/register/data/reducers.d.ts +0 -237
  234. package/dist/register/data/reducers.js +0 -86
  235. package/dist/register/data/reducers.js.map +0 -1
  236. package/dist/register/data/sagas.d.ts +0 -19
  237. package/dist/register/data/sagas.js +0 -45
  238. package/dist/register/data/sagas.js.map +0 -1
  239. package/dist/register/data/selectors.d.ts +0 -26
  240. package/dist/register/data/selectors.js +0 -25
  241. package/dist/register/data/selectors.js.map +0 -1
  242. package/dist/register/data/service.d.ts +0 -8
  243. package/dist/register/data/service.js +0 -46
  244. package/dist/register/data/service.js.map +0 -1
  245. package/dist/reset-password/data/actions.d.ts +0 -56
  246. package/dist/reset-password/data/actions.js +0 -41
  247. package/dist/reset-password/data/actions.js.map +0 -1
  248. package/dist/reset-password/data/reducers.d.ts +0 -19
  249. package/dist/reset-password/data/reducers.js +0 -25
  250. package/dist/reset-password/data/reducers.js.map +0 -1
  251. package/dist/reset-password/data/sagas.d.ts +0 -7
  252. package/dist/reset-password/data/sagas.js +0 -63
  253. package/dist/reset-password/data/sagas.js.map +0 -1
  254. package/dist/reset-password/data/selectors.d.ts +0 -23
  255. package/dist/reset-password/data/selectors.js +0 -5
  256. package/dist/reset-password/data/selectors.js.map +0 -1
  257. package/dist/reset-password/data/service.d.ts +0 -3
  258. package/dist/reset-password/data/service.js +0 -62
  259. 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(ReduxProvider, { store: configureStore(), children: _jsx(Outlet, {}) }) }));
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,QAAQ,IAAI,aAAa,EAAE,MAAM,aAAa,CAAC;AACxD,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;AAC7B,OAAO,cAAc,MAAM,uBAAuB,CAAC;AAEnD,OAAO,oBAAoB,CAAC;AAE5B,aAAa,EAAE,CAAC;AAEhB,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,CACjB,KAAC,kBAAkB,IAAC,KAAK,EAAE,KAAK,YAC9B,KAAC,aAAa,IAAC,KAAK,EAAE,cAAc,EAAE,YACpC,KAAC,MAAM,KAAG,GACI,GACG,CACtB,CAAC;AAEF,eAAe,IAAI,CAAC","sourcesContent":["import { Provider as ReduxProvider } from 'react-redux';\nimport { Outlet } from 'react-router-dom';\nimport { CurrentAppProvider } from '@openedx/frontend-base';\n\nimport { appId } from './constants';\nimport {\n registerIcons,\n} from './common-components';\nimport configureStore from './data/configureStore';\n\nimport './sass/_style.scss';\n\nregisterIcons();\n\nconst Main = () => (\n <CurrentAppProvider appId={appId}>\n <ReduxProvider store={configureStore()}>\n <Outlet />\n </ReduxProvider>\n </CurrentAppProvider>\n);\n\nexport default Main;\n"]}
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
@@ -1,10 +1,8 @@
1
1
  import { appId } from './constants';
2
2
  import routes from './routes';
3
- import messages from './i18n';
4
3
  const app = {
5
4
  appId,
6
5
  routes,
7
- messages,
8
6
  config: {
9
7
  ACTIVATION_EMAIL_SUPPORT_LINK: null,
10
8
  ALLOW_PUBLIC_ACCOUNT_CREATION: true,
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;AAC9B,OAAO,QAAQ,MAAM,QAAQ,CAAC;AAE9B,MAAM,GAAG,GAAQ;IACf,KAAK;IACL,MAAM;IACN,QAAQ;IACR,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';\nimport messages from './i18n';\n\nconst app: App = {\n appId,\n routes,\n messages,\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
+ {"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 { PAGE_NOT_FOUND } from '../data/constants';
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: PAGE_NOT_FOUND, replace: true });
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,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,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,cAAc,EAAE,OAAO,SAAG,CAAC;AAClD,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 { PAGE_NOT_FOUND } from '../data/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={PAGE_NOT_FOUND} replace />;\n};\n\nEmbeddedRegistrationRoute.propTypes = {\n children: PropTypes.node.isRequired,\n};\n\nexport default EmbeddedRegistrationRoute;\n"]}
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 { LOGIN_PAGE, SUPPORTED_ICON_CLASSES } from '../data/constants';
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
- window.location.href = LOGIN_PAGE;
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":"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","sourcesContent":["import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { useAppConfig, getSiteConfig, 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';\n\nimport { LOGIN_PAGE, 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 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 window.location.href = LOGIN_PAGE;\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"]}
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
- dispatch(fetchRealtimeValidations({ password: passwordValue }));
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
- dispatch(clearRegistrationBackendError('password'));
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":"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","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 { AUTHN_PROGRESSIVE_PROFILING, REDIRECT, } from '../data/constants';
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: AUTHN_PROGRESSIVE_PROFILING, state: {
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;AACrE,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EACL,2BAA2B,EAAE,QAAQ,GACtC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,EAAE;IACrC,MAAM,EACJ,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,kCAAkC,EAClC,OAAO,EACP,cAAc,EACd,cAAc,EACd,MAAM,EACN,oBAAoB,EACpB,IAAI,GACL,GAAG,KAAK,CAAC;IACV,IAAI,gBAAgB,GAAG,EAAE,CAAC;IAE1B,IAAI,OAAO,EAAE,CAAC;QACZ,yEAAyE;QACzE,2FAA2F;QAC3F,0FAA0F;QAC1F,gEAAgE;QAChE,IAAI,aAAa,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAC1D,gBAAgB,GAAG,aAAa,EAAE,CAAC,UAAU,GAAG,aAAa,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,gBAAgB,GAAG,WAAW,CAAC;QACjC,CAAC;QAED,kEAAkE;QAClE,IAAI,kCAAkC,EAAE,CAAC;YACvC,sCAAsC;YACtC,SAAS,CAAC,wBAAwB,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,qBAAqB,CAAC,CAAC;YAEhF,IAAI,oBAAoB,EAAE,CAAC;gBACzB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;oBACxB,MAAM,EAAE,QAAQ;oBAChB,WAAW,EAAE,YAAY,EAAE,CAAC,8BAA8B;iBAC3D,EAAE,IAAI,CAAC,CAAC;gBACT,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,kBAAkB,GAAG,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC;YACtE,OAAO,CACL,KAAC,QAAQ,IACP,EAAE,EAAE,2BAA2B,EAC/B,KAAK,EAAE;oBACL,kBAAkB;oBAClB,cAAc;oBACd,iBAAiB;iBAClB,EACD,OAAO,SACP,CACH,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC1C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,oBAAoB,CAAC,YAAY,GAAG;IAClC,iBAAiB,EAAE,EAAE;IACrB,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,IAAI;IACnB,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,EAAE;IACf,kCAAkC,EAAE,KAAK;IACzC,cAAc,EAAE,EAAE;IAClB,MAAM,EAAE,IAAI;IACZ,oBAAoB,EAAE,KAAK;IAC3B,IAAI,EAAE,EAAE;CACT,CAAC;AAEF,oBAAoB,CAAC,SAAS,GAAG;IAC/B,iBAAiB,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;IACtC,cAAc,EAAE,SAAS,CAAC,MAAM;IAChC,aAAa,EAAE,SAAS,CAAC,MAAM;IAC/B,OAAO,EAAE,SAAS,CAAC,IAAI;IACvB,WAAW,EAAE,SAAS,CAAC,MAAM;IAC7B,kCAAkC,EAAE,SAAS,CAAC,IAAI;IAClD,cAAc,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;IACnC,MAAM,EAAE,SAAS,CAAC,MAAM;IACxB,oBAAoB,EAAE,SAAS,CAAC,IAAI;IACpC,IAAI,EAAE,SAAS,CAAC,MAAM;CACvB,CAAC;AAEF,eAAe,oBAAoB,CAAC","sourcesContent":["import { useAppConfig, getSiteConfig } from '@openedx/frontend-base';\nimport PropTypes from 'prop-types';\nimport { Navigate } from 'react-router-dom';\n\nimport {\n AUTHN_PROGRESSIVE_PROFILING, REDIRECT,\n} 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={AUTHN_PROGRESSIVE_PROFILING}\n state={{\n registrationResult,\n optionalFields,\n authenticatedUser,\n }}\n replace\n />\n );\n }\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"]}
1
+ {"version":3,"file":"RedirectLogistration.js","sourceRoot":"","sources":["../../src/common-components/RedirectLogistration.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACxF,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,EAAE;IACrC,MAAM,EACJ,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,kCAAkC,EAClC,OAAO,EACP,cAAc,EACd,cAAc,EACd,MAAM,EACN,oBAAoB,EACpB,IAAI,GACL,GAAG,KAAK,CAAC;IACV,IAAI,gBAAgB,GAAG,EAAE,CAAC;IAE1B,IAAI,OAAO,EAAE,CAAC;QACZ,yEAAyE;QACzE,2FAA2F;QAC3F,0FAA0F;QAC1F,gEAAgE;QAChE,IAAI,aAAa,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAC1D,gBAAgB,GAAG,aAAa,EAAE,CAAC,UAAU,GAAG,aAAa,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,gBAAgB,GAAG,WAAW,CAAC;QACjC,CAAC;QAED,kEAAkE;QAClE,IAAI,kCAAkC,EAAE,CAAC;YACvC,sCAAsC;YACtC,SAAS,CAAC,wBAAwB,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,qBAAqB,CAAC,CAAC;YAEhF,IAAI,oBAAoB,EAAE,CAAC;gBACzB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;oBACxB,MAAM,EAAE,QAAQ;oBAChB,WAAW,EAAE,YAAY,EAAE,CAAC,8BAA8B;iBAC3D,EAAE,IAAI,CAAC,CAAC;gBACT,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,kBAAkB,GAAG,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC;YACtE,OAAO,CACL,KAAC,QAAQ,IACP,EAAE,EAAE,iBAAiB,CAAC,WAAW,CAAC,EAClC,KAAK,EAAE;oBACL,kBAAkB;oBAClB,cAAc;oBACd,iBAAiB;iBAClB,EACD,OAAO,SACP,CACH,CAAC;QACJ,CAAC;QAED,IAAI,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,OAAO,KAAC,QAAQ,IAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO,SAAG,CAAC;QACpD,CAAC;QACD,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC1C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,oBAAoB,CAAC,YAAY,GAAG;IAClC,iBAAiB,EAAE,EAAE;IACrB,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,IAAI;IACnB,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,EAAE;IACf,kCAAkC,EAAE,KAAK;IACzC,cAAc,EAAE,EAAE;IAClB,MAAM,EAAE,IAAI;IACZ,oBAAoB,EAAE,KAAK;IAC3B,IAAI,EAAE,EAAE;CACT,CAAC;AAEF,oBAAoB,CAAC,SAAS,GAAG;IAC/B,iBAAiB,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;IACtC,cAAc,EAAE,SAAS,CAAC,MAAM;IAChC,aAAa,EAAE,SAAS,CAAC,MAAM;IAC/B,OAAO,EAAE,SAAS,CAAC,IAAI;IACvB,WAAW,EAAE,SAAS,CAAC,MAAM;IAC7B,kCAAkC,EAAE,SAAS,CAAC,IAAI;IAClD,cAAc,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;IACnC,MAAM,EAAE,SAAS,CAAC,MAAM;IACxB,oBAAoB,EAAE,SAAS,CAAC,IAAI;IACpC,IAAI,EAAE,SAAS,CAAC,MAAM;CACvB,CAAC;AAEF,eAAe,oBAAoB,CAAC","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 { LOGIN_PAGE as referrer };
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 { LOGIN_PAGE } from '../data/constants';
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 { LOGIN_PAGE, SUPPORTED_ICON_CLASSES } from '../data/constants';
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 === LOGIN_PAGE ? 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
+ 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 === LOGIN_PAGE
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: LOGIN_PAGE,
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":"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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 { LOGIN_PAGE, 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 === LOGIN_PAGE ? 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 === LOGIN_PAGE\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: LOGIN_PAGE,\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"]}
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 { ENTERPRISE_LOGIN_URL, LOGIN_PAGE, PENDING_STATE, REGISTER_PAGE, } from '../data/constants';
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 ? LOGIN_PAGE : REGISTER_PAGE }) }))] }))] }));
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":"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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 {\n ENTERPRISE_LOGIN_URL, LOGIN_PAGE, PENDING_STATE, REGISTER_PAGE,\n} 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 ? LOGIN_PAGE : REGISTER_PAGE}\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"]}
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 { LOGIN_PAGE as referrer };
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 { LOGIN_PAGE } from '../data/constants';
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 { LOGIN_PAGE, REGISTER_PAGE } from '../data/constants';
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 === LOGIN_PAGE) {
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 === REGISTER_PAGE ? 'alert-success mt-n2 mb-5' : 'alert-warning mt-n2 mb-5', children: [referrer === REGISTER_PAGE ? (_jsx(Alert.Heading, { children: formatMessage(messages['tpa.alert.heading']) })) : null, _jsx("p", { children: message })] }), referrer === REGISTER_PAGE ? (_jsx("h4", { className: "mt-4 mb-4", children: formatMessage(messages['registration.using.tpa.form.heading']) })) : null] }));
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: LOGIN_PAGE,
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,UAAU,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC9D,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,UAAU,EAAE,CAAC;QAC5B,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,aAAa,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,0BAA0B,aAClH,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,CAC5B,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,aAAa,CAAC,CAAC,CAAC,CAC5B,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,UAAU;CACrB,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 { LOGIN_PAGE, REGISTER_PAGE } from '../data/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 === LOGIN_PAGE) {\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 === REGISTER_PAGE ? 'alert-success mt-n2 mb-5' : 'alert-warning mt-n2 mb-5'}>\n {referrer === REGISTER_PAGE ? (\n <Alert.Heading>{formatMessage(messages['tpa.alert.heading'])}</Alert.Heading>\n ) : null}\n <p>{message}</p>\n </Alert>\n {referrer === REGISTER_PAGE ? (\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: LOGIN_PAGE,\n};\n\nThirdPartyAuthAlert.propTypes = {\n currentProvider: PropTypes.string,\n referrer: PropTypes.string,\n};\n\nexport default ThirdPartyAuthAlert;\n"]}
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"]}