PushCertificateChecker: Convert to a builder pattern
Change-Id: Ic32ad26ea89b5cbe9c0c4bfa33ace23d09a35750
This commit is contained in:
@@ -26,8 +26,7 @@ import java.io.IOException;
|
||||
|
||||
public class GerritPushCertificateChecker extends PushCertificateChecker {
|
||||
public interface Factory {
|
||||
GerritPushCertificateChecker create(IdentifiedUser expectedUser,
|
||||
boolean checkNonce);
|
||||
GerritPushCertificateChecker create(IdentifiedUser expectedUser);
|
||||
}
|
||||
|
||||
private final GitRepositoryManager repoManager;
|
||||
@@ -38,9 +37,8 @@ public class GerritPushCertificateChecker extends PushCertificateChecker {
|
||||
GerritPublicKeyChecker.Factory keyCheckerFactory,
|
||||
GitRepositoryManager repoManager,
|
||||
AllUsersName allUsers,
|
||||
@Assisted IdentifiedUser expectedUser,
|
||||
@Assisted boolean checkNonce) {
|
||||
super(keyCheckerFactory.create().setExpectedUser(expectedUser), checkNonce);
|
||||
@Assisted IdentifiedUser expectedUser) {
|
||||
super(keyCheckerFactory.create().setExpectedUser(expectedUser));
|
||||
this.repoManager = repoManager;
|
||||
this.allUsers = allUsers;
|
||||
}
|
||||
|
@@ -67,12 +67,18 @@ public abstract class PushCertificateChecker {
|
||||
}
|
||||
|
||||
private final PublicKeyChecker publicKeyChecker;
|
||||
private final boolean checkNonce;
|
||||
|
||||
protected PushCertificateChecker(PublicKeyChecker publicKeyChecker,
|
||||
boolean checkNonce) {
|
||||
private boolean checkNonce;
|
||||
|
||||
protected PushCertificateChecker(PublicKeyChecker publicKeyChecker) {
|
||||
this.publicKeyChecker = publicKeyChecker;
|
||||
checkNonce = true;
|
||||
}
|
||||
|
||||
/** Set whether to check the status of the nonce; defaults to true. */
|
||||
public PushCertificateChecker setCheckNonce(boolean checkNonce) {
|
||||
this.checkNonce = checkNonce;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -54,7 +54,8 @@ public class SignedPushPreReceiveHook implements PreReceiveHook {
|
||||
if (cert == null) {
|
||||
return;
|
||||
}
|
||||
CheckResult result = checkerFactory.create(user.get(), true)
|
||||
CheckResult result = checkerFactory.create(user.get())
|
||||
.setCheckNonce(true)
|
||||
.check(cert)
|
||||
.getCheckResult();
|
||||
if (!isAllowed(result, commands)) {
|
||||
|
@@ -95,8 +95,10 @@ public class GpgApiAdapterImpl implements GpgApiAdapter {
|
||||
IdentifiedUser expectedUser) throws GpgException {
|
||||
try {
|
||||
PushCertificate cert = PushCertificateParser.fromString(certStr);
|
||||
PushCertificateChecker.Result result =
|
||||
pushCertCheckerFactory.create(expectedUser, false).check(cert);
|
||||
PushCertificateChecker.Result result = pushCertCheckerFactory
|
||||
.create(expectedUser)
|
||||
.setCheckNonce(false)
|
||||
.check(cert);
|
||||
PushCertificateInfo info = new PushCertificateInfo();
|
||||
info.certificate = certStr;
|
||||
info.key = GpgKeys.toJson(result.getPublicKey(), result.getCheckResult());
|
||||
|
@@ -72,7 +72,7 @@ public class PushCertificateCheckerTest {
|
||||
}
|
||||
|
||||
private PushCertificateChecker newChecker(boolean checkNonce) {
|
||||
return new PushCertificateChecker(new PublicKeyChecker(), checkNonce) {
|
||||
return new PushCertificateChecker(new PublicKeyChecker()) {
|
||||
@Override
|
||||
protected Repository getRepository() {
|
||||
return tr.getRepository();
|
||||
@@ -82,7 +82,7 @@ public class PushCertificateCheckerTest {
|
||||
protected boolean shouldClose(Repository repo) {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
}.setCheckNonce(checkNonce);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
Reference in New Issue
Block a user