@openedx/frontend-app-authn 1.0.0-alpha.9 → 2.0.0-alpha.1

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/README.rst CHANGED
@@ -2,116 +2,198 @@
2
2
  frontend-app-authn
3
3
  ##################
4
4
 
5
- |Build Status| |ci-badge| |Codecov| |semantic-release|
5
+ |license-badge| |status-badge| |ci-badge| |codecov-badge| |semantic-release|
6
+
7
+ Authn is a `frontend-base`_ application: a library that plugs into the Open edX
8
+ frontend shell, rather than a standalone micro-frontend bundled with its own
9
+ webpack build.
10
+
11
+ .. _frontend-base: https://github.com/openedx/frontend-base
6
12
 
7
13
  ********
8
14
  Purpose
9
15
  ********
10
16
 
11
- This is a micro-frontend application responsible for the login, registration and password reset functionality.
12
-
13
- **What is the domain of this MFE?**
17
+ This app is responsible for the login, registration and password reset
18
+ functionality, and serves:
14
19
 
15
20
  - Register page
16
-
17
21
  - Login page
18
-
19
22
  - Forgot password page
20
-
21
23
  - Reset password page
22
-
23
24
  - Progressive profiling page
24
25
 
26
+ *********************
27
+ Branches and Releases
28
+ *********************
29
+
30
+ This app is published to NPM by ``semantic-release``, and its branches follow
31
+ `OEP-10 ADR 0002`_:
32
+
33
+ ``master``
34
+ Unstable. Every merge publishes a prerelease on the ``alpha`` dist-tag.
35
+ Breaking changes land here with no DEPR process and no warning, so it is not
36
+ supported in production. All changes, including bug fixes, should target this
37
+ branch first.
38
+
39
+ ``stable``
40
+ Carries the newest stable major and owns the ``latest`` dist-tag. Changes
41
+ arrive here as backports from ``master``, and no breaking change lands after
42
+ publication.
43
+
44
+ ``n.x`` and ``n.m.x``
45
+ Maintenance branches for majors and minors that ``stable`` has moved past.
46
+ Each owns the dist-tag matching its own name, so consumers select a maintained
47
+ line by semver range, e.g. ``"1.x"``.
48
+
49
+ ``stable`` is cut, and ``1.0.0`` is the current stable release. Both
50
+ ``.releaserc`` and the ``Release CI`` workflow know the whole layout, including
51
+ the maintenance branch patterns, so a new line starts publishing as soon as it
52
+ is pushed.
53
+
54
+ This repository is no longer branched or tagged for Open edX releases in its own
55
+ right. It participates by published version instead, per `OEP-10 ADR 0003`_.
56
+
57
+ The micro-frontend this app replaces goes on living on `legacy-mfe`_, which is
58
+ where any further ``release/RELEASENAME`` branches for it are cut, for as long as
59
+ a supported release still ships it. Teak, Ulmo and Verawood all do.
60
+
61
+ .. _OEP-10 ADR 0002: https://docs.openedx.org/projects/openedx-proposals/en/latest/processes/oep-0010/decisions/0002-frontend-stable-branches.html
62
+ .. _OEP-10 ADR 0003: https://docs.openedx.org/projects/openedx-proposals/en/latest/processes/oep-0010/decisions/0003-frontend-release-strategy.html
63
+ .. _legacy-mfe: https://github.com/openedx/frontend-app-authn/tree/legacy-mfe
64
+
25
65
  ***************
26
66
  Getting Started
27
67
  ***************
28
68
 
29
- Installation
30
- ============
69
+ Prerequisites
70
+ =============
31
71
 
32
- `Tutor`_ is currently recommended as a development environment for your new MFE. Please refer to the `relevant tutor-mfe documentation`_ to get started using it.
72
+ A running Open edX instance is needed to serve this app's backend APIs.
73
+ `Tutor`_ in development mode is the usual choice, and ``site.config.dev.tsx``
74
+ already points at its default hostnames.
75
+
76
+ Unlike a micro-frontend, this app is neither built nor served by ``tutor-mfe``.
77
+ The dev server below runs on the host. Note that ``tutor-mfe`` v22 and later do
78
+ ship this app as a frontend-base application for *deployment*, disabled by
79
+ default; see `Frontend apps`_ in its README to enable it.
33
80
 
34
81
  .. _Tutor: https://github.com/overhangio/tutor
35
- .. _relevant tutor-mfe documentation: https://github.com/overhangio/tutor-mfe?tab=readme-ov-file#mfe-development
82
+ .. _Frontend apps: https://github.com/overhangio/tutor-mfe#frontend-apps
36
83
 
37
- Environment Variables/Setup Notes
38
- =================================
84
+ Cloning and Startup
85
+ ===================
39
86
 
40
- This MFE is configured via environment variables supplied at build time. All micro-frontends have a shared set of required environment variables, as documented in the Open edX Developer Guide under `Required Environment Variables <https://github.com/overhangio/tutor-mfe?tab=readme-ov-file#mfe-development>`__.
87
+ 1. Clone the repo:
41
88
 
42
- The authentication micro-frontend also requires the following additional variable:
89
+ ``git clone https://github.com/openedx/frontend-app-authn.git``
43
90
 
44
- .. list-table:: Environment Variables
45
- :widths: 30 50 20
46
- :header-rows: 1
91
+ 2. Use the version of Node specified in the ``.nvmrc`` file.
47
92
 
48
- * - Name
49
- - Description / Usage
50
- - Example
93
+ Using other major versions of Node *may* work, but is unsupported. This
94
+ repository includes an ``.nvmrc`` file to help set the correct Node version
95
+ via `nvm <https://github.com/nvm-sh/nvm>`_.
51
96
 
52
- * - ``LOGIN_ISSUE_SUPPORT_LINK``
53
- - The fully-qualified URL to the login issue support page in the target environment.
54
- - ``https://support.example.com``
97
+ 3. Install npm dependencies:
55
98
 
56
- * - ``ACTIVATION_EMAIL_SUPPORT_LINK``
57
- - The fully-qualified URL to the activation email support page in the target environment.
58
- - ``https://support.example.com``
99
+ ``cd frontend-app-authn && npm install``
59
100
 
60
- * - ``PASSWORD_RESET_SUPPORT_LINK``
61
- - The fully-qualified URL to the password reset support page in the target environment.
62
- - ``https://support.example.com``
101
+ 4. Start the dev server:
63
102
 
64
- * - ``AUTHN_PROGRESSIVE_PROFILING_SUPPORT_LINK``
65
- - The fully-qualified URL to the progressive profiling support page in the target environment.
66
- - ``https://support.example.com``
103
+ ``npm run dev``
67
104
 
