%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="weaver.general.Util" %>
<%@ page import="weaver.integration.entrance.bean.OutterLoginBean" %>
<%@ page import="weaver.integration.entrance.service.EntranceService" %>
<%@ page import="weaver.integration.entrance.service.IOutterSysServer" %>
<%@ page import="weaver.integration.entrance.service.OutterSysServer" %>
<%@ page import="weaver.integration.entrance.service.permission.IPermissionService" %>
<%@ page import="weaver.integration.entrance.service.permission.PermissionService" %>
<%@ page import="weaver.integration.entrance.utils.StringUtils" %>
<%@ page import="weaver.integration.entrance.exceptions.OtherParamsEncryptException" %>
<%@ page import="weaver.integration.entrance.exceptions.AccountOrPasswordEncryptException" %>
<%@ page import="weaver.integration.logging.LoggerFactory" %>
<%@ page import="weaver.integration.logging.Logger" %>
<%@ page import="com.alibaba.fastjson.JSONObject" %>
<%@ page import="weaver.hrm.User" %>
<%@ page import="weaver.hrm.HrmUserVarify" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="weaver.systeminfo.SystemEnv" %>
<%@ page import="java.util.Objects" %>
<%@ page import="cn.hutool.core.map.MapUtil" %>
<%@ page import="weaver.general.BaseBean" %>
<%----%>
<%----%>
<%@ include file="/systeminfo/init_wev8.jsp" %>
<%
Logger integration_logger = LoggerFactory.getLogger();
BaseBean bb = new BaseBean();
User this_user = HrmUserVarify.getUser(request,response);
//企业微信集成时,构造的用户session会缺少loginid,导致在企业微信中引用集成登录时,因获取不到用户名导致无法单点登录。
if(Util.null2String(this_user.getLoginid()).equals("")){
//查询loginid
RecordSet.executeSql("select loginid from HrmResource where id="+this_user.getUID());
if(RecordSet.next()){
this_user.setLoginid(Util.null2String(RecordSet.getString("loginid")));
}
//重新设置用户session
request.getSession(true).setAttribute("weaver_user@bean", this_user);
}
IPermissionService permissionService=new PermissionService();
String operationType = permissionService.getOperationType(request);
String sysid = Util.null2String(request.getParameter("id"));// 系统标识
String coremailPath = Util.null2String(request.getParameter("coremailPath"));
integration_logger.info("sysid=========================" + sysid);
integration_logger.info("operationType=========================" + operationType);
integration_logger.info("coremailPath=========================" + coremailPath);
if ("".equals(operationType)) {
// 权限判断
// 得到有权限查看的集成登录
String access = permissionService.isAccess(sysid, request, response);
integration_logger.info("access=========================" + access);
baseBean.writeLog("access状态码->"+access);
if (!StringUtils.isBlank(access)){
if(access.startsWith("/")&&!access.startsWith(weaver.general.GCONST.getContextPath())){
access = weaver.general.GCONST.getContextPath()+access;
}
response.sendRedirect(access);
return;
}
}
EntranceService entranceService = new EntranceService();
IOutterSysServer outterSysServer = new OutterSysServer();
OutterLoginBean loginBean = null;
Map map = new HashMap();
try {
loginBean = entranceService.getLoginBean(outterSysServer, sysid, operationType, request, response);
map = entranceService.getUrl(outterSysServer, loginBean, operationType, request, response);
//coremail 特殊处理
if (!StringUtils.isEmpty(coremailPath)) {
integration_logger.info("处理coremailPath" + coremailPath);
String redirectUrl = MapUtil.getStr(map, "redirectUrl");
String isRedirect = MapUtil.getStr(map, "isRedirect");
integration_logger.info("处理coremail redirectUrl" + redirectUrl);
integration_logger.info("处理coremail isRedirect" + isRedirect);
if (!StringUtils.isEmpty(redirectUrl) && "true".equalsIgnoreCase(isRedirect)) {
String replaceUrl = redirectUrl.replace("#mail.list|{\"fid\":1}", coremailPath);
integration_logger.info("处理coremail replaceUrl" + replaceUrl);
map.put("redirectUrl", replaceUrl);
}
}
integration_logger.info("map=========================" + JSONObject.toJSONString(map));
} catch (ClassNotFoundException e) {
%>
<%
}catch (NoSuchMethodException e){
e.printStackTrace();
%>
<%
}catch (IllegalAccessException e){
%>
<%
}catch (InstantiationException e){
%>
<%
}catch (NoClassDefFoundError e){
%>
<%
}catch (OtherParamsEncryptException e) {
%>
<%
} catch (AccountOrPasswordEncryptException e) {
%>
<%
}catch (Exception e){
%>
<%
}
if (Objects.nonNull(map)){
if (map.get("isError")!= null&&"true".equals(map.get("isError"))){
%>
<%
return;
}
baseBean.writeLog("进入前");
if (map.get("isRedirect")!=null && "true".equals(map.get("isRedirect"))){
baseBean.writeLog("redirectUrl111111=========================");
integration_logger.info("redirectUrl111111=========================");
response.sendRedirect(map.get("redirectUrl").toString());
return;
}
if (map.get("isRedirect")!=null && "false".equals(map.get("isRedirect"))){
out.println(map.get("redirectUrl").toString());
return;
}
}else {
integration_logger.error("map is null ====================================================");
}
%>