登录集成插件
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

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");
}
}