summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorYoung Gyu Park <younggyu@google.com>2018-02-01 15:30:24 +0900
committerYoung Gyu Park <younggyu@google.com>2018-02-02 11:39:47 +0900
commitfcdf128425d8f1134729845f6b32c2b29da8abfd (patch)
treea4832ec9c17db1991dda6bbf1677082727acea20 /src
parentd9d87a7400dcdac48c3679110c254d7eba7512a0 (diff)
downloaddashboard-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.java87
-rw-r--r--src/main/webapp/WEB-INF/jsp/auth_error.jsp38
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>