68
- * - ``TOS_AND_HONOR_CODE``
69
- - The fully-qualified URL to the Honor code page in the target environment.
70
- - ``https://example.com/honor``
105
+ The dev server defaults to ``PORT=1999 PUBLIC_PATH=/authn`` (set in the ``dev``
106
+ script in ``package.json``) and is available at
107
+ `http://apps.local.openedx.io:1999/authn <http://apps.local.openedx.io:1999/authn>`_.
71
108
 
72
- * - ``TOS_LINK``
73
- - The fully-qualified URL to the Terms of service page in the target environment.
74
- - ``https://example.com/tos``
109
+ Configuration used by the dev server is defined in ``site.config.dev.tsx`` at
110
+ the repo root.
75
111
 
76
- * - ``PRIVACY_POLICY``
77
- - The fully-qualified URL to the Privacy policy page in the target environment.
78
- - ``https://example.com/privacy``
112
+ Local Development Against ``frontend-base``
113
+ ===========================================
79
114
 
80
- * - ``INFO_EMAIL``
81
- - The valid email address for information query regarding the target environment.
82
- - ``info@example.com``
115
+ To develop this app and a local checkout of ``frontend-base`` in tandem, use the
116
+ built-in npm workspace support:
83
117
 
84
- * - ``ENABLE_DYNAMIC_REGISTRATION_FIELDS``
85
- - Enables support for configurable registration fields on the MFE. This flag must be enabled to show any required registration field besides the default fields (name, email, username, password).
86
- - ``true`` | ``''`` (empty strings are falsy)
118
+ .. code-block:: sh
87
119
 
88
- * - ``ENABLE_PROGRESSIVE_PROFILING_ON_AUTHN``
89
- - Enables support for progressive profiling. If enabled, users are redirected to a second page where data for optional registration fields can be collected.
90
- - ``true`` | ``''`` (empty strings are falsy)
120
+ mkdir -p packages/frontend-base
121
+ sudo mount --bind /path/to/frontend-base packages/frontend-base
122
+ npm install
123
+ npm run dev:packages
124
+
125
+ Bind mounts are used instead of symlinks because Node resolves symlinks to their
126
+ real paths, which breaks hoisted dependency resolution. When you are done,
127
+ unmount with ``sudo umount packages/frontend-base``.
128
+
129
+ Configuration
130
+ =============
131
+
132
+ This app is no longer configured by build-time environment variables.
133
+ ``getAppConfig`` resolves three sources, in order of increasing precedence: the
134
+ app's bundled defaults, the site's ``commonAppConfig``, and the app's ``config``.
135
+ The first is the app author's, at build time; the other two are the operator's,
136
+ the second applying to every app on the site and the third to this app alone. In
137
+ edx-platform they arrive as ``MFE_CONFIG`` and ``MFE_CONFIG_OVERRIDES['authn']``
138
+ respectively.
139
+
140
+ The full list of keys and their defaults is the ``config`` block in
141
+ ``src/app.ts``. Most are self-explanatory support links, logo URLs and branding
142
+ strings. The ones worth describing:
143
+
144
+ .. list-table::
145
+ :widths: 30 50 20
146
+ :header-rows: 1
147
+
148
+ * - Name
149
+ - Description / Usage
150
+ - Example
151
+
152
+ * - ``ALLOW_PUBLIC_ACCOUNT_CREATION``
153
+ - Whether visitors may register themselves. When false, the registration
154
+ page and the links to it are hidden.
155
+ - ``true``
91
156
 
92
157
  * - ``DISABLE_ENTERPRISE_LOGIN``
93
- - Disables the enterprise login from Authn MFE.
94
- - ``true`` | ``''`` (empty strings are falsy)
158
+ - Disables the enterprise login flow.
159
+ - ``true``
95
160
 
96
- * - ``MFE_CONFIG_API_URL``
97
- - Link of the API to get runtime mfe configuration variables from the site configuration or django settings.
98
- - ``/api/v1/mfe_config`` | ``''`` (empty strings are falsy)
161
+ * - ``ENABLE_AUTO_GENERATED_USERNAME``
162
+ - Generates the username from the registration form rather than asking for
163
+ one.
164
+ - ``false``
99
165
 
100
- * - ``APP_ID``
101
- - Name of MFE, this will be used by the API to get runtime configurations for the specific micro frontend. For a frontend repo `frontend-app-appName`, use `appName` as APP_ID.
102
- - ``authn`` | ``''``
166
+ * - ``ENABLE_DYNAMIC_REGISTRATION_FIELDS``
167
+ - Enables configurable registration fields. Must be enabled to show any
168
+ registration field besides the defaults (name, email, username,
169
+ password).
170
+ - ``false``
103
171
 
104
172
  * - ``ENABLE_IMAGE_LAYOUT``
105
- - Enables the image layout feature within the authn. When set to True, this feature allows the inclusion of images in the base container layout. For more details on configuring this feature, please refer to the `Modifying base container <docs/how_tos/modifying_base_container.rst>`_.
106
- - ``true`` | ``''`` (empty strings are falsy)
173
+ - Allows images in the base container layout. See `Modifying base
174
+ container <docs/how_tos/modifying_base_container.rst>`_.
175
+ - ``false``
176
+
177
+ * - ``ENABLE_PROGRESSIVE_PROFILING_ON_AUTHN``
178
+ - Enables progressive profiling. If enabled, users are redirected to a
179
+ second page where data for optional registration fields is collected.
180
+ - ``false``
181
+
182
+ * - ``POST_REGISTRATION_REDIRECT_URL``
183
+ - Where to send a user after registration, overriding the default route.
184
+ - ``''``
107
185
 
186
+ * - ``SHOW_REGISTRATION_LINKS``
187
+ - Whether to show links to the registration page from the other pages.
188
+ - ``true``
108
189
 
109
- edX-specific Environment Variables
110
- ==================================
190
+ edX-specific Configuration
191
+ ==========================
111
192
 
112
- Furthermore, there are several edX-specific environment variables that enable integrations with closed-source services private to the edX organization, and might be unsupported in Open edX.
193
+ The following key enables an integration with a closed-source service private to
194
+ the edX organization, and might be unsupported in Open edX.
113
195
 
114
- .. list-table:: edX-specific Environment Variables
196
+ .. list-table::
115
197
  :widths: 30 50 20
116
198
  :header-rows: 1
117
199
 
@@ -120,35 +202,81 @@ Furthermore, there are several edX-specific environment variables that enable in
120
202
  - Example
121
203
 
122
204
  * - ``MARKETING_EMAILS_OPT_IN``
123
- - Enables support for opting in marketing emails that helps us getting user consent for sending marketing emails.
124
- - ``true`` | ``''`` (empty strings are falsy)
205
+ - Enables opting in to marketing emails, to capture user consent for
206
+ sending them.
207
+ - ``''``
208
+
209
+
210
+ *****
211
+ Slots
212
+ *****
213
+
214
+ This app offers slots for operators to customize its pages. See `src/slots/`_
215
+ for the current list and per-slot READMEs with usage examples.
216
+
217
+ .. _src/slots/: ./src/slots/
125
218
 
