Skip to content

Commit

Permalink
AtlasMapper 2.4.7
Browse files Browse the repository at this point in the history
- Fixed redirection to login page.
  • Loading branch information
gaellafond committed Sep 19, 2023
1 parent 59326cd commit 7ff80b2
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 12 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<groupId>au.gov.aims</groupId>
<artifactId>atlasmapper</artifactId>
<packaging>war</packaging>
<version>2.4.6</version>
<version>2.4.7</version>
<name>AtlasMapper server and clients</name>
<description>This application compiled as a single War, that can be deployed in Tomcat, without any other dependency.\n\
It contains:\n\
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
public class LoginServlet extends HttpServlet {
private static final Logger LOGGER = Logger.getLogger(LoginServlet.class.getName());
private static final String LOGGED_USER_KEY = "logged.user";
protected static final String REDIRECT_PAGE = "../public/admin.jsp";
private static final String LOGIN_PAGE = "public/admin.jsp";

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
Expand All @@ -72,7 +72,7 @@ private void performTask(HttpServletRequest request, HttpServletResponse respons
HttpSession session = request.getSession();
String actionStr = request.getParameter("action");
if ("logout".equalsIgnoreCase(actionStr)) {
this.logout(session, response);
this.logout(request, response);
} else if ("login".equalsIgnoreCase(actionStr)) {
String loginUsername = request.getParameter("loginUsername");
String loginPassword = request.getParameter("loginPassword");
Expand All @@ -94,7 +94,7 @@ private void performTask(HttpServletRequest request, HttpServletResponse respons
this.setResponseContent(response, result.toString());
} else {
// Unknown action. Redirect to the home page.
response.sendRedirect(REDIRECT_PAGE);
LoginServlet.sendRedirectionToLoginPage(request, response);
}
}

Expand Down Expand Up @@ -156,7 +156,8 @@ private User login(HttpSession session, String loginName, String password, Strin
return null;
}

private void logout(HttpSession session, HttpServletResponse response) {
private void logout(HttpServletRequest request, HttpServletResponse response) {
HttpSession session = request.getSession();
if (session == null) { return; }
String loginName = (String)session.getAttribute(LOGGED_USER_KEY);
session.removeAttribute(LOGGED_USER_KEY);
Expand All @@ -178,7 +179,7 @@ private void logout(HttpSession session, HttpServletResponse response) {
}

try {
response.sendRedirect(REDIRECT_PAGE);
LoginServlet.sendRedirectionToLoginPage(request, response);
} catch (IOException ex) {
LOGGER.log(Level.SEVERE, "Can not redirect the user after a logout!");
}
Expand All @@ -197,4 +198,39 @@ public static User getLoggedUser(HttpSession session) {
}
return user;
}

public static void sendRedirectionToLoginPage(HttpServletRequest request, HttpServletResponse response) throws IOException {
// Deconstruct the URL found in the request.

// Scheme (aka protocol): http or https
String scheme = request.getScheme();

// Domain name. Example: domain.com
String serverName = request.getServerName();

// Port. Default ports are: 80 for http and 443 for https
int serverPort = request.getServerPort();

// Context path: the name of the war file.
// Default: "atlasmapper"
String contextPath = request.getContextPath();

// Determine if the URL uses the default port.
boolean defaultPort = false;
if ("http".equals(scheme) && serverPort == 80) {
defaultPort = true;
}
if ("https".equals(scheme) && serverPort == 443) {
defaultPort = true;
}

// Reconstruct the URL
String fullPath = scheme + "://" + serverName;
if (!defaultPort) {
fullPath += ":" + serverPort;
}
fullPath += contextPath + "/" + LoginServlet.LOGIN_PAGE;

response.sendRedirect(fullPath);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -106,14 +106,14 @@ public void doFilter(HttpServletRequest request, HttpServletResponse response, F
if (this.expectJSON(request)) {
this.sendJSONTimeoutError(response);
} else {
this.sendRedirection(response);
LoginServlet.sendRedirectionToLoginPage(request, response);
}
} else if (!this.isServerStateValid()) {
LOGGER.log(Level.WARNING, "BLOCKED: The server state is not valid. Redirect to the login page.");
if (this.expectJSON(request)) {
this.sendJSONInvalidServerState(response);
} else {
this.sendRedirection(response);
LoginServlet.sendRedirectionToLoginPage(request, response);
}
} else {
LOGGER.log(Level.FINE, "ALLOWED: User [{0}] [{1}] is accessing the protected resource [{2}].", new Object[]{
Expand Down Expand Up @@ -199,8 +199,4 @@ private void sendJSONInvalidServerState(HttpServletResponse response) throws IOE
}
}
}

private void sendRedirection(HttpServletResponse response) throws IOException {
response.sendRedirect(LoginServlet.REDIRECT_PAGE);
}
}

0 comments on commit 7ff80b2

Please sign in to comment.