Merge branch 'stable-3.0'
* stable-3.0: Update NoteDb documentation for 3.0 NotificationEmail: Fix eliding project name without slash Clean up NotificationEmailTest Update links to Google individual and corporate CLA pages Bazel: Remove iteration over depset dev-bazel: Fix section title sequence Elasticsearch: Exclude types from V7 which deprecates them Print test errors by default Send an email notification when the HTTP password is deleted or changed Send email notification when SSH key or GPG key is removed StaticModule: Remove unused GERRIT_UI_COOKIE Show progress on number of users migrated during schema migration 146 Additional changes in this merge to adapt to master: - Move changes in dev-contributing.txt to dev-cla.txt Change-Id: I5b9c2e454c551ccfcbd2ecaa1653044cc9597382
This commit is contained in:
@@ -17,7 +17,10 @@ package com.google.gerrit.gpg.server;
|
||||
import static com.google.gerrit.gpg.PublicKeyStore.keyIdToString;
|
||||
import static com.google.gerrit.server.account.externalids.ExternalId.SCHEME_GPGKEY;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.flogger.FluentLogger;
|
||||
import com.google.common.io.BaseEncoding;
|
||||
import com.google.gerrit.exceptions.EmailException;
|
||||
import com.google.gerrit.extensions.common.Input;
|
||||
import com.google.gerrit.extensions.restapi.ResourceConflictException;
|
||||
import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
|
||||
@@ -30,6 +33,7 @@ import com.google.gerrit.server.UserInitiated;
|
||||
import com.google.gerrit.server.account.AccountsUpdate;
|
||||
import com.google.gerrit.server.account.externalids.ExternalId;
|
||||
import com.google.gerrit.server.account.externalids.ExternalIds;
|
||||
import com.google.gerrit.server.mail.send.DeleteKeySender;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.Provider;
|
||||
import java.io.IOException;
|
||||
@@ -42,22 +46,26 @@ import org.eclipse.jgit.lib.PersonIdent;
|
||||
import org.eclipse.jgit.lib.RefUpdate;
|
||||
|
||||
public class DeleteGpgKey implements RestModifyView<GpgKey, Input> {
|
||||
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
|
||||
|
||||
private final Provider<PersonIdent> serverIdent;
|
||||
private final Provider<PublicKeyStore> storeProvider;
|
||||
private final Provider<AccountsUpdate> accountsUpdateProvider;
|
||||
private final ExternalIds externalIds;
|
||||
private final DeleteKeySender.Factory deleteKeySenderFactory;
|
||||
|
||||
@Inject
|
||||
DeleteGpgKey(
|
||||
@GerritPersonIdent Provider<PersonIdent> serverIdent,
|
||||
Provider<PublicKeyStore> storeProvider,
|
||||
@UserInitiated Provider<AccountsUpdate> accountsUpdateProvider,
|
||||
ExternalIds externalIds) {
|
||||
ExternalIds externalIds,
|
||||
DeleteKeySender.Factory deleteKeySenderFactory) {
|
||||
this.serverIdent = serverIdent;
|
||||
this.storeProvider = storeProvider;
|
||||
this.accountsUpdateProvider = accountsUpdateProvider;
|
||||
this.externalIds = externalIds;
|
||||
this.deleteKeySenderFactory = deleteKeySenderFactory;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -90,6 +98,15 @@ public class DeleteGpgKey implements RestModifyView<GpgKey, Input> {
|
||||
switch (saveResult) {
|
||||
case NO_CHANGE:
|
||||
case FAST_FORWARD:
|
||||
try {
|
||||
deleteKeySenderFactory
|
||||
.create(rsrc.getUser(), ImmutableList.of(PublicKeyStore.keyToString(key)))
|
||||
.send();
|
||||
} catch (EmailException e) {
|
||||
logger.atSevere().withCause(e).log(
|
||||
"Cannot send GPG key deletion message to %s",
|
||||
rsrc.getUser().getAccount().getPreferredEmail());
|
||||
}
|
||||
break;
|
||||
case FORCED:
|
||||
case IO_FAILURE:
|
||||
|
||||
@@ -19,6 +19,7 @@ import static com.google.gerrit.gpg.PublicKeyStore.keyToString;
|
||||
import static com.google.gerrit.server.account.externalids.ExternalId.SCHEME_GPGKEY;
|
||||
import static java.nio.charset.StandardCharsets.UTF_8;
|
||||
import static java.util.stream.Collectors.joining;
|
||||
import static java.util.stream.Collectors.toList;
|
||||
|
||||
import com.google.common.base.Joiner;
|
||||
import com.google.common.base.Throwables;
|
||||
@@ -54,6 +55,7 @@ import com.google.gerrit.server.account.AccountsUpdate;
|
||||
import com.google.gerrit.server.account.externalids.ExternalId;
|
||||
import com.google.gerrit.server.account.externalids.ExternalIds;
|
||||
import com.google.gerrit.server.mail.send.AddKeySender;
|
||||
import com.google.gerrit.server.mail.send.DeleteKeySender;
|
||||
import com.google.gerrit.server.query.account.InternalAccountQuery;
|
||||
import com.google.gerrit.server.update.RetryHelper;
|
||||
import com.google.gerrit.server.update.RetryHelper.ActionType;
|
||||
@@ -86,7 +88,8 @@ public class PostGpgKeys implements RestModifyView<AccountResource, GpgKeysInput
|
||||
private final Provider<CurrentUser> self;
|
||||
private final Provider<PublicKeyStore> storeProvider;
|
||||
private final GerritPublicKeyChecker.Factory checkerFactory;
|
||||
private final AddKeySender.Factory addKeyFactory;
|
||||
private final AddKeySender.Factory addKeySenderFactory;
|
||||
private final DeleteKeySender.Factory deleteKeySenderFactory;
|
||||
private final Provider<InternalAccountQuery> accountQueryProvider;
|
||||
private final ExternalIds externalIds;
|
||||
private final Provider<AccountsUpdate> accountsUpdateProvider;
|
||||
@@ -98,7 +101,8 @@ public class PostGpgKeys implements RestModifyView<AccountResource, GpgKeysInput
|
||||
Provider<CurrentUser> self,
|
||||
Provider<PublicKeyStore> storeProvider,
|
||||
GerritPublicKeyChecker.Factory checkerFactory,
|
||||
AddKeySender.Factory addKeyFactory,
|
||||
AddKeySender.Factory addKeySenderFactory,
|
||||
DeleteKeySender.Factory deleteKeySenderFactory,
|
||||
Provider<InternalAccountQuery> accountQueryProvider,
|
||||
ExternalIds externalIds,
|
||||
@UserInitiated Provider<AccountsUpdate> accountsUpdateProvider,
|
||||
@@ -107,7 +111,8 @@ public class PostGpgKeys implements RestModifyView<AccountResource, GpgKeysInput
|
||||
this.self = self;
|
||||
this.storeProvider = storeProvider;
|
||||
this.checkerFactory = checkerFactory;
|
||||
this.addKeyFactory = addKeyFactory;
|
||||
this.addKeySenderFactory = addKeySenderFactory;
|
||||
this.deleteKeySenderFactory = deleteKeySenderFactory;
|
||||
this.accountQueryProvider = accountQueryProvider;
|
||||
this.externalIds = externalIds;
|
||||
this.accountsUpdateProvider = accountsUpdateProvider;
|
||||
@@ -248,13 +253,24 @@ public class PostGpgKeys implements RestModifyView<AccountResource, GpgKeysInput
|
||||
case FORCED:
|
||||
if (!addedKeys.isEmpty()) {
|
||||
try {
|
||||
addKeyFactory.create(user, addedKeys).send();
|
||||
addKeySenderFactory.create(user, addedKeys).send();
|
||||
} catch (EmailException e) {
|
||||
logger.atSevere().withCause(e).log(
|
||||
"Cannot send GPG key added message to %s",
|
||||
rsrc.getUser().getAccount().getPreferredEmail());
|
||||
}
|
||||
}
|
||||
if (!toRemove.isEmpty()) {
|
||||
try {
|
||||
deleteKeySenderFactory
|
||||
.create(user, toRemove.stream().map(Fingerprint::toString).collect(toList()))
|
||||
.send();
|
||||
} catch (EmailException e) {
|
||||
logger.atSevere().withCause(e).log(
|
||||
"Cannot send GPG key deleted message to %s",
|
||||
user.getAccount().getPreferredEmail());
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NO_CHANGE:
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user