summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Pursehouse <dpursehouse@collab.net>2018-10-23 14:40:09 +0900
committerDavid Pursehouse <dpursehouse@collab.net>2018-10-25 11:51:19 +0900
commit36d32d9d6cf82863c483b1b90eb604f24945626a (patch)
tree12580f77eba981918274773393a0c6ff5d6c63d3
parent8d71be75c74b1368cbd0d1f2b395a0134a938ae8 (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.java16
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/account/AccountManager.java12
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)