package com.openkm.servlet.admin;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.openkm.core.AccessDeniedException;
import com.openkm.core.Config;
import com.openkm.core.HttpSessionManager;
import com.openkm.util.UserActivity;
public class BaseServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected static final String METHOD_GET = "GET";
protected static final String METHOD_POST = "POST";
/**
* Dispatch errors
*/
protected void sendErrorRedirect(HttpServletRequest request, HttpServletResponse response,
Throwable e) throws ServletException, IOException {
request.setAttribute ("javax.servlet.jsp.jspException", e);
ServletContext sc = getServletConfig().getServletContext();
sc.getRequestDispatcher("/error.jsp").forward(request, response);
}
/**
* Update HTTP active sessions
*/
public void updateSessionManager(HttpServletRequest request) {
HttpSessionManager.getInstance().update(request.getSession().getId());
}
/**
* Test if an user can access to administration
*/
public static boolean isAdmin(HttpServletRequest request) {
return request.isUserInRole(Config.DEFAULT_ADMIN_ROLE);
}
/**
* Test if an user can access to Group administration
* Added by vissu on oct 24th
*/
public static boolean isGroupAdmin(HttpServletRequest request) {
return request.isUserInRole(Config.DEFAULT_GROUP_ADMIN_ROLE);
}
/**
* Test if an user can access to administration when configured as SaaS: An user can
* access if:
*
* - Multiple Instances is active AND user id okmAdmin
* - Multiple Instances is inactive AND user has AdminRole role
*/
public static boolean isMultipleInstancesAdmin(HttpServletRequest request) {
return Config.SYSTEM_MULTIPLE_INSTANCES && request.getRemoteUser().equals(Config.ADMIN_USER) ||
!Config.SYSTEM_MULTIPLE_INSTANCES && request.isUserInRole(Config.DEFAULT_ADMIN_ROLE);
}
/**
* Check for forbidden access
*/
public boolean checkMultipleInstancesAccess(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
if (!isMultipleInstancesAdmin(request)) {
// Activity log
UserActivity.log(request.getRemoteUser(), "ADMIN_ACCESS_DENIED", request.getRequestURI(), request.getQueryString());
AccessDeniedException ade = new AccessDeniedException("You should not access this resource");
sendErrorRedirect(request, response, ade);
return false;
} else {
return true;
}
}
/**
* Print HTML page header
*/
public void header(PrintWriter out, String title) {
out.println("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");
out.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">");
out.println("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
out.println("<head>");
out.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />");
out.println("<link rel=\"Shortcut icon\" href=\"favicon.ico\" />");
out.println("<link rel=\"stylesheet\" href=\"css/style.css\" type=\"text/css\" />");
out.println("<script src=\"js/biblioteca.js\" type=\"text/javascript\"></script>");
out.println("<script type=\"text/javascript\">scrollToBottom();</script>");
out.println("<title>" + title + "</title>");
out.println("</head>");
out.println("<body>");
}
/**
* Print HTML page footer
*/
public void footer(PrintWriter out) {
out.println("</body>");
out.println("</html>");
}
}