You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.7 KiB
62 lines
2.7 KiB
package com.fr.plugin.decision.integration.filter; |
|
|
|
import com.fr.decision.fun.impl.AbstractEmbedRequestFilterProvider; |
|
import com.fr.decision.webservice.v10.login.LoginService; |
|
import com.fr.general.http.HttpRequest; |
|
import com.fr.general.http.HttpToolbox; |
|
import com.fr.json.JSONObject; |
|
import com.fr.plugin.decision.integration.config.IntegrateConf; |
|
import com.fr.plugin.decision.integration.utils.CommonUtils; |
|
import com.fr.stable.ArrayUtils; |
|
import com.fr.stable.StringUtils; |
|
import com.fr.third.fasterxml.jackson.databind.ObjectMapper; |
|
import com.fr.third.org.apache.http.HttpEntity; |
|
import com.fr.third.org.apache.http.entity.StringEntity; |
|
import com.fr.web.utils.WebUtils; |
|
|
|
import javax.servlet.ServletException; |
|
import javax.servlet.http.HttpServletRequest; |
|
import javax.servlet.http.HttpServletResponse; |
|
import java.io.IOException; |
|
import java.util.HashMap; |
|
import java.util.Map; |
|
|
|
public class TplParaCheckFilter extends AbstractEmbedRequestFilterProvider { |
|
|
|
private String[] reportParameterNames = new String[]{"viewlet", "viewlets", "reportlet", "reportlets"}; |
|
|
|
@Override |
|
public void filter(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { |
|
if (!needCheckParameter(request)) return; |
|
|
|
HashMap<String, Object> requestMap = new HashMap<>(); |
|
for (String parameter : request.getParameterMap().keySet()) { |
|
if (!ArrayUtils.contains(reportParameterNames, parameter)) |
|
requestMap.put(parameter, request.getParameter(parameter)); |
|
} |
|
requestMap.put("userId", LoginService.getInstance().getCurrentUserNameFromRequestCookie(request)); |
|
|
|
try { |
|
if (doCheckTplParameter(requestMap)) return; |
|
} catch (Exception e) { |
|
} |
|
CommonUtils.showErrorPage(response, "请登录系统访问报表", ""); |
|
} |
|
|
|
/** |
|
* 请求是否需要校验预览参数 |
|
**/ |
|
private boolean needCheckParameter(HttpServletRequest request) { |
|
return IntegrateConf.getInstance().getParaCheckTurnOn() && |
|
//LoginService.getInstance().isLogged(request) && |
|
StringUtils.isNotBlank(WebUtils.getReportTitleFromRequest(request)); |
|
} |
|
|
|
private boolean doCheckTplParameter(Map requestMap) throws IOException { |
|
HashMap headerMap = new HashMap(); |
|
headerMap.put("Content-Type", "application/json"); |
|
HttpEntity entity = new StringEntity(new ObjectMapper().writeValueAsString(requestMap), "utf-8"); |
|
String result = HttpToolbox.executeAndParse(HttpRequest.custom().url(IntegrateConf.getInstance().getParaCheckUrl()).post(entity).headers(headerMap).build()); |
|
return new JSONObject(result).getBoolean("data"); |
|
} |
|
}
|
|
|