feat: There is no way the, welink 授权登录

This commit is contained in:
super_liu
2022-06-09 11:38:41 +08:00
parent 1735f95b4a
commit a0c734c197
4 changed files with 116 additions and 1 deletions
@@ -6,6 +6,8 @@ import com.adc.da.http.Result;
import com.adc.da.login.util.IDMUtil;
import com.adc.da.login.util.IpUtil;
import com.adc.da.login.util.JwtUtils;
import com.adc.da.login.util.WeLinkUtil;
import com.adc.da.login.vo.WeLinkVO;
import com.adc.da.sys.entity.LoginInfoEO;
import com.adc.da.sys.entity.UserEO;
import com.adc.da.sys.service.ILoginInfoEOService;
@@ -31,7 +33,6 @@ import java.io.UnsupportedEncodingException;
import java.net.*;
import java.nio.charset.StandardCharsets;
import java.util.Enumeration;
import java.util.List;
@Validated
@@ -46,6 +47,8 @@ public class LoginRestController {
@Autowired
private IDMUtil idmUtil;
@Autowired
private WeLinkUtil weLinkUtil;
@Autowired
private JwtUtils jwtUtils;
@Autowired
private ILoginInfoEOService loginInfoEOService;
@@ -120,6 +123,39 @@ public class LoginRestController {
}
@ApiOperation(value = "通过welink免登录授权码查询iftapp免登录授权码")
@PostMapping(value = "/getTokenToWeLink")
@ResponseBody
public ResponseMessage getIftappCodeByWelinkCode(HttpServletRequest request, WeLinkVO linkVO) throws UnsupportedEncodingException {
String account = weLinkUtil.getIftappCodeByWelinkCode(linkVO);
if(StringUtils.isBlank(account)){
return Result.error("r0011", "用户不存在");
}
UserEO userEO = userService.getUserByLoginNameNotDeleted(account);
if (null == userEO) {
return Result.error("r0011", "用户不存在");
}
if(userEO.getDisableFlag()==1){
return Result.error("r0011", "帐号已禁用");
}
String position = userService.selectPositionByUserId(account);
if(StringUtils.isBlank(position)){
return Result.error("r0011", "无配置岗位");
}
String token = jwtUtils.generateToken(userEO.getUsid());
userEO.setToken(token);
// 加密重要信息
BASE64Encoder encoder = new BASE64Encoder();
String userStr = JSON.toJSONString(userEO);
String userStr2 = URLEncoder.encode(userStr,"UTF-8");
userStr = encoder.encode(userStr2.getBytes());
LoginInfoEO loginInfoEO=new LoginInfoEO();
loginInfoEO.setUserId(userEO.getUsid());
loginInfoEO.setLoginAddress(IpUtil.getIpAddr(request));
loginInfoEOService.saveBean(loginInfoEO);
return Result.success(userStr);
}
@ApiOperation(value = "登录")
// @GetMapping(value = "/login")
@GetMapping(value = "/checkPageNoEncryption")
@@ -31,6 +31,7 @@ public class WebMvcConfig implements WebMvcConfigurer {
addInterceptor.excludePathPatterns("/api/loginIdm");
addInterceptor.excludePathPatterns("/api/checkPage");
addInterceptor.excludePathPatterns("/api/checkPageNoEncryption");
addInterceptor.excludePathPatterns("/api/getTokenToWeLink");
/**
* AWG 接口
@@ -0,0 +1,66 @@
package com.adc.da.login.util;
import com.adc.da.login.vo.WeLinkVO;
import com.adc.da.ocr.util.OkHttpUtil;
import lombok.extern.slf4j.Slf4j;
import net.sf.json.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
@Component
@Slf4j
public class WeLinkUtil {
@Autowired
private OkHttpUtil okHttpUtil;
private final String access_url = "https://iftappwelink.foton.com.cn/devserver/welink/";
public String getIftappCodeByWelinkCode(WeLinkVO linkVO){
try{
String access_token = "";
Map<String,String> param = new HashMap<>();
param.put("code",linkVO.getCode());
param.put("name",linkVO.getName().replace("%20"," "));
if(StringUtils.isNotBlank(linkVO.getType())){
param.put("type",linkVO.getType());
}
if(StringUtils.isNotBlank(linkVO.getCorpCode())){
param.put("corpCode",linkVO.getCorpCode());
}
String access_token_str = okHttpUtil.post(access_url+"getIftappCodeByWelinkCode",param,new HashMap<>());
JSONObject atJsonObj = JSONObject.fromObject(access_token_str);
System.out.println("AccessTokenJSON:" + atJsonObj);
if (atJsonObj.has("data")) {
System.out.println("data:" + atJsonObj.get("data"));
JSONObject obj = JSONObject.fromObject(atJsonObj.getOrDefault("data",""));
if(obj.has("access_token")){
access_token = obj.getOrDefault("access_token","").toString();
}
}
if(StringUtils.isBlank(access_token)){
return "";
}
Map<String,String> param_p = new HashMap<>();
param_p.put("code",access_token);
String principal_json = okHttpUtil.get(access_url+"getUserInfoByAuthCode",param_p,new HashMap<>());
JSONObject pfjsonObj = JSONObject.fromObject(principal_json);
if (pfjsonObj.has("data")) {
System.out.println("data:" + pfjsonObj.get("data"));
JSONObject obj = JSONObject.fromObject(pfjsonObj.getOrDefault("data",""));
if(obj.has("username")){
return obj.getOrDefault("username","").toString();
}
}
}catch(Exception e){
log.error("通过iftapp授权码查询用户信息失败");
}
return "";
}
}
@@ -0,0 +1,12 @@
package com.adc.da.login.vo;
import lombok.Data;
@Data
public class WeLinkVO {
private String code;
private String name;
private String type;
private String corpCode;
}