|
@@ -2,27 +2,26 @@ package com.tofly.auth.oauth;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
-import com.tofly.auth.api.APIUser;
|
|
|
import com.tofly.auth.api.MydeskConnectInfo;
|
|
|
-import com.tofly.auth.api.TgpmsConnectInfo;
|
|
|
-import com.tofly.auth.config.SmsConfig;
|
|
|
+import com.tofly.auth.config.GisBimConfig;
|
|
|
import com.tofly.auth.feign.BaseUserService;
|
|
|
-import com.tofly.auth.util.SmsUtils;
|
|
|
import com.tofly.common.core.constant.CommonConstants;
|
|
|
import com.tofly.common.core.constant.SecurityConstants;
|
|
|
import com.tofly.common.core.entity.ResultRespone;
|
|
|
+import com.tofly.common.core.util.DateUtil;
|
|
|
import com.tofly.common.core.util.SpringContextHolder;
|
|
|
import com.tofly.common.oauth.auth.ToflyUser;
|
|
|
import com.tofly.common.oauth.exception.ToflyDeniedException;
|
|
|
import com.tofly.entity.pojo.User;
|
|
|
import com.tofly.entity.pojo.UserInfo;
|
|
|
-import lombok.RequiredArgsConstructor;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import lombok.SneakyThrows;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.http.impl.client.HttpClients;
|
|
|
import org.springframework.cache.Cache;
|
|
|
import org.springframework.cache.CacheManager;
|
|
|
+import org.springframework.data.redis.core.RedisTemplate;
|
|
|
import org.springframework.http.HttpEntity;
|
|
|
-import org.springframework.http.HttpHeaders;
|
|
|
import org.springframework.http.ResponseEntity;
|
|
|
import org.springframework.http.client.ClientHttpRequestFactory;
|
|
|
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
|
|
@@ -40,7 +39,6 @@ import org.springframework.web.client.RestTemplate;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.Period;
|
|
|
import java.util.*;
|
|
|
-import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @author Administrator
|
|
@@ -49,67 +47,51 @@ import java.util.stream.Collectors;
|
|
|
*/
|
|
|
@Service
|
|
|
@Slf4j
|
|
|
-@RequiredArgsConstructor
|
|
|
+@AllArgsConstructor
|
|
|
public class ToFlyUserDetailsService implements UserDetailsService {
|
|
|
|
|
|
- private final CacheManager cacheManager;
|
|
|
- private final BaseUserService baseUserService;
|
|
|
- private final SmsConfig smsConfig;
|
|
|
- private final String TOKEN_LOGIN_SUF="_TOKENLOGIN";
|
|
|
- private final String TOKEN_LOGIN_SUF_X="_tokenLogin";
|
|
|
- private static final String NAME_PASSWORD_LOGIN = "_NAMEANDPASSWORDLOGIN";
|
|
|
- /**
|
|
|
- * username 后缀, 区分登录方式, 手机验证码登录
|
|
|
- */
|
|
|
- private static final String SMS_LOGIN_SUF = "_SMSLOGIN";
|
|
|
- /**
|
|
|
- * 联合登录 验证码+密码
|
|
|
- */
|
|
|
- private static final String UNION_LOGIN_SUF = "_UNIONLOGIN";
|
|
|
|
|
|
- private final TgpmsConnectInfo tgpmsConnectInfo;
|
|
|
|
|
|
+ private final CacheManager cacheManager;
|
|
|
+ private final BaseUserService baseUserService;
|
|
|
+ private final RedisTemplate redisTemplate;
|
|
|
private final MydeskConnectInfo mydeskConnectInfo;
|
|
|
|
|
|
-/*
|
|
|
- @Value("${tgpms.api.parsingMyDeskTokenAndLogin}")
|
|
|
- private String tgpms_login;
|
|
|
-*/
|
|
|
|
|
|
@Override
|
|
|
+ @SneakyThrows
|
|
|
public UserDetails loadUserByUsername(String username){
|
|
|
- log.info("到这来验证用户名:"+username);
|
|
|
+ //首先从缓存中获取,当调用时,我们可以将用户信息存储到缓存,或者程序启动时加载到缓存
|
|
|
Cache cache = cacheManager.getCache("user_details");
|
|
|
- // username = username.toUpperCase();
|
|
|
- if(username.endsWith(TOKEN_LOGIN_SUF)||username.endsWith(TOKEN_LOGIN_SUF_X)){
|
|
|
- username = username.toUpperCase();
|
|
|
- log.info("------------------------使用token登录 "+username.substring(0,username.indexOf(TOKEN_LOGIN_SUF)));
|
|
|
- username= useTokenLogin(username.substring(0,username.indexOf(TOKEN_LOGIN_SUF)));
|
|
|
- }else if(username.endsWith(SMS_LOGIN_SUF)){
|
|
|
- log.info("------------------------使用短信验证码登录, phone = {}", username);
|
|
|
- final String phone = username;
|
|
|
- final ResultRespone<UserInfo> resp = baseUserService.getUserInfoByPhone(phone);
|
|
|
- final UserDetails userDetails = getUserDetails(resp, phone);
|
|
|
- cache.put(userDetails.getUsername().toUpperCase(), userDetails);
|
|
|
- return userDetails;
|
|
|
-
|
|
|
- }else if(username.endsWith(UNION_LOGIN_SUF)){
|
|
|
- username= username.substring(0,username.indexOf(UNION_LOGIN_SUF));
|
|
|
- //为电话号码
|
|
|
- if(SmsUtils.isPhoneNumber(username)){
|
|
|
- final String phone = username;
|
|
|
- final ResultRespone<UserInfo> resp = baseUserService.getUserInfoByPhone(phone);
|
|
|
- final UserDetails userDetails = getUserDetails(resp, phone);
|
|
|
- cache.put(userDetails.getUsername().toUpperCase(), userDetails);
|
|
|
- return userDetails;
|
|
|
- }
|
|
|
+ //拆分带后缀的用户名
|
|
|
+ String[] userNameSplit = username.split("#");
|
|
|
+ String usernameWithoutSuf = null;
|
|
|
+ String suf = null;
|
|
|
+ String usernameUpper = null;
|
|
|
+ if(userNameSplit.length>0){
|
|
|
|
|
|
- }else if(username.endsWith(NAME_PASSWORD_LOGIN)&&!smsConfig.getOpen()){
|
|
|
- username= username.substring(0,username.indexOf(NAME_PASSWORD_LOGIN));
|
|
|
- }else{
|
|
|
- throw new ToflyDeniedException("请求非法");
|
|
|
+ suf = userNameSplit[userNameSplit.length-1];
|
|
|
+
|
|
|
+ usernameWithoutSuf = username.replace(suf,"") ;
|
|
|
+ }
|
|
|
+
|
|
|
+ switch (suf){
|
|
|
+ case "TOKENLOGIN":
|
|
|
+ username = useTokenLogin(usernameWithoutSuf);
|
|
|
+ break;
|
|
|
+ case "TOKENGISLOGIN":
|
|
|
+ username = userTokenLoginGis(usernameWithoutSuf);
|
|
|
+ break;
|
|
|
+ case "TOKENLOGINDYG":
|
|
|
+ username = userTokenLoginDYG(usernameWithoutSuf);
|
|
|
+ break;
|
|
|
+ case "#NAMEANDPASSWORDLOGIN":
|
|
|
+ username = usernameWithoutSuf; break;
|
|
|
+ default: username = userNameSplit[0];
|
|
|
}
|
|
|
- username=username.toUpperCase();
|
|
|
+
|
|
|
+ usernameUpper = username.toUpperCase(Locale.ROOT);
|
|
|
+
|
|
|
|
|
|
log.info("------------baseUserService:{},username:{}",baseUserService,username);
|
|
|
ResultRespone<UserInfo> result = baseUserService.getInfo(username, SecurityConstants.FROM_IN);
|
|
@@ -133,13 +115,15 @@ public class ToFlyUserDetailsService implements UserDetailsService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (cache != null && cache.get(username) != null && cache.get(username).get()!=null) {
|
|
|
- return (ToflyUser) cache.get(username).get();
|
|
|
+ if(!PhoneNumberUtil.isPhone(usernameUpper)){
|
|
|
+ if (cache != null && cache.get(usernameUpper) != null && cache.get(usernameUpper).get()!=null) {
|
|
|
+ return (ToflyUser) cache.get(usernameUpper).get();
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
UserDetails userDetails=getUserDetails(userInfo,username);
|
|
|
//放入缓存
|
|
|
- cache.put(username,userDetails);
|
|
|
+ //不区分账号大小写
|
|
|
+ cache.put(userDetails.getUsername().toUpperCase(Locale.ROOT),userDetails);
|
|
|
return userDetails;
|
|
|
}
|
|
|
|
|
@@ -191,41 +175,104 @@ public class ToFlyUserDetailsService implements UserDetailsService {
|
|
|
true,true,authorities);
|
|
|
}
|
|
|
|
|
|
- private UserDetails getUserDetails(ResultRespone<UserInfo> result,String username) {
|
|
|
- if (result == null || result.getResult() == null) {
|
|
|
- throw new UsernameNotFoundException(result.getMessage());
|
|
|
+
|
|
|
+ class UserCheckAuthenticationException extends AuthenticationException {
|
|
|
+
|
|
|
+ public UserCheckAuthenticationException(String msg, Throwable t) {
|
|
|
+ super(msg, t);
|
|
|
}
|
|
|
|
|
|
- UserInfo userInfo=result.getResult();
|
|
|
- User user=userInfo.getSysUser();
|
|
|
- if(CommonConstants.USER_STUTAS_FAIL.equals(user.getStatusFlag())){
|
|
|
- throw new UserCheckAuthenticationException("用户已处于禁用状态,不能登录");
|
|
|
+ public UserCheckAuthenticationException(String msg) {
|
|
|
+ super(msg);
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- if(CommonConstants.USER_LOCK_LOCKED.equals(user.getLockFlag())){
|
|
|
- throw new UserCheckAuthenticationException("用户已处于锁定状态,不能登录");
|
|
|
+
|
|
|
+ private String userTokenLoginGis(String token){
|
|
|
+
|
|
|
+ MultiValueMap<String, String> requestHeader = new LinkedMultiValueMap<>();
|
|
|
+ token = token.toLowerCase(Locale.ROOT);
|
|
|
+ token = token.replace("#","");
|
|
|
+ if(token.indexOf("bearer")==-1){
|
|
|
+ token = "bearer "+token;
|
|
|
}
|
|
|
+ requestHeader.add("Authorization", token);
|
|
|
+ requestHeader.add("systemid","tgbcepcbim");
|
|
|
+ requestHeader.add(SecurityConstants.FROM,SecurityConstants.FROM_IN);
|
|
|
+ Map<String, String> urlVariables = new HashMap<>();
|
|
|
+ urlVariables.put("systemid", "tgbcepcbim");
|
|
|
+ //HttpEntity
|
|
|
+ HttpEntity<MultiValueMap> requestEntity = new HttpEntity<MultiValueMap>(requestHeader);
|
|
|
|
|
|
- Set<String> dbauthSet=new HashSet<>();
|
|
|
- Long[] roles=userInfo.getRoles();
|
|
|
- if(roles!=null && roles.length>0){
|
|
|
- //添加角色
|
|
|
- Arrays.stream(roles).forEach(role->dbauthSet.add(SecurityConstants.ROLE+role));
|
|
|
- //添加权限
|
|
|
- dbauthSet.addAll(Arrays.asList(userInfo.getPermissions()));
|
|
|
- }else{
|
|
|
- //如果没有角色,也需要加一个默认角色用户名保证后续不会出错
|
|
|
- dbauthSet.add(userInfo.getSysUser().getUsername());
|
|
|
+ ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(HttpClients.createDefault());
|
|
|
+ RestTemplate restTemplate = new RestTemplate(requestFactory);
|
|
|
+ //post
|
|
|
+ String username =null;
|
|
|
+ //"http://192.168.2.235:7007/base/user/getUserInfo"
|
|
|
+ try {
|
|
|
+ final ResponseEntity<Map> mapResponseEntity =
|
|
|
+ restTemplate.postForEntity(gisBimConfig.getTokenLoginUrl(), requestEntity, Map.class,urlVariables);
|
|
|
+ final Map body = mapResponseEntity.getBody();
|
|
|
+ log.info(JSON.toJSONString(body));
|
|
|
+ Map ma = (Map)body.get("result");
|
|
|
+ if(ma!=null){
|
|
|
+ final String username1 = (String)ma.get("username");
|
|
|
+ return username1;
|
|
|
+ }else{
|
|
|
+ log.error("跳转gis失败"+JSON.toJSONString(ma));
|
|
|
+ throw new UsernameNotFoundException("跳转失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ }catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ log.error("账号或密码出现异常,请联系管理员",e);
|
|
|
+ throw new UsernameNotFoundException("账号或密码出现异常,请联系管理员");
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
+ /**
|
|
|
+ * 多异构校验
|
|
|
+ * @param token
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private String userTokenLoginDYG(String token){
|
|
|
|
|
|
- Collection<? extends GrantedAuthority> authorities
|
|
|
- = AuthorityUtils.createAuthorityList(dbauthSet.toArray(new String[0]));
|
|
|
- return new ToflyUser(user.getPwderrtimes(),user.getId(),user.getDepartmentId(),user.getUserLevel(),
|
|
|
- user.getRealName(),user.getDepartmentName(),user.getAvatar(),
|
|
|
- user.getUsername(),/*SecurityConstants.BCRYPT+*/user.getPassword(),
|
|
|
- CommonConstants.STATUS_NORMAL.equals(user.getLockFlag()),true,
|
|
|
- true,true,authorities);
|
|
|
+ MultiValueMap<String, String> requestHeader = new LinkedMultiValueMap<>();
|
|
|
+ token = token.toLowerCase(Locale.ROOT);
|
|
|
+ token = token.replace("#","");
|
|
|
+
|
|
|
+// requestHeader.add("Authorization", token);
|
|
|
+// requestHeader.add(SecurityConstants.FROM,SecurityConstants.FROM_IN);
|
|
|
+ String url="https://tgdcepc.ctg.com.cn:8443/bimp/prod-api/auth/oauth/check_token";
|
|
|
+ //HttpEntity
|
|
|
+ // HttpEntity<MultiValueMap> requestEntity = new HttpEntity<MultiValueMap>(requestHeader);
|
|
|
+ ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(HttpClients.createDefault());
|
|
|
+ RestTemplate restTemplate = new RestTemplate(requestFactory);
|
|
|
+ //post
|
|
|
+ String username =null;
|
|
|
+ //"http://192.168.2.235:7007/base/user/getUserInfo"
|
|
|
+ try {
|
|
|
+ log.info("token"+token);
|
|
|
+ final ResponseEntity<Map> mapResponseEntity =
|
|
|
+ restTemplate.getForEntity(url+"?token="+token, Map.class);
|
|
|
+ final Map body = mapResponseEntity.getBody();
|
|
|
+
|
|
|
+ log.info("多异构获取到的body"+JSON.toJSONString(body));
|
|
|
+ log.info(JSON.toJSONString(body));
|
|
|
+
|
|
|
+ if(body!=null){
|
|
|
+ String dygUser = (String)body.get("user_name");
|
|
|
+ return dygUser;
|
|
|
+ }else{
|
|
|
+ log.error("多异构验证失败"+JSON.toJSONString(body));
|
|
|
+ throw new UsernameNotFoundException("多异构验证失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ }catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ log.error("账号或密码出现异常,请联系管理员",e);
|
|
|
+ throw new UsernameNotFoundException("账号或密码出现异常,请联系管理员");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|
|
@@ -233,50 +280,60 @@ public class ToFlyUserDetailsService implements UserDetailsService {
|
|
|
|
|
|
MultiValueMap<String, String> requestBody = new LinkedMultiValueMap<>();
|
|
|
token = token.toLowerCase(Locale.ROOT);
|
|
|
+ token = token.replace("#","");
|
|
|
requestBody.add("token", token);
|
|
|
+
|
|
|
//HttpEntity
|
|
|
HttpEntity<MultiValueMap> requestEntity = new HttpEntity<MultiValueMap>(requestBody);
|
|
|
ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(HttpClients.createDefault());
|
|
|
RestTemplate restTemplate = new RestTemplate(requestFactory);
|
|
|
+
|
|
|
+
|
|
|
+ Map<String, String> urlVariables = new HashMap<>();
|
|
|
+ urlVariables.put("systemid", "tgbcepcbim");
|
|
|
+
|
|
|
//post
|
|
|
ResponseEntity<String> responseEntity=null;
|
|
|
try {
|
|
|
- responseEntity = restTemplate.postForEntity(mydeskConnectInfo.getGetUserInfoByToken()+"?token="+token,requestEntity, String.class);
|
|
|
+ responseEntity = restTemplate.postForEntity(mydeskConnectInfo.getGetUserInfoByToken()+"?token="+token+"&systemid="+"tgbcepcbim",requestEntity, String.class);
|
|
|
}catch (Exception e){
|
|
|
e.printStackTrace();
|
|
|
- log.error("账号或密码出现异常,请联系管理员",e);
|
|
|
+ log.error("token useTokenLogin 账号或密码出现异常,请联系管理员",e);
|
|
|
throw new UsernameNotFoundException("账号或密码出现异常,请联系管理员");
|
|
|
}
|
|
|
String body1 = responseEntity.getBody();
|
|
|
if("not_login".equals(body1)){
|
|
|
- log.error("token已失效,请联系管理员");
|
|
|
+ log.error("token已失效,请联系管理员",body1);
|
|
|
throw new UsernameNotFoundException("token已失效,请联系管理员");
|
|
|
}
|
|
|
JSONObject jsonObject = JSON.parseObject(body1);
|
|
|
String primaryAccountStr = (String) jsonObject.get("primaryAccount");
|
|
|
// HashMap body = (HashMap) body1
|
|
|
log.info("返回的数据:{}",body1);
|
|
|
- // Map o = (Map)body.get("data");
|
|
|
- // getUserInfo((String)o.get("usercode"),(String)o.get("token"),(String)o.get("dataowner"));
|
|
|
+ // Map o = (Map)body.get("data");
|
|
|
+ // getUserInfo((String)o.get("usercode"),(String)o.get("token"),(String)o.get("dataowner"));
|
|
|
//通过手机号查找用户
|
|
|
- // getUserInfo((String)o.get("usercode"),(String)o.get("token"),(String)o.get("dataowner"));
|
|
|
+ // getUserInfo((String)o.get("usercode"),(String)o.get("token"),(String)o.get("dataowner"));
|
|
|
|
|
|
ResultRespone<UserInfo> userResponse = baseUserService.getTgpUserInfoByPhone(primaryAccountStr);
|
|
|
- // ResultRespone<UserInfo> primaryAccount = baseUserService.getTgpUserInfoByPhone((String) o.get("primaryAccount"));
|
|
|
- // User sysUser = primaryAccount.getResult().getSysUser();
|
|
|
- // return (String)o.get("usercode");
|
|
|
- // return sysUser.getUsername();
|
|
|
- String username;
|
|
|
+ // ResultRespone<UserInfo> primaryAccount = baseUserService.getTgpUserInfoByPhone((String) o.get("primaryAccount"));
|
|
|
+ // User sysUser = primaryAccount.getResult().getSysUser();
|
|
|
+ // return (String)o.get("usercode");
|
|
|
+ // return sysUser.getUsername();
|
|
|
+ String username=null;
|
|
|
try {
|
|
|
username = userResponse.getResult().getSysUser().getUsername();
|
|
|
}catch (NullPointerException e){
|
|
|
+ log.error("未找到对应用户,请联系管理员"+JSON.toJSONString(userResponse),e);
|
|
|
throw new UsernameNotFoundException("未找到对应用户,请联系管理员");
|
|
|
}
|
|
|
User sysUser = userResponse.getResult().getSysUser();
|
|
|
if(CommonConstants.STATUS_NORMAL .equals(sysUser.getLockFlag())){
|
|
|
- throw new ToflyDeniedException("账号已被锁定,请联系管理员");
|
|
|
+ log.error("账号已被锁定,请联系管理员",userResponse);
|
|
|
+ throw new ToflyDeniedException("账号已被锁定,请联系管理员");
|
|
|
}
|
|
|
if( CommonConstants.STATUS_NORMAL.equals(sysUser.getStatusFlag())){
|
|
|
+ log.error("未找到对应用户,请联系管理员"+username,userResponse);
|
|
|
throw new ToflyDeniedException("账号未启用,请联系管理员");
|
|
|
}
|
|
|
|
|
@@ -285,183 +342,4 @@ public class ToFlyUserDetailsService implements UserDetailsService {
|
|
|
return username;
|
|
|
}
|
|
|
|
|
|
- private String useTgpmsLogin(String userinfo){
|
|
|
- String[] s = userinfo.split("@");
|
|
|
- MultiValueMap<String, String> requestBody = new LinkedMultiValueMap<>();
|
|
|
-// requestBody.add("username",username);
|
|
|
-// requestBody.add("password",password);
|
|
|
-
|
|
|
- HttpEntity<MultiValueMap> requestEntity = new HttpEntity<MultiValueMap>(requestBody);
|
|
|
- ResponseEntity<HashMap> result=null;
|
|
|
-
|
|
|
- //HttpEntity
|
|
|
- RestTemplate restTemplate = new RestTemplate();
|
|
|
- try {
|
|
|
- result = restTemplate.postForEntity(tgpmsConnectInfo.getLogin()+"?username="+s[0]+"&password="+s[1], requestEntity, HashMap.class);
|
|
|
- }catch (Exception e){
|
|
|
- log.info("错误:{}",e.getMessage());
|
|
|
- }
|
|
|
- HashMap body = result.getBody();
|
|
|
- log.info("body:{}",body);
|
|
|
- if(body==null){
|
|
|
- return null;
|
|
|
- }
|
|
|
- Map o = (Map)body.get("data");
|
|
|
- if(o==null){
|
|
|
- throw new UsernameNotFoundException("账号或密码出现异常,请联系管理员");
|
|
|
- }
|
|
|
- getUserInfo(s[0],(String)o.get("token"),(String)o.get("dataowner"));
|
|
|
-
|
|
|
- return s[0];
|
|
|
- }
|
|
|
-
|
|
|
-// private UserDetails useTokenLogin(String token){
|
|
|
-//
|
|
|
-// MultiValueMap<String, String> requestBody = new LinkedMultiValueMap<>();
|
|
|
-// requestBody.add("token", token);
|
|
|
-// //HttpEntity
|
|
|
-// HttpEntity<MultiValueMap> requestEntity = new HttpEntity<MultiValueMap>(requestBody);
|
|
|
-// RestTemplate restTemplate = new RestTemplate();
|
|
|
-// //post
|
|
|
-// ResponseEntity<HashMap> responseEntity=null;
|
|
|
-// try {
|
|
|
-// responseEntity = restTemplate.postForEntity(tgpmsConnectInfo.getParsingMyDeskTokenAndLogin()+"?token="+token,requestEntity, HashMap.class);
|
|
|
-// }catch (Exception e){
|
|
|
-// throw new UsernameNotFoundException("使用"+token+"登陆统一平台报错:"+e.getMessage());
|
|
|
-// }
|
|
|
-//
|
|
|
-// HashMap body = responseEntity.getBody();
|
|
|
-// log.info("返回的数据:{}",body);
|
|
|
-// Map o = (Map)body.get("data");
|
|
|
-// if(o==null){
|
|
|
-// throw new UsernameNotFoundException("使用"+token+"未获取到数据");
|
|
|
-// }
|
|
|
-// User user=getUserInfo((String)o.get("usercode"),(String)o.get("token"),(String)o.get("dataowner"));
|
|
|
-// if(user==null){
|
|
|
-// throw new UsernameNotFoundException("使用"+token+"未获取人员基本信息");
|
|
|
-// }
|
|
|
-//
|
|
|
-// Set<String> dbauthSet=new HashSet<>();
|
|
|
-// Collection<? extends GrantedAuthority> authorities
|
|
|
-// = AuthorityUtils.createAuthorityList(dbauthSet.toArray(new String[0]));
|
|
|
-// ToflyUser toflyUser1=new ToflyUser(user.getId(),user.getDepartmentId(),user.getUserLevel(),
|
|
|
-// user.getRealName(),user.getDepartmentName(),"",
|
|
|
-// user.getUsername(),user.getPassword(),
|
|
|
-// true,true,
|
|
|
-// true,true,authorities);
|
|
|
-// Cache cache = cacheManager.getCache("user_details");
|
|
|
-// cache.put(user.getUsername(),toflyUser1);
|
|
|
-// return toflyUser1;
|
|
|
-// }
|
|
|
-
|
|
|
- private User getUserInfo(String username,String token,String dataowner){
|
|
|
-
|
|
|
- APIUser apiUser=new APIUser();
|
|
|
- apiUser.setUsername(username);
|
|
|
- apiUser.setAuList(getAulist(token,tgpmsConnectInfo.getProgCodeFind(),username,dataowner));
|
|
|
- ResultRespone<User> andSaveUser = baseUserService.getAndSaveUser(apiUser,SecurityConstants.FROM_IN);
|
|
|
-
|
|
|
- return andSaveUser.getResult();
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- private List<String> getAulist(String token,String url,String username,String dataowner){
|
|
|
- Map<String,String> map1=new HashMap();
|
|
|
- map1.put("dataowner",dataowner);
|
|
|
- map1.put("progCode","DM006");
|
|
|
- map1.put("pageNo","1");
|
|
|
- map1.put("pageSize","1000");
|
|
|
- map1.put("data","{\"USER_NAME=\":\""+username+"\"}");
|
|
|
-
|
|
|
- HttpHeaders requestHeaders = new HttpHeaders();
|
|
|
- requestHeaders.set("Authorization",token);
|
|
|
- requestHeaders.set("Content-Type","application/json");
|
|
|
- HttpEntity<Map> requestEntity = new HttpEntity<Map>(map1,requestHeaders);
|
|
|
- ResponseEntity<HashMap> result=null;
|
|
|
-
|
|
|
- //HttpEntity
|
|
|
- RestTemplate restTemplate = new RestTemplate();
|
|
|
- try {
|
|
|
- result = restTemplate.postForEntity(url,
|
|
|
- requestEntity, HashMap.class);
|
|
|
- }catch (Exception e){
|
|
|
- throw new UsernameNotFoundException("账号或密码出现异常,请联系管理员");
|
|
|
- }
|
|
|
- HashMap body = result.getBody();
|
|
|
- log.info("body:{}",body);
|
|
|
- if(body==null){
|
|
|
- throw new UsernameNotFoundException("账号或密码出现异常,请联系管理员");
|
|
|
- }
|
|
|
- List<Map> data = (List)body.get("data");
|
|
|
- List<String> collect = data.stream().filter(m -> ((String) m.get("SECURITY_CODE")).startsWith("TF_"))
|
|
|
- .map(m->(String) m.get("SECURITY_CODE"))
|
|
|
- .collect(Collectors.toList());
|
|
|
-
|
|
|
- return collect;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- private Map getUserJson(String username,String token,String dataowner){
|
|
|
- HttpHeaders requestHeaders = new HttpHeaders();
|
|
|
- requestHeaders.set("Authorization",token);
|
|
|
-
|
|
|
- HttpEntity<MultiValueMap> requestEntity = new HttpEntity<MultiValueMap>(requestHeaders);
|
|
|
- ResponseEntity<HashMap> result=null;
|
|
|
-
|
|
|
- //HttpEntity
|
|
|
- RestTemplate restTemplate = new RestTemplate();
|
|
|
- try {
|
|
|
- result = restTemplate.postForEntity(tgpmsConnectInfo.getSelPersonList()+"?entityItem="+username+"&dataowner="+dataowner+"&pageNo=1&pageSize=100",
|
|
|
- requestEntity, HashMap.class);
|
|
|
- }catch (Exception e){
|
|
|
- log.info("错误:{}",e.getMessage());
|
|
|
- }
|
|
|
- HashMap body = result.getBody();
|
|
|
- log.info("body:{}",body);
|
|
|
- if(body==null){
|
|
|
- return null;
|
|
|
- }
|
|
|
- Map data = (Map)body.get("data");
|
|
|
- return (Map)((List)data.get("rows")).get(0);
|
|
|
- }
|
|
|
-
|
|
|
- private Map getInfo(String username,String token,String dataowner,String url){
|
|
|
- HttpHeaders requestHeaders = new HttpHeaders();
|
|
|
- requestHeaders.set("Authorization",token);
|
|
|
-
|
|
|
- HttpEntity<MultiValueMap> requestEntity = new HttpEntity<MultiValueMap>(requestHeaders);
|
|
|
- ResponseEntity<HashMap> result=null;
|
|
|
-
|
|
|
- //HttpEntity
|
|
|
- RestTemplate restTemplate = new RestTemplate();
|
|
|
- try {
|
|
|
- result = restTemplate.postForEntity(url+"?entityItem="+username+"&dataowner="+dataowner+"&pageNo=1&pageSize=100",
|
|
|
- requestEntity, HashMap.class);
|
|
|
- }catch (Exception e){
|
|
|
- log.info("错误:{}",e.getMessage());
|
|
|
- }
|
|
|
- HashMap body = result.getBody();
|
|
|
- log.info("body:{}",body);
|
|
|
- if(body==null){
|
|
|
- return null;
|
|
|
- }
|
|
|
- Map data = (Map)body.get("data");
|
|
|
- return data;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- class UserCheckAuthenticationException extends AuthenticationException {
|
|
|
-
|
|
|
- public UserCheckAuthenticationException(String msg, Throwable t) {
|
|
|
- super(msg, t);
|
|
|
- }
|
|
|
-
|
|
|
- public UserCheckAuthenticationException(String msg) {
|
|
|
- super(msg);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
}
|