Separate login redirect utility from MenuFilter Used for the followup change which uses the same login redirect utility. Change-Id: Ib5e6d3ba8827b7fb419b943650ba26372c4fece9
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitiles/LoginRedirectUtil.java b/src/main/java/com/googlesource/gerrit/plugins/gitiles/LoginRedirectUtil.java new file mode 100644 index 0000000..43d4bdd --- /dev/null +++ b/src/main/java/com/googlesource/gerrit/plugins/gitiles/LoginRedirectUtil.java
@@ -0,0 +1,49 @@ +// Copyright (C) 2025 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.googlesource.gerrit.plugins.gitiles; + +import com.google.gerrit.extensions.restapi.Url; +import com.google.gitiles.GitilesUrls; +import javax.servlet.http.HttpServletRequest; + +public final class LoginRedirectUtil { + private LoginRedirectUtil() {} + + public static String getLoginRedirectUrl(HttpServletRequest req, GitilesUrls urls) { + String baseUrl = urls.getBaseGerritUrl(req); + String token = getRequestUrl(req); + if (baseUrl == null) { + baseUrl = ""; + } + if (!baseUrl.isEmpty() && token.startsWith(baseUrl)) { + token = token.substring(baseUrl.length()); + } + String queryString = req.getQueryString(); + if (queryString != null && !queryString.isEmpty()) { + token = token.concat("?" + queryString); + } + String loginUrl = baseUrl + "login/"; + return loginUrl + Url.encode(token); + } + + + @SuppressWarnings("JdkObsolete") + private static String getRequestUrl(HttpServletRequest req) { + if (req.getRequestURL() == null) { + return ""; + } + return req.getRequestURL().toString(); + } +}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitiles/MenuFilter.java b/src/main/java/com/googlesource/gerrit/plugins/gitiles/MenuFilter.java index 263fd70..ed43f03 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/gitiles/MenuFilter.java +++ b/src/main/java/com/googlesource/gerrit/plugins/gitiles/MenuFilter.java
@@ -15,7 +15,6 @@ package com.googlesource.gerrit.plugins.gitiles; import com.google.common.collect.Lists; -import com.google.gerrit.extensions.restapi.Url; import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.IdentifiedUser; import com.google.gitiles.BaseServlet; @@ -53,7 +52,8 @@ entries.add(BaseServlet.menuEntry(((IdentifiedUser) user).getName(), null)); entries.add(BaseServlet.menuEntry("Sign Out", urls.getBaseGerritUrl(req) + "logout")); } else { - entries.add(BaseServlet.menuEntry("Sign In", getLoginRedirectUrl(req))); + entries.add( + BaseServlet.menuEntry("Sign In", LoginRedirectUtil.getLoginRedirectUrl(req, urls))); } BaseServlet.putSoyData(req, "menuEntries", entries); chain.doFilter(request, response); @@ -64,24 +64,4 @@ @Override public void destroy() {} - - private String getLoginRedirectUrl(HttpServletRequest req) { - String baseUrl = urls.getBaseGerritUrl(req); - String loginUrl = baseUrl + "login/"; - String token = getRequestUrl(req); - if (!baseUrl.isEmpty()) { - token = token.substring(baseUrl.length()); - } - - String queryString = req.getQueryString(); - if (queryString != null && !queryString.isEmpty()) { - token = token.concat("?" + queryString); - } - return (loginUrl + Url.encode(token)); - } - - @SuppressWarnings("JdkObsolete") - private static String getRequestUrl(HttpServletRequest req) { - return req.getRequestURL().toString(); - } }