diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/AccountSecurityImpl.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/AccountSecurityImpl.java index 0ff12f0d25..b2a6afce4a 100644 --- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/AccountSecurityImpl.java +++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/AccountSecurityImpl.java @@ -144,7 +144,7 @@ class AccountSecurityImpl extends BaseServiceImplementation implements me.setFullName(Strings.emptyToNull(name)); } if (!Strings.isNullOrEmpty(emailAddr) - && !self.getEmailAddresses().contains(emailAddr)) { + && !self.hasEmailAddress(emailAddr)) { throw new Failure(new PermissionDeniedException("Email address must be verified")); } me.setPreferredEmail(Strings.emptyToNull(emailAddr)); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/IdentifiedUser.java b/gerrit-server/src/main/java/com/google/gerrit/server/IdentifiedUser.java index bb16710262..a8b42edd97 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/IdentifiedUser.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/IdentifiedUser.java @@ -270,6 +270,10 @@ public class IdentifiedUser extends CurrentUser { return diffPref; } + public boolean hasEmailAddress(String email) { + return getEmailAddresses().contains(email); + } + public Set getEmailAddresses() { if (emailAddresses == null) { emailAddresses = state().getEmailAddresses(); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/Emails.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/Emails.java index a1785628e6..733cf5bd5b 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/Emails.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/Emails.java @@ -66,7 +66,7 @@ public class Emails implements throw new ResourceNotFoundException(); } return new AccountResource.Email(rsrc.getUser(), email); - } else if (rsrc.getUser().getEmailAddresses().contains(id.get())) { + } else if (rsrc.getUser().hasEmailAddress(id.get())) { return new AccountResource.Email(rsrc.getUser(), id.get()); } else { throw new ResourceNotFoundException(); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeUtil.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeUtil.java index 043e024902..4a6c8def10 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeUtil.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeUtil.java @@ -379,8 +379,7 @@ public class MergeUtil { final Timestamp dt = submitter.getGranted(); final TimeZone tz = myIdent.getTimeZone(); - if (emails.size() == 1 - && who.getEmailAddresses().contains(emails.iterator().next())) { + if (emails.size() == 1 && who.hasEmailAddress(emails.iterator().next())) { authorIdent = new PersonIdent(codeReviewCommits.get(0).getAuthorIdent(), dt, tz); } else { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java index cfc27b6beb..1218a45541 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java @@ -2279,7 +2279,7 @@ public class ReceiveCommits { break; } - if (defaultName && currentUser.getEmailAddresses().contains( + if (defaultName && currentUser.hasEmailAddress( c.getCommitterIdent().getEmailAddress())) { try { Account a = db.accounts().get(currentUser.getAccountId()); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/validators/CommitValidators.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/validators/CommitValidators.java index 901843ff0b..d030a553e7 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/validators/CommitValidators.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/validators/CommitValidators.java @@ -394,7 +394,7 @@ public class CommitValidators { if (e != null) { sboAuthor |= author.getEmailAddress().equals(e); sboCommitter |= committer.getEmailAddress().equals(e); - sboMe |= currentUser.getEmailAddresses().contains(e); + sboMe |= currentUser.hasEmailAddress(e); } } } @@ -425,7 +425,7 @@ public class CommitValidators { IdentifiedUser currentUser = (IdentifiedUser) refControl.getCurrentUser(); final PersonIdent author = receiveEvent.commit.getAuthorIdent(); - if (!currentUser.getEmailAddresses().contains(author.getEmailAddress()) + if (!currentUser.hasEmailAddress(author.getEmailAddress()) && !refControl.canForgeAuthor()) { List messages = new LinkedList<>(); @@ -454,8 +454,7 @@ public class CommitValidators { CommitReceivedEvent receiveEvent) throws CommitValidationException { IdentifiedUser currentUser = (IdentifiedUser) refControl.getCurrentUser(); final PersonIdent committer = receiveEvent.commit.getCommitterIdent(); - if (!currentUser.getEmailAddresses() - .contains(committer.getEmailAddress()) + if (!currentUser.hasEmailAddress(committer.getEmailAddress()) && !refControl.canForgeCommitter()) { List messages = new LinkedList<>(); messages.add(getInvalidEmailError(receiveEvent.commit, "committer", committer, diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/RefControl.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/RefControl.java index d3a8b692b6..669afc6b88 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/RefControl.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/RefControl.java @@ -297,7 +297,7 @@ public class RefControl { if (getCurrentUser().isIdentifiedUser()) { final IdentifiedUser user = (IdentifiedUser) getCurrentUser(); final String addr = tagger.getEmailAddress(); - valid = user.getEmailAddresses().contains(addr); + valid = user.hasEmailAddress(addr); } else { valid = false; }