diff options
author | Young Gyu Park <younggyu@google.com> | 2018-02-01 15:30:24 +0900 |
---|---|---|
committer | Young Gyu Park <younggyu@google.com> | 2018-02-02 11:39:47 +0900 |
commit | fcdf128425d8f1134729845f6b32c2b29da8abfd (patch) | |
tree | a4832ec9c17db1991dda6bbf1677082727acea20 /src | |
parent | d9d87a7400dcdac48c3679110c254d7eba7512a0 (diff) | |
download | dashboard-fcdf128425d8f1134729845f6b32c2b29da8abfd.tar.gz |
google.com email check to redirect non googler to error page
Test: Tested with browser on GAE
Bug: 72781506
Change-Id: I4dc01249fc41e8b6a078302d5076deab9bb186eb
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/com/android/vts/servlet/BaseServlet.java | 87 | ||||
-rw-r--r-- | src/main/webapp/WEB-INF/jsp/auth_error.jsp | 38 |
2 files changed, 91 insertions, 34 deletions
diff --git a/src/main/java/com/android/vts/servlet/BaseServlet.java b/src/main/java/com/android/vts/servlet/BaseServlet.java index 845d4ff..88c7eda 100644 --- a/src/main/java/com/android/vts/servlet/BaseServlet.java +++ b/src/main/java/com/android/vts/servlet/BaseServlet.java @@ -23,7 +23,11 @@ import com.google.gson.Gson; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Optional; +import java.util.logging.Level; import java.util.logging.Logger; +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -121,46 +125,61 @@ public abstract class BaseServlet extends HttpServlet { // If the user is logged out, allow them to log back in and return to the page. // Set the logout URL to direct back to a login page that directs to the current request. UserService userService = UserServiceFactory.getUserService(); - User currentUser = userService.getCurrentUser(); + Optional<User> currentUser = Optional.ofNullable(userService.getCurrentUser()); + String currentUserEmail = + currentUser.isPresent() + ? currentUser.map(user -> user.getEmail().trim()).orElse("") + : ""; String requestUri = request.getRequestURI(); String requestArgs = request.getQueryString(); String loginURI = userService.createLoginURL(requestUri + '?' + requestArgs); String logoutURI = userService.createLogoutURL(loginURI); - if (currentUser == null || currentUser.getEmail() == null) { + if (currentUserEmail != "") { + + int activeIndex; + switch (getNavParentType()) { + case PROFILING_LIST: + activeIndex = 3; + break; + case COVERAGE_OVERVIEW: + activeIndex = 2; + break; + case RELEASE: + activeIndex = 1; + break; + default: + activeIndex = 0; + break; + } + if (request.getParameter(TREE_DEFAULT_PARAM) != null) { + HttpSession session = request.getSession(true); + boolean treeDefault = request.getParameter(TREE_DEFAULT_PARAM).equals("true"); + session.setAttribute(TREE_DEFAULT_PARAM, treeDefault); + } + + request.setAttribute("serverName", request.getServerName()); + request.setAttribute("logoutURL", logoutURI); + request.setAttribute("email", currentUserEmail); + request.setAttribute("analyticsID", new Gson().toJson(ANALYTICS_ID)); + request.setAttribute("breadcrumbLinks", getBreadcrumbLinks(request)); + request.setAttribute("navbarLinks", navbarLinks); + request.setAttribute("activeIndex", activeIndex); + response.setContentType("text/html"); + + if (currentUserEmail.endsWith("google.com")) { + doGetHandler(request, response); + } else { + RequestDispatcher dispatcher = + request.getRequestDispatcher("WEB-INF/jsp/auth_error.jsp"); + try { + dispatcher.forward(request, response); + } catch (ServletException e) { + logger.log(Level.SEVERE, "Servlet Exception caught : ", e); + } + } + } else { response.sendRedirect(loginURI); - return; } - - int activeIndex; - switch (getNavParentType()) { - case PROFILING_LIST: - activeIndex = 3; - break; - case COVERAGE_OVERVIEW: - activeIndex = 2; - break; - case RELEASE: - activeIndex = 1; - break; - default: - activeIndex = 0; - break; - } - if (request.getParameter(TREE_DEFAULT_PARAM) != null) { - HttpSession session = request.getSession(true); - boolean treeDefault = request.getParameter(TREE_DEFAULT_PARAM).equals("true"); - session.setAttribute(TREE_DEFAULT_PARAM, treeDefault); - } - - request.setAttribute("serverName", request.getServerName()); - request.setAttribute("logoutURL", logoutURI); - request.setAttribute("email", currentUser.getEmail()); - request.setAttribute("analyticsID", new Gson().toJson(ANALYTICS_ID)); - request.setAttribute("breadcrumbLinks", getBreadcrumbLinks(request)); - request.setAttribute("navbarLinks", navbarLinks); - request.setAttribute("activeIndex", activeIndex); - response.setContentType("text/html"); - doGetHandler(request, response); } /** diff --git a/src/main/webapp/WEB-INF/jsp/auth_error.jsp b/src/main/webapp/WEB-INF/jsp/auth_error.jsp new file mode 100644 index 0000000..43bd9f3 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/auth_error.jsp @@ -0,0 +1,38 @@ +<%-- + ~ Copyright (c) 2018 Google Inc. All Rights Reserved. + ~ + ~ 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. + --%> +<%@ page contentType='text/html;charset=UTF-8' language='java' %> +<%@ taglib prefix='fn' uri='http://java.sun.com/jsp/jstl/functions' %> +<%@ taglib prefix='c' uri='http://java.sun.com/jsp/jstl/core'%> + +<html> + <link rel='stylesheet' href='/css/dashboard_main.css'> + <%@ include file='header.jsp' %> + <body> + + <div class='container wide'> + + <div class="card-panel"> + <span class="red-text text-darken-2"> + <h3> Sorry! you got a wrong email account. </h3> + <br/> + You have to register an account to access dashboard. + </span> + </div> + + </div> + <%@ include file='footer.jsp' %> + </body> +</html> |