]> source.dussan.org Git - nextcloud-server.git/commitdiff
I dug into it again, and the issue is much simpler than I previously though. 33922/head
authorLouis Chemineau <louis@chmn.me>
Tue, 6 Sep 2022 08:58:01 +0000 (10:58 +0200)
committerbackportbot-nextcloud[bot] <backportbot-nextcloud[bot]@users.noreply.github.com>
Tue, 6 Sep 2022 15:24:01 +0000 (15:24 +0000)
- LDAP has an email address with capital letters
- NC store this address in lower case
- When the user logs in, we compare the [stored email with the new lower case email](https://github.com/nextcloud/server/blob/master/lib/private/AllConfig.php#L259-L261) before storing it. Here, both email will be the same, so we won't store the new email address with upper case letters. Which is what we want.
- We then [compare emails as they are before triggering an event](https://github.com/nextcloud/server/blob/master/lib/private/User/User.php#L202-L204), they won't match, so the user will receive an email signaling an email change every time he logs in.

The fix is to compare the old email with the new lower case email before sending the event.

Signed-off-by: Louis Chemineau <louis@chmn.me>
lib/private/User/User.php

index 5fa1272f95cc811e2693fa69143d1d59ab774444..0b88ed561731f894580b7fafc1002ab5257f0c0b 100644 (file)
@@ -193,7 +193,7 @@ class User implements IUser {
                        $this->setPrimaryEMailAddress('');
                }
 
-               if ($oldMailAddress !== $mailAddress) {
+               if ($oldMailAddress !== strtolower($mailAddress)) {
                        $this->triggerChange('eMailAddress', $mailAddress, $oldMailAddress);
                }
        }