Redirect to login on anonymous access to profile pages When an unauthorized session tries to access any of the profile pages, server will return status code 500 and a generic "Server Error" page will be rendered. Instead, user should be redirected to the login page. To fix this we simply check if user is authorized in `VelocityViewServlet` and if not, redirect to the `auth.loginUrl`. Bug: Issue 311627062 Change-Id: I3264f50500733e277ef10ca1a2ff36287f89fc99
diff --git a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/velocity/VelocityViewServlet.java b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/velocity/VelocityViewServlet.java index b7dc08f..5e4498f 100644 --- a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/velocity/VelocityViewServlet.java +++ b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/velocity/VelocityViewServlet.java
@@ -13,8 +13,11 @@ // limitations under the License. package com.googlesource.gerrit.plugins.github.velocity; +import static com.googlesource.gerrit.plugins.github.oauth.GitHubOAuthConfig.GITHUB_PLUGIN_OAUTH_SCOPE; + import com.google.common.base.MoreObjects; import com.google.gerrit.server.CurrentUser; +import com.google.gerrit.server.config.AuthConfig; import com.google.inject.Inject; import com.google.inject.Provider; import com.google.inject.Singleton; @@ -53,6 +56,7 @@ private final GitHubConfig config; private final VirtualDomainConfig virtualDomainConfig; private final CanonicalWebUrls canonicalWebUrls; + private final AuthConfig authConfig; @Inject public VelocityViewServlet( @@ -62,7 +66,8 @@ Provider<CurrentUser> userProvider, GitHubConfig config, VirtualDomainConfig virutalDomainConfig, - CanonicalWebUrls canonicalWebUrls) { + CanonicalWebUrls canonicalWebUrls, + AuthConfig authConfig) { this.velocityRuntime = velocityRuntime; this.modelProvider = modelProvider; @@ -71,6 +76,7 @@ this.config = config; this.virtualDomainConfig = virutalDomainConfig; this.canonicalWebUrls = canonicalWebUrls; + this.authConfig = authConfig; } @Override @@ -79,6 +85,12 @@ HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse resp = (HttpServletResponse) response; + if (!(req.getRequestURI().equals(GITHUB_PLUGIN_OAUTH_SCOPE) + || userProvider.get().isIdentifiedUser())) { + resp.sendRedirect(authConfig.getLoginUrl()); + return; + } + String pathInfo = STATIC_PREFIX + MoreObjects.firstNonNull((String) req.getAttribute("destUrl"), req.getPathInfo());