126
- For more information see the document: `Micro-frontend applications in Open
127
- edX <https://github.com/overhangio/tutor-mfe?tab=readme-ov-file#mfe-development>`__.
219
+ **********
220
+ Developing
221
+ **********
128
222
 
129
- How To Contribute
223
+ Project Structure
130
224
  =================
131
225
 
132
- Contributions are very welcome, and strongly encouraged! We've
133
- put together `some documentation that describes our contribution process <https://docs.openedx.org/en/latest/developers/references/developer_guide/process/index.html>`_.
226
+ The layout follows the standard `frontend-base app layout`_:
227
+
228
+ - ``src/app.ts`` - the app definition imported by ``site.config.*.tsx``.
229
+ - ``src/constants.ts`` - the app's ``appId`` and route role identifiers.
230
+ - ``src/index.ts`` - the package's public exports (this is a library).
231
+ - ``src/routes.jsx`` - the app's react-router routes.
232
+ - ``src/Main.tsx`` - the root component for the app's routes.
233
+ - ``src/provides.ts`` - what the app provides to the shell; here, the roles that
234
+ render its pages chromeless.
235
+ - ``src/slots/`` - the slots this app offers to consumers.
236
+ - ``src/style.scss`` and ``src/sass/`` - app-scoped runtime styles.
237
+
238
+ Everything else under ``src/`` is a feature directory, one per page or shared
239
+ concern, as described in `ADR 0002: feature based application organization
240
+ <docs/decisions/0002-feature-based-application-organization.rst>`_.
241
+
242
+ For more, see the `frontend-base migration how-to`_.
243
+
244
+ .. _frontend-base app layout: https://github.com/openedx/frontend-base/blob/main/docs/how_tos/migrate-frontend-app.md#src-file-structure
245
+ .. _frontend-base migration how-to: https://github.com/openedx/frontend-base/blob/main/docs/how_tos/migrate-frontend-app.md
246
+
247
+ Build Process Notes
248
+ ===================
249
+
250
+ **Library build**
251
+
252
+ ``npm run build`` compiles the library into ``dist/`` via ``tsc`` and
253
+ ``tsc-alias``, and copies the SCSS across. This is what gets published and
254
+ consumed by sites.
255
+
256
+ **CI build**
257
+
258
+ ``npm run build:ci`` runs ``openedx build`` against ``site.config.ci.tsx`` so
259
+ webpack traverses the full app graph. This catches issues, such as broken
260
+ lazy-loaded imports, that ``tsc`` and Jest would not surface.
134
261
 
135
- Even though they were written with edx-platform in mind, the guidelines should be followed for Open edX code in general.
262
+ Internationalization
263
+ ====================
136
264
 
137
- PR description template should be automatically applied if you are sending PR from github interface; otherwise you
138
- can find it it at `PULL_REQUEST_TEMPLATE.md <https://github.com/openedx/frontend-app-authn/blob/master/.github/pull_request_template.md>`_
265
+ Please refer to the `frontend-base i18n howto`_ for documentation on
266
+ internationalization.
139
267
 
140
- This project is currently accepting all types of contributions, bug fixes and security fixes.
268
+ .. _frontend-base i18n howto: https://github.com/openedx/frontend-base/blob/main/docs/how_tos/i18n.rst
141
269
 
270
+ ************
142
271
  Getting Help
143
- ============
272
+ ************
144
273
 
145
274
  If you're having trouble, we have discussion forums at
146
275
  https://discuss.openedx.org where you can connect with others in the community.
147
276
 
148
- Our real-time conversations are on Slack. You can request a `Slack
149
- invitation`_, then join our `community Slack workspace`_. Because this is a
150
- frontend repository, the best place to discuss it would be in the `#wg-frontend
151
- channel`_.
277
+ Our real-time conversations are on Slack. You can request a `Slack invitation`_,
278
+ then join our `community Slack workspace`_. Because this is a frontend
279
+ repository, the best place to discuss it would be in the `#wg-frontend channel`_.
152
280
 
153
281
  For anything non-trivial, the best path is to open an issue in this repository
154
282
  with as many details about the issue you are facing as you can provide.
@@ -160,45 +288,71 @@ For more information about these options, see the `Getting Help`_ page.
160
288
  .. _Slack invitation: https://openedx.org/slack
161
289
  .. _community Slack workspace: https://openedx.slack.com/
162
290
  .. _#wg-frontend channel: https://openedx.slack.com/archives/C04BM6YC7A6
163
- .. _Getting Help: https://openedx.org/community/connect
291
+ .. _Getting Help: https://openedx.org/getting-help
164
292
 
293
+ *******
294
+ License
295
+ *******
296
+
297
+ The code in this repository is licensed under the AGPLv3 unless otherwise noted.
298
+
299
+ Please see `LICENSE <LICENSE>`_ for details.
300
+
301
+ ************
302
+ Contributing
303
+ ************
304
+
305
+ Contributions are very welcome. Please read `How To Contribute`_ for details.
306
+
307
+ .. _How To Contribute: https://openedx.org/r/how-to-contribute
308
+
309
+ This project is currently accepting all types of contributions, bug fixes and
310
+ security fixes.
311
+
312
+ The PR description template should be applied automatically if you open the pull
313
+ request from the GitHub interface; otherwise you can find it at
314
+ `pull_request_template.md <.github/pull_request_template.md>`_.
315
+
316
+ ****************************
165
317
  The Open edX Code of Conduct
166
- ============================
167
- All community members are expected to follow the `Open edX Code of Conduct <https://openedx.org/code-of-conduct/>`_.
318
+ ****************************
168
319
 
320
+ All community members are expected to follow the `Open edX Code of Conduct`_.
321
+
322
+ .. _Open edX Code of Conduct: https://openedx.org/code-of-conduct/
323
+
324
+ ******
169
325
  People
170
- ======
326
+ ******
327
+
171
328
  The assigned maintainers for this component and other project details may be
172
- found in `Backstage <https://backstage.openedx.org/catalog/default/group/2u-infinity>`_. Backstage pulls this data from the ``catalog-info.yaml``
329
+ found in `Backstage`_. Backstage pulls this data from the ``catalog-info.yaml``
173
330
  file in this repo.
174
331
 
175
- Reporting Security Issues
176
- =========================
177
-
178
- Please do not report security issues in public. Please email security@openedx.org.
179
-
180
- Known Issues
181
- ============
332
+ .. _Backstage: https://backstage.openedx.org/catalog/default/component/frontend-app-authn
182
333
 
183
- None
334
+ *************************
335
+ Reporting Security Issues
336
+ *************************
184
337
 
185
- License
186
- =======
338
+ Please do not report security issues in public, and email security@openedx.org
339
+ instead.
187
340
 
