Clear PartialRegistration when Continue selected on LTI account linking page#71744
Open
carl-codeorg wants to merge 1 commit intostagingfrom
Open
Clear PartialRegistration when Continue selected on LTI account linking page#71744carl-codeorg wants to merge 1 commit intostagingfrom
carl-codeorg wants to merge 1 commit intostagingfrom
Conversation
nicklathe
approved these changes
Mar 27, 2026
Contributor
nicklathe
left a comment
There was a problem hiding this comment.
Good catch, thanks for the clear explanation of the bug
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When the user successfully links their LTI login to an existing account, we clear the
PartialRegistrationin the account linking service. However, if they instead select to continue with a new roster-synced account, we set theirlms_landing_opted_outflag but leave thePartialRegistration. If they subsequently add an OAuth login to their account prior to thePartialRegistrationcache expiring, then hit the OAuth login route for that provider, theOmniauthCallbacksControllerwill recognize them as still in the account linking flow, and pass their user object into the account linking. This inadvertently deletes their account and actually sort of unlinks it, because the account they had previously linked their OAuth login to is now gone.Repro steps:
More info in the JIRA attachments, including the Statsig event log for the user that hit this error in prod, showing the breadcrumbs that lead to these repro steps.
This PR fixes the bug by:
PartialRegistrationafter the user selects Continueshould_link_accounts?check in OmniauthCallbackController, so that it respects thelms_landing_opted_outflag.Links
JIRA
Testing story
Deployment notes
Privacy and security