SSO: Fallback to email if the username field is empty #1400
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.
Description
Today when you have an enterprise connection configured and you type in an email address that matches the domain of this connection (eg: john@contoso.com => contoso.com), the login/signup/password reset pages will take that into account.
While this works fine for database connections, there is an issue when the database connection requires a username. With usernames required, the
databaseUsernameValue
method will only look at the username field. While this works for the login page, it does not for signup and password reset (because there you enter your email address ... in the email field). This currently results in:This change will have
databaseUsernameValue
fallback to the email address if the username field is not filled in. With that, when an enterprise user accidentally fills in their corporate email address on the signup or password reset page, we will trigger the correct behavior of forcing them to use SSO (or preventing them to change their password).Testing
The change has manually been tested. An account configured with a DB connection requiring a username + an enterprise connection now results in this behavior:
Unit tests were also added.