47 lines
2.8 KiB
Java
47 lines
2.8 KiB
Java
package uat;
|
|
|
|
import java.io.IOException;
|
|
import java.util.Locale;
|
|
import javax.servlet.*;
|
|
import javax.servlet.http.*;
|
|
|
|
/** Deployment-only boundary for the isolated restored UAT copy. */
|
|
public class UatGuardFilter implements Filter {
|
|
public void init(FilterConfig config) {}
|
|
public void destroy() {}
|
|
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
|
|
throws IOException, ServletException {
|
|
HttpServletRequest req = (HttpServletRequest) request;
|
|
HttpServletResponse res = (HttpServletResponse) response;
|
|
String path = req.getServletPath().toLowerCase(Locale.ROOT);
|
|
res.setHeader("X-Syly-Environment", "isolated-uat");
|
|
res.setHeader("X-Content-Type-Options", "nosniff");
|
|
if (path.contains("appservice") || path.contains("repaircontroller") || path.contains("dataupdatecontroller")
|
|
|| path.contains("druid") || path.equals("/rest") || path.startsWith("/rest/") || path.contains("connector.java")
|
|
|| path.contains("filesuploadcontroller") || path.contains("/ueditor/jsp/")
|
|
|| (path.contains("usercontroller") && req.getParameterMap().containsKey("savenewpwdforuser"))) {
|
|
res.sendError(403, "Disabled in isolated UAT"); return;
|
|
}
|
|
boolean login = path.equals("/logincontroller.do") || path.equals("/logincontroller.action");
|
|
if (login && req.getParameterMap().containsKey("checkuser")
|
|
&& !"uat_admin".equals(req.getParameter("userName"))) {
|
|
res.setContentType("application/json;charset=UTF-8");
|
|
res.getWriter().write("{\"success\":false,\"msg\":\"UAT permits only the dedicated test account\"}"); return;
|
|
}
|
|
boolean publicPath = (login && (req.getParameterMap().containsKey("login") || req.getParameterMap().containsKey("checkuser")))
|
|
|| path.equals("/randcodeimage") || path.equals("/") || path.equals("")
|
|
|| path.equals("/webpage/login/login.jsp")
|
|
|| ((path.startsWith("/plug-in/") || path.startsWith("/style/") || path.startsWith("/images/") || path.startsWith("/css/") || path.startsWith("/js/"))
|
|
&& path.matches(".*\\.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot|swf|map)$"));
|
|
if (!publicPath) {
|
|
HttpSession session = req.getSession(false);
|
|
com.zzc.web.system.pojo.base.Client client = session == null ? null :
|
|
com.zzc.web.system.manager.ClientManager.getInstance().getClient(session.getId());
|
|
if (client == null || client.getUser() == null || !"uat_admin".equals(client.getUser().getUserName())) {
|
|
res.sendError(401, "UAT login required"); return;
|
|
}
|
|
}
|
|
chain.doFilter(request, response);
|
|
}
|
|
}
|