Default GitHub scopes when not configured in gerrit.config
Use USER+PUBLIC_REPO as default scopes when using GitHub
with a basic empty [github] gerrit.config
Change-Id: I89fbc9ac0c909893f59dfada3a237b6ad6f80b2d
diff --git a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubLogin.java b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubLogin.java
index d7b670d..69f94da 100644
--- a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubLogin.java
+++ b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubLogin.java
@@ -17,6 +17,7 @@
import java.io.IOException;
import java.util.Arrays;
import java.util.HashSet;
+import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;
@@ -42,6 +43,7 @@
public class GitHubLogin {
private static final Logger LOG = LoggerFactory.getLogger(GitHubLogin.class);
+ private static final List<Scope> DEFAULT_SCOPES = Arrays.asList(Scope.PUBLIC_REPO, Scope.USER_EMAIL);
private static final int YEARS = 365;
private static final long SCOPE_COOKIE_NEVER_EXPIRES = DAYS.toSeconds(50 * YEARS);
@@ -212,11 +214,14 @@
private SortedSet<Scope> getScopes(String baseScopeKey, Scope... scopes) {
HashSet<Scope> fullScopes =
oAuthCookie == null ? new HashSet<Scope>(
- config.scopes.get(baseScopeKey)) : new HashSet<Scope>(
+ scopesForKey(baseScopeKey)) : new HashSet<Scope>(
oAuthCookie.scopes);
fullScopes.addAll(Arrays.asList(scopes));
return new TreeSet<Scope>(fullScopes);
}
+ private List<Scope> scopesForKey(String baseScopeKey) {
+ return Objects.firstNonNull(config.scopes.get(baseScopeKey), DEFAULT_SCOPES);
+ }
}