Fix local account search on LDAP login being case-sensitive #30113
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.
We recently migrated our Mastodon-only accounts to our LDAP directory, where all usernames are stored with lowercase letters.
However, upon trying to log in to an account with different-case letters in LDAP and Mastodon, it would fail to find the account and try to create a new one instead. For which the validation then also failed due to the username and email already existing in LDAP.
The validation exception is correct there, since the account does already exist. But since Mastodon usernames are case insensitive, the account lookup during login should also be. This commit changes the database query to use PostgreSQL's
ILIKE
matching function, which works like a case-insensitive equals matcher when used like this.