diff options
author | David Pursehouse <dpursehouse@collab.net> | 2018-10-23 14:40:09 +0900 |
---|---|---|
committer | David Pursehouse <dpursehouse@collab.net> | 2018-10-25 11:51:19 +0900 |
commit | 36d32d9d6cf82863c483b1b90eb604f24945626a (patch) | |
tree | 12580f77eba981918274773393a0c6ff5d6c63d3 | |
parent | 8d71be75c74b1368cbd0d1f2b395a0134a938ae8 (diff) |
AccountManager: Fix logic for updating display name on authentication
The actual update was being guarded by a condition that would only
be true if the realm _does not_ allow the display name to be updated.
Change-Id: Icc284542d69294f3c931bfa07a6df8866952560b
-rw-r--r-- | gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/AccountIT.java | 16 | ||||
-rw-r--r-- | gerrit-server/src/main/java/com/google/gerrit/server/account/AccountManager.java | 12 |
2 files changed, 25 insertions, 3 deletions
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/AccountIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/AccountIT.java index 1fb25c7ef9..31c0ecfbe8 100644 --- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/AccountIT.java +++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/AccountIT.java @@ -86,7 +86,9 @@ import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.client.RefNames; import com.google.gerrit.server.Sequences; import com.google.gerrit.server.account.AccountConfig; +import com.google.gerrit.server.account.AccountManager; import com.google.gerrit.server.account.AccountsUpdate; +import com.google.gerrit.server.account.AuthRequest; import com.google.gerrit.server.account.Emails; import com.google.gerrit.server.account.WatchConfig; import com.google.gerrit.server.account.WatchConfig.NotifyType; @@ -168,6 +170,8 @@ public class AccountIT extends AbstractDaemonTest { @Inject protected Emails emails; + @Inject private AccountManager accountManager; + private AccountIndexedCounter accountIndexedCounter; private RegistrationHandle accountIndexEventCounterHandle; private RefUpdateCounter refUpdateCounter; @@ -1820,6 +1824,18 @@ public class AccountIT extends AbstractDaemonTest { assertGroups(newUser, ImmutableList.of(group)); } + @Test + public void updateDisplayName() throws Exception { + String name = name("test"); + gApi.accounts().create(name); + AuthRequest who = AuthRequest.forUser(name); + accountManager.authenticate(who); + assertThat(gApi.accounts().id(name).get().name).isEqualTo(name); + who.setDisplayName("Something Else"); + accountManager.authenticate(who); + assertThat(gApi.accounts().id(name).get().name).isEqualTo("Something Else"); + } + private void assertGroups(String user, List<String> expected) throws Exception { List<String> actual = gApi.accounts().id(user).getGroups().stream().map(g -> g.name).collect(toList()); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/AccountManager.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/AccountManager.java index 2967208281..41b0c9fe9b 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/AccountManager.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/AccountManager.java @@ -235,10 +235,16 @@ public class AccountManager { extId, ExternalId.create(extId.key(), extId.accountId(), newEmail, extId.password())); } - if (!realm.allowsEdit(AccountFieldName.FULL_NAME) - && !Strings.isNullOrEmpty(who.getDisplayName()) + if (!Strings.isNullOrEmpty(who.getDisplayName()) && !eq(user.getAccount().getFullName(), who.getDisplayName())) { - accountUpdates.add(a -> a.setFullName(who.getDisplayName())); + if (realm.allowsEdit(AccountFieldName.FULL_NAME)) { + accountUpdates.add(a -> a.setFullName(who.getDisplayName())); + } else { + log.warn( + "Not changing already set display name '{}' to '{}'", + user.getAccount().getFullName(), + who.getDisplayName()); + } } if (!realm.allowsEdit(AccountFieldName.USER_NAME) |