188
- The code in this repository is licensed under the GNU Affero General Public License v3.0, unless
189
- otherwise noted.
341
+ .. |license-badge| image:: https://img.shields.io/github/license/openedx/frontend-app-authn.svg
342
+ :target: https://github.com/openedx/frontend-app-authn/blob/master/LICENSE
343
+ :alt: License
190
344
 
191
- Please see `LICENSE <https://github.com/openedx/frontend-app-authn/blob/master/LICENSE>`_ for details.
345
+ .. |status-badge| image:: https://img.shields.io/badge/Status-Maintained-brightgreen
346
+ :alt: Maintained
192
347
 
348
+ .. |ci-badge| image:: https://github.com/openedx/frontend-app-authn/actions/workflows/ci.yml/badge.svg
349
+ :target: https://github.com/openedx/frontend-app-authn/actions/workflows/ci.yml
350
+ :alt: Continuous Integration
193
351
 
194
- ==============================
352
+ .. |codecov-badge| image:: https://codecov.io/github/openedx/frontend-app-authn/coverage.svg?branch=master
353
+ :target: https://codecov.io/github/openedx/frontend-app-authn?branch=master
354
+ :alt: Codecov
195
355
 
196
- .. |Build Status| image:: https://api.travis-ci.com/edx/frontend-app-authn.svg?branch=master
197
- :target: https://travis-ci.com/edx/frontend-app-authn
198
- .. |Codecov| image:: https://img.shields.io/codecov/c/github/edx/frontend-app-authn
199
- :target: https://codecov.io/gh/edx/frontend-app-authn
200
- .. |ci-badge| image:: https://github.com/openedx/edx-developer-docs/actions/workflows/ci.yml/badge.svg
201
- :target: https://github.com/openedx/edx-developer-docs/actions/workflows/ci.yml
202
- :alt: Continuous Integration
203
356
  .. |semantic-release| image:: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
204
- :target: https://github.com/semantic-release/semantic-release
357
+ :target: https://github.com/semantic-release/semantic-release
358
+ :alt: semantic-release
package/dist/Main.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import './sass/_style.scss';
1
+ import './style.scss';
2
2
  declare const Main: () => import("react/jsx-runtime").JSX.Element;
3
3
  export default Main;
package/dist/Main.js CHANGED
@@ -3,7 +3,7 @@ import { Outlet } from 'react-router-dom';
3
3
  import { CurrentAppProvider } from '@openedx/frontend-base';
4
4
  import { appId } from './constants';
5
5
  import { registerIcons, } from './common-components';
6
- import './sass/_style.scss';
6
+ import './style.scss';
7
7
  registerIcons();
8
8
  const Main = () => (_jsx(CurrentAppProvider, { appId: appId, children: _jsx(Outlet, {}) }));
9
9
  export default Main;
package/dist/Main.js.map CHANGED
@@ -1 +1 @@
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"]}
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,cAAc,CAAC;AAEtB,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 './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,8 +1,10 @@
1
1
  import { appId } from './constants';
2
+ import provides from './provides';
2
3
  import routes from './routes';
