Honour `userNameCaseInsensitive` config
Fix an issue where the creation of new external ids was always hardcoded
to be done case insensitively.
Gerrit provides an `auth.userNameCaseInsensitive` configuration [1] that
specifies whether usernames need to be handled case insensitively.
Honour the `auth.userNameCaseInsensitive` when creating or getting
external-ids.
[1] https://gerrit.googlesource.com/gerrit/+/refs/heads/stable-3.5/Documentation/config-gerrit.txt#655
Bug: Issue 15447
Change-Id: I6ca54962a7bac70f6c32467d633e9da2366e989b
diff --git a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/PullRequestImportJob.java b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/PullRequestImportJob.java
index 9395056..f706539 100644
--- a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/PullRequestImportJob.java
+++ b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/PullRequestImportJob.java
@@ -26,6 +26,7 @@
import com.google.gerrit.server.account.AccountImporter;
import com.google.gerrit.server.account.externalids.ExternalId;
import com.google.gerrit.server.account.externalids.ExternalIds;
+import com.google.gerrit.server.config.AuthConfig;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.project.ProjectCache;
import com.google.gerrit.server.project.ProjectState;
@@ -79,6 +80,7 @@
private final String repoName;
private final int prId;
private final GitRepositoryManager repoMgr;
+ private final AuthConfig authConfig;
private final int jobIndex;
private final ExternalIds externalIds;
private PullRequestCreateChange createChange;
@@ -96,10 +98,12 @@
GitHubRepository.Factory gitHubRepoFactory,
ScopedProvider<GitHubLogin> ghLoginProvider,
ExternalIds externalIds,
+ AuthConfig authConfig,
@Assisted("index") int jobIndex,
@Assisted("organisation") String organisation,
@Assisted("name") String repoName,
@Assisted int pullRequestId) {
+ this.authConfig = authConfig;
this.jobIndex = jobIndex;
this.repoMgr = repoMgr;
this.ghLogin = ghLoginProvider.get();
@@ -217,7 +221,8 @@
private Optional<ExternalId> externalIdByScheme(String scheme, String id) {
try {
- return externalIds.get(ExternalId.Key.create(scheme, id, true));
+ return externalIds.get(
+ ExternalId.Key.create(scheme, id, authConfig.isUserNameCaseInsensitive()));
} catch (IOException e) {
LOG.error("Unable to get external id for " + scheme + ":" + id, e);
return Optional.empty();
diff --git a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/wizard/AccountController.java b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/wizard/AccountController.java
index 59604ef..23edcbc 100644
--- a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/wizard/AccountController.java
+++ b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/wizard/AccountController.java
@@ -34,6 +34,7 @@
import com.google.gerrit.server.account.externalids.ExternalId;
import com.google.gerrit.server.account.externalids.ExternalIdFactory;
import com.google.gerrit.server.account.externalids.ExternalIds;
+import com.google.gerrit.server.config.AuthConfig;
import com.google.gerrit.server.restapi.account.AddSshKey;
import com.google.gerrit.server.restapi.account.GetSshKeys;
import com.google.gerrit.server.restapi.account.PutName;
@@ -71,6 +72,7 @@
private final ExternalIds externalIds;
private final ExternalIdFactory externalIdFactory;
private final AuthRequest.Factory authRequestFactory;
+ private final AuthConfig authConfig;
@Inject
public AccountController(
@@ -83,7 +85,8 @@
@ServerInitiated final Provider<AccountsUpdate> accountsUpdateProvider,
final ExternalIds externalIds,
final ExternalIdFactory externalIdFactory,
- final AuthRequest.Factory authRequestFactory) {
+ final AuthRequest.Factory authRequestFactory,
+ final AuthConfig authConfig) {
this.restAddSshKey = restAddSshKey;
this.restGetSshKeys = restGetSshKeys;
this.accountManager = accountManager;
@@ -94,6 +97,7 @@
this.externalIds = externalIds;
this.externalIdFactory = externalIdFactory;
this.authRequestFactory = authRequestFactory;
+ this.authConfig = authConfig;
}
@Override
@@ -135,7 +139,8 @@
nameInput.name = fullName;
putName.apply(user, nameInput);
- ExternalId.Key key = ExternalId.Key.create(SCHEME_USERNAME, username, true);
+ ExternalId.Key key =
+ ExternalId.Key.create(SCHEME_USERNAME, username, authConfig.isUserNameCaseInsensitive());
Optional<ExternalId> other;
try {
other = externalIds.get(key);