Trigger OAuth2 handshake only when /login is invoked. This allows OAuth2 to still allow anonymous browsing of Gerrit without having necessarily to redirect to GitHub. Change-Id: Iea446165c241fb812b6e19a826bcbfc374cffe2e
diff --git a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthConfig.java b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthConfig.java index 1ddfe03..5415ca6 100644 --- a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthConfig.java +++ b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthConfig.java
@@ -31,6 +31,7 @@ public static final String OAUTH_FINAL = "/oauth"; public static final String LOGIN_OAUTH_ACCESS_TOKEN = "/login/oauth/access_token"; + public static final String OAUTH_LOGIN = "/login"; public final String gitHubUrl; public final String gitHubClientId;
diff --git a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthFilter.java b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthFilter.java index ce2cfd5..50cc750 100644 --- a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthFilter.java +++ b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthFilter.java
@@ -29,10 +29,8 @@ import org.slf4j.LoggerFactory; import com.google.common.base.Strings; -import com.google.gerrit.httpd.WebSession; import com.google.gson.Gson; import com.google.inject.Inject; -import com.google.inject.Provider; public class OAuthFilter implements Filter { private static final org.slf4j.Logger log = LoggerFactory @@ -87,7 +85,11 @@ "Login failed"); } } else { + if(oauth.isOAuthLogin(httpRequest)) { oauth.loginPhase1(httpRequest, httpResponse); + } else { + chain.doFilter(request, response); + } } return; } else {
diff --git a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthProtocol.java b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthProtocol.java index 92562e6..82af2dd 100644 --- a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthProtocol.java +++ b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthProtocol.java
@@ -18,14 +18,12 @@ import org.apache.http.client.methods.HttpPost; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP; -import org.kohsuke.github.GHMyself; import org.kohsuke.github.GitHub; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.gson.Gson; import com.google.inject.Inject; -import com.google.inject.Provider; import com.google.inject.Singleton; @Singleton @@ -60,6 +58,10 @@ return request.getRequestURI().endsWith(OAuthConfig.OAUTH_FINAL); } + public boolean isOAuthLogin(HttpServletRequest request) { + return request.getRequestURI().endsWith(OAuthConfig.OAUTH_LOGIN); + } + public GitHubLogin loginPhase2(HttpServletRequest request, HttpServletResponse response) throws IOException {