3
4
  const app = {
4
5
  appId,
5
6
  routes,
7
+ provides,
6
8
  config: {
7
9
  ACTIVATION_EMAIL_SUPPORT_LINK: null,
8
10
  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;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
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,MAAM,MAAM,UAAU,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 provides from './provides';\nimport routes from './routes';\n\nconst app: App = {\n appId,\n routes,\n provides,\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,5 +1,12 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { FormattedMessage } from '@openedx/frontend-base';
3
- const NotFoundPage = () => (_jsx("div", { className: "container-fluid d-flex py-5 justify-content-center align-items-start text-center", children: _jsx("p", { className: "my-0 py-5 text-muted mw-32em", children: _jsx(FormattedMessage, { id: "error.notfound.message", defaultMessage: "The page you're looking for is unavailable or there's an error in the URL. Please check the URL and try again.", description: "error message when a page does not exist" }) }) }));
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { FormattedMessage, getSiteConfig, useIntl } from '@openedx/frontend-base';
3
+ import { Helmet } from 'react-helmet';
4
+ import messages from './messages';
5
+ const NotFoundPage = () => {
6
+ const { formatMessage } = useIntl();
7
+ return (_jsxs("div", { className: "container-fluid d-flex py-5 justify-content-center align-items-start text-center", children: [_jsx(Helmet, { children: _jsx("title", { children: formatMessage(messages['error.notfound.page.title'], {
8
+ siteName: getSiteConfig().siteName,
9
+ }) }) }), _jsx("p", { className: "my-0 py-5 text-muted mw-32em", children: _jsx(FormattedMessage, { id: "error.notfound.message", defaultMessage: "The page you're looking for is unavailable or there's an error in the URL. Please check the URL and try again.", description: "error message when a page does not exist" }) })] }));
10
+ };
4
11
  export default NotFoundPage;
5
12
  //# sourceMappingURL=NotFoundPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NotFoundPage.js","sourceRoot":"","sources":["../../src/common-components/NotFoundPage.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,CACzB,cAAK,SAAS,EAAC,kFAAkF,YAC/F,YAAG,SAAS,EAAC,8BAA8B,YACzC,KAAC,gBAAgB,IACf,EAAE,EAAC,wBAAwB,EAC3B,cAAc,EAAC,gHAAgH,EAC/H,WAAW,EAAC,0CAA0C,GACtD,GACA,GACA,CACP,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["import { FormattedMessage } from '@openedx/frontend-base';\n\nconst NotFoundPage = () => (\n <div className=\"container-fluid d-flex py-5 justify-content-center align-items-start text-center\">\n <p className=\"my-0 py-5 text-muted mw-32em\">\n <FormattedMessage\n id=\"error.notfound.message\"\n defaultMessage=\"The page you're looking for is unavailable or there's an error in the URL. Please check the URL and try again.\"\n description=\"error message when a page does not exist\"\n />\n </p>\n </div>\n);\n\nexport default NotFoundPage;\n"]}
1
+ {"version":3,"file":"NotFoundPage.js","sourceRoot":"","sources":["../../src/common-components/NotFoundPage.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,YAAY,GAAG,GAAG,EAAE;IACxB,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,OAAO,CACL,eAAK,SAAS,EAAC,kFAAkF,aAC/F,KAAC,MAAM,cACL,0BACG,aAAa,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE;wBACpD,QAAQ,EAAE,aAAa,EAAE,CAAC,QAAQ;qBACnC,CAAC,GACI,GACD,EACT,YAAG,SAAS,EAAC,8BAA8B,YACzC,KAAC,gBAAgB,IACf,EAAE,EAAC,wBAAwB,EAC3B,cAAc,EAAC,gHAAgH,EAC/H,WAAW,EAAC,0CAA0C,GACtD,GACA,IACA,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["import { FormattedMessage, getSiteConfig, useIntl } from '@openedx/frontend-base';\nimport { Helmet } from 'react-helmet';\n\nimport messages from './messages';\n\nconst NotFoundPage = () => {\n const { formatMessage } = useIntl();\n return (\n <div className=\"container-fluid d-flex py-5 justify-content-center align-items-start text-center\">\n <Helmet>\n <title>\n {formatMessage(messages['error.notfound.page.title'], {\n siteName: getSiteConfig().siteName,\n })}\n </title>\n </Helmet>\n <p className=\"my-0 py-5 text-muted mw-32em\">\n <FormattedMessage\n id=\"error.notfound.message\"\n defaultMessage=\"The page you're looking for is unavailable or there's an error in the URL. Please check the URL and try again.\"\n description=\"error message when a page does not exist\"\n />\n </p>\n </div>\n );\n};\n\nexport default NotFoundPage;\n"]}
@@ -1,5 +1,10 @@
1
1
  export default messages;
2
2
  declare const messages: {
3
+ 'error.notfound.page.title': {
4
+ id: string;
5
+ defaultMessage: string;
6
+ description: string;
7
+ };
3
8
  'institution.login.page.sub.heading': {
4
9
  id: string;
5
10
  defaultMessage: string;
@@ -1,5 +1,11 @@
1
1
  import { defineMessages } from '@openedx/frontend-base';
2
2
  const messages = defineMessages({
3
+ // not found page
4
+ 'error.notfound.page.title': {
5
+ id: 'error.notfound.page.title',
6
+ defaultMessage: 'Page Not Found | {siteName}',
7
+ description: 'Document title for the page-not-found page',
8
+ },
3
9
  // institution login strings
4
10
  'institution.login.page.sub.heading': {
5
11
  id: 'institution.login.page.sub.heading',
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/common-components/messages.jsx"],"names":[],"mappings":"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","sourcesContent":["import { defineMessages } from '@openedx/frontend-base';\n\nconst messages = defineMessages({\n // institution login strings\n 'institution.login.page.sub.heading': {\n id: 'institution.login.page.sub.heading',\n defaultMessage: 'Choose your institution from the list below',\n description: 'Heading of the institutions list',\n },\n // logistration strings\n 'logistration.sign.in': {\n id: 'logistration.sign.in',\n defaultMessage: 'Sign in',\n description: 'Text that appears on the tab to switch between login and register',\n },\n 'logistration.register': {\n id: 'logistration.register',\n defaultMessage: 'Register',\n description: 'Text that appears on the tab to switch between login and register',\n },\n // enterprise sso strings\n 'enterprisetpa.title.heading': {\n id: 'enterprisetpa.title.heading',\n defaultMessage: 'Would you like to sign in using your {providerName} credentials?',\n description: 'Header text used in enterprise third party authentication',\n },\n 'enterprisetpa.login.button.text': {\n id: 'enterprisetpa.login.button.text',\n defaultMessage: 'Show me other ways to sign in or register',\n description: 'Button text for login',\n },\n 'enterprisetpa.login.button.text.public.account.creation.disabled': {\n id: 'enterprisetpa.login.button.text.public.account.creation.disabled',\n defaultMessage: 'Show me other ways to sign in',\n description: 'Button text for login when account creation is disabled',\n },\n // social auth providers\n 'sso.sign.in.with': {\n id: 'sso.sign.in.with',\n defaultMessage: 'Sign in with {providerName}',\n description: 'Screen reader text that appears before social auth provider name',\n },\n 'sso.create.account.using': {\n id: 'sso.create.account.using',\n defaultMessage: 'Create account using {providerName}',\n description: 'Screen reader text that appears before social auth provider name',\n },\n // password field strings\n 'show.password': {\n id: 'show.password',\n defaultMessage: 'Show password',\n description: 'aria label for show password icon on password field',\n },\n 'hide.password': {\n id: 'hide.password',\n defaultMessage: 'Hide password',\n description: 'aria label for hide password icon on password field',\n },\n 'one.letter': {\n id: 'one.letter',\n defaultMessage: '1 letter',\n description: 'password requirement to have 1 letter',\n },\n 'one.number': {\n id: 'one.number',\n defaultMessage: '1 number',\n description: 'password requirement to have 1 number',\n },\n 'eight.characters': {\n id: 'eight.characters',\n defaultMessage: '8 characters',\n description: 'password requirement to have a minimum of 8 characters',\n },\n 'password.sr.only.helping.text': {\n id: 'password.sr.only.helping.text',\n defaultMessage: 'Password must contain at least 8 characters, at least one letter, and at least one number',\n description: 'Password helping text for the sr-only class',\n },\n // third party auth\n 'tpa.alert.heading': {\n id: 'tpa.alert.heading',\n defaultMessage: 'Almost done!',\n description: 'Success alert heading after user has successfully signed in with social auth',\n },\n 'login.third.party.auth.account.not.linked': {\n id: 'login.third.party.auth.account.not.linked',\n defaultMessage: 'You have successfully signed into {currentProvider}, but your {currentProvider} '\n + 'account does not have a linked {platformName} account. To link your accounts, '\n + 'sign in now using your {platformName} password.',\n description: 'Message that appears on login page if user has successfully authenticated with social '\n + 'auth but no associated platform account exists',\n },\n 'register.third.party.auth.account.not.linked': {\n id: 'register.third.party.auth.account.not.linked',\n defaultMessage: 'You\\'ve successfully signed into {currentProvider}! We just need a little more information '\n + 'before you start learning with {platformName}.',\n description: 'Message that appears on register page if user has successfully authenticated with TPA '\n + 'but no associated platform account exists',\n },\n 'registration.using.tpa.form.heading': {\n id: 'registration.using.tpa.form.heading',\n defaultMessage: 'Finish creating your account',\n description: 'Heading that appears above form when user is trying to create account using social auth',\n },\n 'registration.other.options.heading': {\n id: 'registration.other.options.heading',\n defaultMessage: 'Or register with:',\n description: 'A message that appears above third party auth providers i.e saml, google, facebook etc',\n },\n 'institution.login.button': {\n id: 'institution.login.button',\n defaultMessage: 'Institution/campus credentials',\n description: 'shows institutions list',\n },\n 'login.other.options.heading': {\n id: 'login.other.options.heading',\n defaultMessage: 'Or sign in with:',\n description: 'Text that appears above other sign in options like social auth buttons',\n },\n 'enterprise.login.btn.text': {\n id: 'enterprise.login.btn.text',\n defaultMessage: 'Company or school credentials',\n description: 'Company or school login link text.',\n },\n});\n\nexport default messages;\n"]}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/common-components/messages.jsx"],"names":[],"mappings":"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","sourcesContent":["import { defineMessages } from '@openedx/frontend-base';\n\nconst messages = defineMessages({\n // not found page\n 'error.notfound.page.title': {\n id: 'error.notfound.page.title',\n defaultMessage: 'Page Not Found | {siteName}',\n description: 'Document title for the page-not-found page',\n },\n // institution login strings\n 'institution.login.page.sub.heading': {\n id: 'institution.login.page.sub.heading',\n defaultMessage: 'Choose your institution from the list below',\n description: 'Heading of the institutions list',\n },\n // logistration strings\n 'logistration.sign.in': {\n id: 'logistration.sign.in',\n defaultMessage: 'Sign in',\n description: 'Text that appears on the tab to switch between login and register',\n },\n 'logistration.register': {\n id: 'logistration.register',\n defaultMessage: 'Register',\n description: 'Text that appears on the tab to switch between login and register',\n },\n // enterprise sso strings\n 'enterprisetpa.title.heading': {\n id: 'enterprisetpa.title.heading',\n defaultMessage: 'Would you like to sign in using your {providerName} credentials?',\n description: 'Header text used in enterprise third party authentication',\n },\n 'enterprisetpa.login.button.text': {\n id: 'enterprisetpa.login.button.text',\n defaultMessage: 'Show me other ways to sign in or register',\n description: 'Button text for login',\n },\n 'enterprisetpa.login.button.text.public.account.creation.disabled': {\n id: 'enterprisetpa.login.button.text.public.account.creation.disabled',\n defaultMessage: 'Show me other ways to sign in',\n description: 'Button text for login when account creation is disabled',\n },\n // social auth providers\n 'sso.sign.in.with': {\n id: 'sso.sign.in.with',\n defaultMessage: 'Sign in with {providerName}',\n description: 'Screen reader text that appears before social auth provider name',\n },\n 'sso.create.account.using': {\n id: 'sso.create.account.using',\n defaultMessage: 'Create account using {providerName}',\n description: 'Screen reader text that appears before social auth provider name',\n },\n // password field strings\n 'show.password': {\n id: 'show.password',\n defaultMessage: 'Show password',\n description: 'aria label for show password icon on password field',\n },\n 'hide.password': {\n id: 'hide.password',\n defaultMessage: 'Hide password',\n description: 'aria label for hide password icon on password field',\n },\n 'one.letter': {\n id: 'one.letter',\n defaultMessage: '1 letter',\n description: 'password requirement to have 1 letter',\n },\n 'one.number': {\n id: 'one.number',\n defaultMessage: '1 number',\n description: 'password requirement to have 1 number',\n },\n 'eight.characters': {\n id: 'eight.characters',\n defaultMessage: '8 characters',\n description: 'password requirement to have a minimum of 8 characters',\n },\n 'password.sr.only.helping.text': {\n id: 'password.sr.only.helping.text',\n defaultMessage: 'Password must contain at least 8 characters, at least one letter, and at least one number',\n description: 'Password helping text for the sr-only class',\n },\n // third party auth\n 'tpa.alert.heading': {\n id: 'tpa.alert.heading',\n defaultMessage: 'Almost done!',\n description: 'Success alert heading after user has successfully signed in with social auth',\n },\n 'login.third.party.auth.account.not.linked': {\n id: 'login.third.party.auth.account.not.linked',\n defaultMessage: 'You have successfully signed into {currentProvider}, but your {currentProvider} '\n + 'account does not have a linked {platformName} account. To link your accounts, '\n + 'sign in now using your {platformName} password.',\n description: 'Message that appears on login page if user has successfully authenticated with social '\n + 'auth but no associated platform account exists',\n },\n 'register.third.party.auth.account.not.linked': {\n id: 'register.third.party.auth.account.not.linked',\n defaultMessage: 'You\\'ve successfully signed into {currentProvider}! We just need a little more information '\n + 'before you start learning with {platformName}.',\n description: 'Message that appears on register page if user has successfully authenticated with TPA '\n + 'but no associated platform account exists',\n },\n 'registration.using.tpa.form.heading': {\n id: 'registration.using.tpa.form.heading',\n defaultMessage: 'Finish creating your account',\n description: 'Heading that appears above form when user is trying to create account using social auth',\n },\n 'registration.other.options.heading': {\n id: 'registration.other.options.heading',\n defaultMessage: 'Or register with:',\n description: 'A message that appears above third party auth providers i.e saml, google, facebook etc',\n },\n 'institution.login.button': {\n id: 'institution.login.button',\n defaultMessage: 'Institution/campus credentials',\n description: 'shows institutions list',\n },\n 'login.other.options.heading': {\n id: 'login.other.options.heading',\n defaultMessage: 'Or sign in with:',\n description: 'Text that appears above other sign in options like social auth buttons',\n },\n 'enterprise.login.btn.text': {\n id: 'enterprise.login.btn.text',\n defaultMessage: 'Company or school credentials',\n description: 'Company or school login link text.',\n },\n});\n\nexport default messages;\n"]}
@@ -0,0 +1,4 @@
1
+ declare const provides: {
2
+ "org.openedx.frontend.provides.chromelessRoles.v1": string[];
3
+ };
4
+ export default provides;
@@ -0,0 +1,7 @@
1
+ import { providesChromelessRolesId } from '@openedx/frontend-base';
2
+ import { confirmPasswordRole, loginRole, registerRole, resetPasswordRole, welcomeRole, } from './constants';
3
+ const provides = {
4
+ [providesChromelessRolesId]: [loginRole, registerRole, resetPasswordRole, confirmPasswordRole, welcomeRole],
5
+ };
6
+ export default provides;
7
+ //# sourceMappingURL=provides.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provides.js","sourceRoot":"","sources":["../src/provides.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EACL,mBAAmB,EACnB,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,WAAW,GACZ,MAAM,aAAa,CAAC;AAErB,MAAM,QAAQ,GAAG;IACf,CAAC,yBAAyB,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,WAAW,CAAC;CAC5G,CAAC;AAEF,eAAe,QAAQ,CAAC","sourcesContent":["import { providesChromelessRolesId } from '@openedx/frontend-base';\nimport {\n confirmPasswordRole,\n loginRole,\n registerRole,\n resetPasswordRole,\n welcomeRole,\n} from './constants';\n\nconst provides = {\n [providesChromelessRolesId]: [loginRole, registerRole, resetPasswordRole, confirmPasswordRole, welcomeRole],\n};\n\nexport default provides;\n"]}
package/dist/routes.d.ts CHANGED
@@ -12,7 +12,7 @@ declare const routes: {
12
12
  } | {
13
13
  path: string;
14
14
  handle: {
15
- role: string;
15
+ roles: string[];
16
16
  };
17
17
  element: import("react/jsx-runtime").JSX.Element;
18
18
  })[];
package/dist/routes.js CHANGED
@@ -21,7 +21,7 @@ const routes = [
21
21
  path: '/authn',
22
22
  lazy() {
23
23
  return __awaiter(this, void 0, void 0, function* () {
24
- const module = yield import('./Main');
24
+ const module = yield import(/* webpackChunkName: "authn-main" */ './Main');
25
25
  return { Component: module.default };
26
26
  });
27
27
  },
@@ -33,35 +33,35 @@ const routes = [
33
33
  {
34
34
  path: loginPath,
35
35
  handle: {
36
- role: loginRole,
36
+ roles: [loginRole],
37
37
  },
38
38
  element: (_jsx(UnAuthOnlyRoute, { children: _jsx(Logistration, { selectedPage: loginPath }) })),
39
39
  },
40
40
  {
41
41
  path: registerPath,
42
42
  handle: {
43
- role: registerRole,
43
+ roles: [registerRole],
44
44
  },
45
45
  element: (_jsx(UnAuthOnlyRoute, { children: _jsx(Logistration, {}) })),
46
46
  },
47
47
  {
48
48
  path: resetPath,
49
49
  handle: {
50
- role: resetPasswordRole,
50
+ roles: [resetPasswordRole],
51
51
  },
52
52
  element: (_jsx(UnAuthOnlyRoute, { children: _jsx(ForgotPasswordPage, {}) })),
53
53
  },
54
54
  {
55
55
  path: `${passwordResetConfirmPath}/:token`,
56
56
  handle: {
57
- role: confirmPasswordRole,
57
+ roles: [confirmPasswordRole],
58
58
  },
59
59
  element: (_jsx(ResetPasswordPage, {})),
60
60
  },
61
61
  {
62
62
  path: welcomePath,
63
63
  handle: {
64
- role: welcomeRole,
64
+ roles: [welcomeRole],
65
65
  },
66
66
  element: (_jsx(ProgressiveProfiling, {})),
67
67
  },
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.jsx"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAAE,yBAAyB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EACL,mBAAmB,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EACvD,wBAAwB,EAAE,oBAAoB,EAAE,YAAY,EAAE,YAAY,EAC1E,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,GACvD,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,MAAM,GAAG;IACb;QACE,EAAE,EAAE,uCAAuC;QAC3C,IAAI,EAAE,QAAQ;QACR,IAAI;;gBACR,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACtC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;YACvC,CAAC;SAAA;QACD,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE,CACP,KAAC,yBAAyB,cAAC,KAAC,gBAAgB,KAAG,GAA4B,CAC5E;aACF;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE;oBACN,IAAI,EAAE,SAAS;iBAChB;gBACD,OAAO,EAAE,CACP,KAAC,eAAe,cAAC,KAAC,YAAY,IAAC,YAAY,EAAE,SAAS,GAAI,GAAkB,CAC7E;aACF;YACD;gBACE,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY;iBACnB;gBACD,OAAO,EAAE,CACP,KAAC,eAAe,cAAC,KAAC,YAAY,KAAG,GAAkB,CACpD;aACF;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE;oBACN,IAAI,EAAE,iBAAiB;iBACxB;gBACD,OAAO,EAAE,CACP,KAAC,eAAe,cAAC,KAAC,kBAAkB,KAAG,GAAkB,CAC1D;aACF;YACD;gBACE,IAAI,EAAE,GAAG,wBAAwB,SAAS;gBAC1C,MAAM,EAAE;oBACN,IAAI,EAAE,mBAAmB;iBAC1B;gBACD,OAAO,EAAE,CACP,KAAC,iBAAiB,KAAG,CACtB;aACF;YACD;gBACE,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE;oBACN,IAAI,EAAE,WAAW;iBAClB;gBACD,OAAO,EAAE,CACP,KAAC,oBAAoB,KAAG,CACzB;aACF;YACD;gBACE,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,CACP,KAAC,YAAY,KAAG,CACjB;aACF;SACF;KACF;CACF,CAAC;AAEF,eAAe,MAAM,CAAC","sourcesContent":["import { EmbeddedRegistrationRoute, NotFoundPage, UnAuthOnlyRoute } from './common-components';\nimport {\n confirmPasswordRole, loginPath, loginRole, notFoundPath,\n passwordResetConfirmPath, registerEmbeddedPath, registerPath, registerRole,\n resetPath, resetPasswordRole, welcomePath, welcomeRole,\n} from './constants';\nimport { ForgotPasswordPage } from './forgot-password';\nimport Logistration from './logistration/Logistration';\nimport { ProgressiveProfiling } from './progressive-profiling';\nimport { RegistrationPage } from './register';\nimport { ResetPasswordPage } from './reset-password';\n\nconst routes = [\n {\n id: 'org.openedx.frontend.route.authn.main',\n path: '/authn',\n async lazy() {\n const module = await import('./Main');\n return { Component: module.default };\n },\n children: [\n {\n path: registerEmbeddedPath,\n element: (\n <EmbeddedRegistrationRoute><RegistrationPage /></EmbeddedRegistrationRoute>\n ),\n },\n {\n path: loginPath,\n handle: {\n role: loginRole,\n },\n element: (\n <UnAuthOnlyRoute><Logistration selectedPage={loginPath} /></UnAuthOnlyRoute>\n ),\n },\n {\n path: registerPath,\n handle: {\n role: registerRole,\n },\n element: (\n <UnAuthOnlyRoute><Logistration /></UnAuthOnlyRoute>\n ),\n },\n {\n path: resetPath,\n handle: {\n role: resetPasswordRole,\n },\n element: (\n <UnAuthOnlyRoute><ForgotPasswordPage /></UnAuthOnlyRoute>\n ),\n },\n {\n path: `${passwordResetConfirmPath}/:token`,\n handle: {\n role: confirmPasswordRole,\n },\n element: (\n <ResetPasswordPage />\n ),\n },\n {\n path: welcomePath,\n handle: {\n role: welcomeRole,\n },\n element: (\n <ProgressiveProfiling />\n ),\n },\n {\n path: notFoundPath,\n element: (\n <NotFoundPage />\n ),\n },\n ]\n }\n];\n\nexport default routes;\n"]}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.jsx"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAAE,yBAAyB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EACL,mBAAmB,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EACvD,wBAAwB,EAAE,oBAAoB,EAAE,YAAY,EAAE,YAAY,EAC1E,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,GACvD,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,MAAM,GAAG;IACb;QACE,EAAE,EAAE,uCAAuC;QAC3C,IAAI,EAAE,QAAQ;QACR,IAAI;;gBACR,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,oCAAoC,CAAC,QAAQ,CAAC,CAAC;gBAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;YACvC,CAAC;SAAA;QACD,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE,CACP,KAAC,yBAAyB,cAAC,KAAC,gBAAgB,KAAG,GAA4B,CAC5E;aACF;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE;oBACN,KAAK,EAAE,CAAC,SAAS,CAAC;iBACnB;gBACD,OAAO,EAAE,CACP,KAAC,eAAe,cAAC,KAAC,YAAY,IAAC,YAAY,EAAE,SAAS,GAAI,GAAkB,CAC7E;aACF;YACD;gBACE,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE;oBACN,KAAK,EAAE,CAAC,YAAY,CAAC;iBACtB;gBACD,OAAO,EAAE,CACP,KAAC,eAAe,cAAC,KAAC,YAAY,KAAG,GAAkB,CACpD;aACF;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE;oBACN,KAAK,EAAE,CAAC,iBAAiB,CAAC;iBAC3B;gBACD,OAAO,EAAE,CACP,KAAC,eAAe,cAAC,KAAC,kBAAkB,KAAG,GAAkB,CAC1D;aACF;YACD;gBACE,IAAI,EAAE,GAAG,wBAAwB,SAAS;gBAC1C,MAAM,EAAE;oBACN,KAAK,EAAE,CAAC,mBAAmB,CAAC;iBAC7B;gBACD,OAAO,EAAE,CACP,KAAC,iBAAiB,KAAG,CACtB;aACF;YACD;gBACE,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE;oBACN,KAAK,EAAE,CAAC,WAAW,CAAC;iBACrB;gBACD,OAAO,EAAE,CACP,KAAC,oBAAoB,KAAG,CACzB;aACF;YACD;gBACE,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,CACP,KAAC,YAAY,KAAG,CACjB;aACF;SACF;KACF;CACF,CAAC;AAEF,eAAe,MAAM,CAAC","sourcesContent":["import { EmbeddedRegistrationRoute, NotFoundPage, UnAuthOnlyRoute } from './common-components';\nimport {\n confirmPasswordRole, loginPath, loginRole, notFoundPath,\n passwordResetConfirmPath, registerEmbeddedPath, registerPath, registerRole,\n resetPath, resetPasswordRole, welcomePath, welcomeRole,\n} from './constants';\nimport { ForgotPasswordPage } from './forgot-password';\nimport Logistration from './logistration/Logistration';\nimport { ProgressiveProfiling } from './progressive-profiling';\nimport { RegistrationPage } from './register';\nimport { ResetPasswordPage } from './reset-password';\n\nconst routes = [\n {\n id: 'org.openedx.frontend.route.authn.main',\n path: '/authn',\n async lazy() {\n const module = await import(/* webpackChunkName: \"authn-main\" */ './Main');\n return { Component: module.default };\n },\n children: [\n {\n path: registerEmbeddedPath,\n element: (\n <EmbeddedRegistrationRoute><RegistrationPage /></EmbeddedRegistrationRoute>\n ),\n },\n {\n path: loginPath,\n handle: {\n roles: [loginRole],\n },\n element: (\n <UnAuthOnlyRoute><Logistration selectedPage={loginPath} /></UnAuthOnlyRoute>\n ),\n },\n {\n path: registerPath,\n handle: {\n roles: [registerRole],\n },\n element: (\n <UnAuthOnlyRoute><Logistration /></UnAuthOnlyRoute>\n ),\n },\n {\n path: resetPath,\n handle: {\n roles: [resetPasswordRole],\n },\n element: (\n <UnAuthOnlyRoute><ForgotPasswordPage /></UnAuthOnlyRoute>\n ),\n },\n {\n path: `${passwordResetConfirmPath}/:token`,\n handle: {\n roles: [confirmPasswordRole],\n },\n element: (\n <ResetPasswordPage />\n ),\n },\n {\n path: welcomePath,\n handle: {\n roles: [welcomeRole],\n },\n element: (\n <ProgressiveProfiling />\n ),\n },\n {\n path: notFoundPath,\n element: (\n <NotFoundPage />\n ),\n },\n ]\n }\n];\n\nexport default routes;\n"]}
@@ -59,7 +59,7 @@
59
59
  margin-bottom: 0.5rem;
60
60
  font-weight: 700;
61
61
 
62
- @media (-pgn-size-breakpoint-max-width-xl) {
62
+ @media (--pgn-size-breakpoint-max-width-xl) {
63
63
  font-size: 1.375rem;
64
64
  line-height: 1.75rem;
65
65
  }
@@ -71,7 +71,7 @@
71
71
  }
72
72
 
73
73
  .large-screen-left-container {
74
- @media (-pgn-size-breakpoint-max-width-xl) {
74
+ @media (--pgn-size-breakpoint-max-width-xl) {
75
75
  flex: 0 0 25%;
76
76
  max-width: 25%;
77
77
  }
@@ -1,10 +1,12 @@
1
+ @use "@openedx/paragon/styles/css/core/custom-media-breakpoints.css";
2
+
1
3
  // Load component based styles
2
- @use "_base_component.scss";
3
- @use "_registration.scss";
4
- @use "_reset_password.scss";
5
- @use "_progressive_profiling_page.scss";
6
- @use "_login_page.scss";
7
- @use "_forgot_password.scss";
4
+ @use "./sass/base_component";
5
+ @use "./sass/registration";
6
+ @use "./sass/reset_password";
7
+ @use "./sass/progressive_profiling_page";
8
+ @use "./sass/login_page";
9
+ @use "./sass/forgot_password";
8
10
 
9
11
  //
10
12
  // ----------------------------
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openedx/frontend-app-authn",
3
- "version": "1.0.0-alpha.9",
3
+ "version": "2.0.0-alpha.1",
4
4
  "description": "Frontend authentication",
5
5
  "engines": {
6
6
  "node": "^24.12"
@@ -10,8 +10,7 @@
10
10
  "url": "git+https://github.com/openedx/frontend-app-authn.git"
11
11
  },
12
12
  "exports": {
13
- ".": "./dist/index.js",
14
- "./app.scss": "./dist/app.scss"
13
+ ".": "./dist/index.js"
15
14
  },
16
15
  "files": [
17
16
  "/dist"
@@ -34,6 +33,7 @@
34
33
  },
35
34
  "scripts": {
36
35
  "build": "make build",
36
+ "build:ci": "make build-ci",
37
37
  "build:packages": "make build-packages",
38
38
  "clean": "make clean",
39
39
  "clean:packages": "make clean-packages",
@@ -59,7 +59,6 @@
59
59
  "url": "https://github.com/openedx/frontend-app-authn/issues"
60
60
  },
61
61
  "dependencies": {
62
- "@edx/brand": "npm:@openedx/brand-openedx@^1.2.3",
63
62
  "@edx/openedx-atlas": "^0.7.0",
64
63
  "@fortawesome/fontawesome-svg-core": "^6.7.2",
65
64
  "@fortawesome/free-brands-svg-icons": "^6.7.2",
@@ -90,7 +89,7 @@
90
89
  "turbo": "^2.8.16"
91
90
  },
92
91
  "peerDependencies": {
93
- "@openedx/frontend-base": "^1.0.0-alpha || 0.0.0-dev",
92
+ "@openedx/frontend-base": "^1.0.0 || 0.0.0-dev",
94
93
  "@openedx/paragon": "^23",
95
94
  "@tanstack/react-query": "^5",
96
95
  "react": "^18",
package/dist/app.scss DELETED
@@ -1,2 +0,0 @@
1
- @use "@openedx/frontend-base/shell/app.scss";
2
- @use "./sass/style";