浏览代码

HandlerOA

chengzq 2 周之前
父节点
当前提交
3b674c6c83

+ 67 - 3
code/sys/nckd-nc2kd-sys/src/main/java/nckd/nc2kd/sys/webapi/sso/ThirdSSOAuthHandlerOA.java

@@ -4,8 +4,11 @@ import com.alibaba.fastjson.JSONObject;
 import kd.bos.exception.KDBizException;
 import kd.bos.logging.Log;
 import kd.bos.logging.LogFactory;
+import kd.bos.login.thirdauth.ThirdSSOAuthHandler;
 import kd.bos.login.thirdauth.UserAuthResult;
 import kd.bos.login.thirdauth.UserProperType;
+import kd.bos.url.UrlService;
+import kd.bos.util.RevProxyUtil;
 import nckd.nc2kd.sys.webapi.common.HttpJwt;
 import nckd.nc2kd.sys.webapi.common.JwtUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -14,8 +17,10 @@ import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 import java.io.IOException;
 
+import java.net.URLEncoder;
+import java.util.Enumeration;
 import java.util.Map;
-public class ThirdSSOAuthHandlerOA implements kd.bos.login.thirdauth.ThirdSSOAuthHandler {
+public class ThirdSSOAuthHandlerOA implements ThirdSSOAuthHandler {
     private  final String DOMAIN_CONTEXT_URL = "domain.contextUrl";
     private final String appCode="JDCW";
     private final String GETCOOKIE="getTokenFromCookie";
@@ -23,16 +28,75 @@ public class ThirdSSOAuthHandlerOA implements kd.bos.login.thirdauth.ThirdSSOAut
     public static final Log log= LogFactory.getLog(ThirdSSOAuthHandlerOA.class);
     @Override
     public void callTrdSSOLogin(HttpServletRequest req, HttpServletResponse res, String s) {
+        String type = req.getParameter("apptype");
+        String tenantId = RevProxyUtil.getTenantCode(req);
 
+        String server= UrlService.getDomainContextUrl(tenantId);
+
+        if(type!=null&&"dd".equals(type)){
+            try{
+                    StringBuilder sbBuilder = new StringBuilder();
+                    log.error("dingding createTodo tenantId="+tenantId);
+                    Enumeration enums = req.getParameterNames();
+                    while (enums.hasMoreElements()) {
+                        String name = (String) enums.nextElement();
+                        if (!name.equals("redirect") ){
+                            if(StringUtils.isEmpty(sbBuilder.toString())){
+                                sbBuilder.append("?").append(name).append("=");
+                            }else{
+                                sbBuilder.append("&").append(name).append("=");
+                            }
+                            sbBuilder.append(req.getParameter(name));
+                        }
+                    }
+                    String OriginRedirect=new StringBuilder(server).append("/integration/yzjShareOpen.do").append(sbBuilder).toString();
+                    String redirect = new StringBuilder(server).append("/login-mobile.html?redirect=").append( URLEncoder.encode(OriginRedirect,"UTF-8")).toString();
+                    log.error("dingding createTodo redirect="+redirect);
+                    res.sendRedirect(redirect);
+                    return;
+                } catch (IOException e){
+              e.printStackTrace();
+        }
+
+        }
     }
 
+    /**
+     * 判断是否是移动端
+     *
+     * @param request 请求信息
+     * @return 是否是移动端
+     */
+    public boolean isMobileDevice(HttpServletRequest request) {
+        String userAgent = request.getHeader("User-Agent");
+        if (userAgent == null) {
+            return false;
+        }
+        userAgent = userAgent.toLowerCase();
+        if (userAgent.contains("android") || userAgent.contains("iphone") || userAgent.contains("ipad") || userAgent.contains("ipod") || userAgent.contains("blackberry") || userAgent.contains("windows phone") || userAgent.contains("symbian") || userAgent.contains("mobile")) {
+            return true;
+        }
+        return false;
+    }
+
+
     @Override
     public UserAuthResult getTrdSSOAuth(HttpServletRequest req, HttpServletResponse res) {
+
         if( req.getRequestURI().endsWith("login.html")){
             return null;
         };
         UserAuthResult authResultresult=new UserAuthResult();
         authResultresult.setSucess(false);
+        String type = req.getParameter("apptype");
+        log.error("dingding to do hand ,请求url"+req.getRequestURI());
+        if(type!=null&&"dd".equals(type)){
+            log.error("dingding url:"+req.getRequestURI());
+            authResultresult.setSucess(false);
+            authResultresult.setUserType(UserProperType.UserName);
+            log.error("dingding return errorToekn");
+            return authResultresult;
+        }
         try {
             HttpSession session = ((HttpServletRequest) req).getSession();
             /*
@@ -73,9 +137,9 @@ public class ThirdSSOAuthHandlerOA implements kd.bos.login.thirdauth.ThirdSSOAut
                 }
             }
             Map result = validJwtFromRequest((HttpServletRequest) req, (HttpServletResponse) res, sessionToken);
-            if (StringUtils.isNotEmpty(token) && !"0".equals(result.get("status"))) {
+            if (StringUtils.isNotEmpty(token) && !"1".equals(result.get("status"))) {
                 String sendUrl = System.getProperty(PLATURLKEY)+ "/clearCookie"+"?appCode=" + appCode + "&returnUrl="+ System.getProperty(DOMAIN_CONTEXT_URL)+"/index.html";
-                if ("9".equals(result.get("status"))) {//无权限时提示到页面
+                if ("0".equals(result.get("status"))) {//无权限时提示到页面
                     authResultresult.setSucess(false);
                     authResultresult.setErrDesc("对不起,您无权限访问{金蝶系统}!请联系管理员!");
                 }