fix: only auto-submit SSO registration form when provider returns an email#38860
fix: only auto-submit SSO registration form when provider returns an email#38860ayesha-waris wants to merge 1 commit into
Conversation
…email When a third-party auth provider has "skip registration form" enabled, the authn MFE context set autoSubmitRegForm=True unconditionally. Providers such as Facebook (email permission denied) or Microsoft Entra ID can complete authentication without returning an email claim; auto-submitting the registration form in that case silently fails client-side validation and leaves the learner stuck on a partially-filled form with no explanation. Gate the auto-submit on the provider actually returning an email so the learner falls back to the normal registration form and can fill in what is missing. Fixes: openedx#38780
|
Thanks for the pull request, @ayesha-waris! This repository is currently maintained by Once you've gone through the following steps feel free to tag them in a comment and let them know that your changes are ready for engineering review. 🔘 Get product approvalIf you haven't already, check this list to see if your contribution needs to go through the product review process.
🔘 Provide contextTo help your reviewers and other members of the community understand the purpose and larger context of your changes, feel free to add as much of the following information to the PR description as you can:
🔘 Get a green buildIf one or more checks are failing, continue working on your changes until this is no longer the case and your build turns green. DetailsWhere can I find more information?If you'd like to get more details on all aspects of the review process for open source pull requests (OSPRs), check out the following resources: When can I expect my changes to be merged?Our goal is to get community contributions seen and reviewed as efficiently as possible. However, the amount of time that it takes to review and merge a PR can vary significantly based on factors such as:
💡 As a result it may take up to several weeks or months to complete a review and merge your PR. |
There was a problem hiding this comment.
Pull request overview
This PR fixes an authn MFE “stuck registration form” scenario by ensuring the backend only instructs the MFE to auto-submit the third-party registration form when the running SSO pipeline actually has an email address available. This aligns the autoSubmitRegForm signal with the MFE’s required email field constraints and preserves the existing “happy path” behavior.
Changes:
- Gate
autoSubmitRegForm=Truebehind bothskip_registration_formand presence of an email in pipeline user details. - Add a regression test covering both “email present” (auto-submit) and “email missing” (do not auto-submit) cases.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| openedx/core/djangoapps/user_authn/views/utils.py | Only sets autoSubmitRegForm when the provider is configured to skip the form and the pipeline returned an email. |
| openedx/core/djangoapps/user_authn/api/tests/test_views.py | Adds a regression test verifying autoSubmitRegForm toggles correctly based on whether an email is returned. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Description
When a third-party auth (SSO) provider has Skip registration form enabled,
third_party_auth_contextsetautoSubmitRegForm=Trueunconditionally. Some providers — Facebook (when the user denies the email permission) and Microsoft Entra ID (accounts without a confirmed email) — complete authentication without returning an email claim. In that case the authn MFE auto-submits a registration form whose requiredemailfield is empty; client-side validation silently blocks the submit, and the learner is left stuck on a partially-filled form with no explanation.This gates the auto-submit on the provider actually returning an email. When no email is present, the learner falls back to the normal registration form and can fill in the missing field. The happy path (email present) is unchanged.
Fixes #38780
How to reproduce
After: the learner lands on the registration form with the email field empty and can complete it.
Testing
Added a regression test
MFEContextViewTest.test_skip_registration_form_requires_emailcovering both cases:autoSubmitRegFormisTrue(unchanged happy path)autoSubmitRegFormisFalse(learner keeps the form)