|
@ -1,8 +1,10 @@
|
|
package com.yihu.jw.security.oauth2.provider.endpoint;
|
|
package com.yihu.jw.security.oauth2.provider.endpoint;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
import com.yihu.jw.entity.base.login.BaseLoginLogDO;
|
|
import com.yihu.jw.restmodel.web.ObjEnvelop;
|
|
import com.yihu.jw.restmodel.web.ObjEnvelop;
|
|
import com.yihu.jw.security.core.userdetails.jdbc.WlyyUserDetailsService;
|
|
import com.yihu.jw.security.core.userdetails.jdbc.WlyyUserDetailsService;
|
|
|
|
import com.yihu.jw.security.login.service.BaseLoginLogService;
|
|
import com.yihu.jw.security.model.*;
|
|
import com.yihu.jw.security.model.*;
|
|
import com.yihu.jw.security.oauth2.core.redis.WlyyRedisVerifyCodeService;
|
|
import com.yihu.jw.security.oauth2.core.redis.WlyyRedisVerifyCodeService;
|
|
import com.yihu.jw.security.oauth2.provider.WlyyTokenGranter;
|
|
import com.yihu.jw.security.oauth2.provider.WlyyTokenGranter;
|
|
@ -85,6 +87,8 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
|
|
private WlyyRedisVerifyCodeService wlyyRedisVerifyCodeService;
|
|
private WlyyRedisVerifyCodeService wlyyRedisVerifyCodeService;
|
|
@Autowired
|
|
@Autowired
|
|
private StringRedisTemplate redisTemplate;
|
|
private StringRedisTemplate redisTemplate;
|
|
|
|
@Autowired
|
|
|
|
private BaseLoginLogService baseLoginLogService;
|
|
|
|
|
|
@PostConstruct
|
|
@PostConstruct
|
|
private void init() {
|
|
private void init() {
|
|
@ -158,11 +162,12 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
|
|
wlyyUserSimple.setRefreshToken(token.getRefreshToken().getValue());
|
|
wlyyUserSimple.setRefreshToken(token.getRefreshToken().getValue());
|
|
wlyyUserSimple.setUser(parameters.get("username"));
|
|
wlyyUserSimple.setUser(parameters.get("username"));
|
|
wlyyUserSimple.setState(parameters.get("state"));
|
|
wlyyUserSimple.setState(parameters.get("state"));
|
|
|
|
|
|
String loginType = parameters.get("login_type");
|
|
String loginType = parameters.get("login_type");
|
|
String openid = parameters.get("openid");
|
|
String openid = parameters.get("openid");
|
|
//更新患者openId
|
|
//更新患者openId
|
|
if(!StringUtils.isEmpty(openid) && !"undefined".equalsIgnoreCase(openid) && "3".equalsIgnoreCase(loginType)){
|
|
|
|
|
|
BaseLoginLogDO baseLoginLogDO = new BaseLoginLogDO();
|
|
|
|
if(!StringUtils.isEmpty(openid) && !"undefined".equalsIgnoreCase(openid) && "3".equals(loginType)){
|
|
|
|
baseLoginLogDO.setOpenid(openid);
|
|
userDetailsService.updateOpenId(openid,wlyyUserSimple.getId());
|
|
userDetailsService.updateOpenId(openid,wlyyUserSimple.getId());
|
|
}
|
|
}
|
|
if (parameters.get("password") != null) {
|
|
if (parameters.get("password") != null) {
|
|
@ -170,6 +175,14 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
|
|
userDetailsService.addFailureCount(username,0);
|
|
userDetailsService.addFailureCount(username,0);
|
|
}
|
|
}
|
|
userDetailsService.setRolePhth(loginType,token,wlyyUserSimple.getId(),redisTemplate);
|
|
userDetailsService.setRolePhth(loginType,token,wlyyUserSimple.getId(),redisTemplate);
|
|
|
|
|
|
|
|
baseLoginLogDO.setUserId(wlyyUserSimple.getId());
|
|
|
|
baseLoginLogDO.setCreateTime(new Date());
|
|
|
|
String userAgent = JSONObject.toJSONString(wlyyUserSimple);
|
|
|
|
baseLoginLogDO.setUserAgent(userAgent);
|
|
|
|
baseLoginLogDO.setLoginType(loginType);
|
|
|
|
baseLoginLogService.save(baseLoginLogDO);
|
|
|
|
|
|
return getResponse(wlyyUserSimple);
|
|
return getResponse(wlyyUserSimple);
|
|
}
|
|
}
|
|
|
|
|
|
@ -214,6 +227,24 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
|
|
return getResponse(wlyyUserSimple);
|
|
return getResponse(wlyyUserSimple);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @param openid
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
@RequestMapping(value = "/oauth/getByOpenId", method = RequestMethod.POST)
|
|
|
|
public ResponseEntity<Oauth2Envelop<WlyyUserSimple>> getByOpenId( @RequestParam(value = "openid", required = true) String openid) {
|
|
|
|
BaseLoginLogDO loginLog = baseLoginLogService.findByOpenId(openid);
|
|
|
|
if(loginLog== null){
|
|
|
|
throw new UsernameNotFoundException("can't find login log by openod: "+openid);
|
|
|
|
}
|
|
|
|
String userAgent = loginLog.getUserAgent();
|
|
|
|
WlyyUserSimple wlyyUserSimple = JSONObject.parseObject(userAgent, WlyyUserSimple.class);
|
|
|
|
// String accessToken = wlyyUserSimple.getAccessToken();
|
|
|
|
// OAuth2AccessToken oAuth2AccessToken = tokenStore.readAccessToken(accessToken);
|
|
|
|
return getResponse(wlyyUserSimple);
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 登出
|
|
* 登出
|
|
* @param parameters
|
|
* @param parameters
|
|
@ -466,7 +497,17 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
|
|
String loginType = parameters.get("login_type");
|
|
String loginType = parameters.get("login_type");
|
|
|
|
|
|
userDetailsService.setRolePhth(loginType,token,wlyyUserSimple.getId(),redisTemplate);
|
|
userDetailsService.setRolePhth(loginType,token,wlyyUserSimple.getId(),redisTemplate);
|
|
|
|
|
|
|
|
BaseLoginLogDO baseLoginLogDO = new BaseLoginLogDO();
|
|
|
|
baseLoginLogDO.setUserId(wlyyUserSimple.getId());
|
|
|
|
baseLoginLogDO.setCreateTime(new Date());
|
|
|
|
String userAgent = JSONObject.toJSONString(wlyyUserSimple);
|
|
|
|
baseLoginLogDO.setUserAgent(userAgent);
|
|
|
|
baseLoginLogDO.setLoginType(loginType);
|
|
|
|
String openid = parameters.get("openid");
|
|
|
|
if(!StringUtils.isEmpty(openid) && "undefined".equalsIgnoreCase(openid)){
|
|
|
|
baseLoginLogDO.setOpenid(openid);
|
|
|
|
}
|
|
|
|
baseLoginLogService.save(baseLoginLogDO);
|
|
return getResponse(wlyyUserSimple);
|
|
return getResponse(wlyyUserSimple);
|
|
}
|
|
}
|
|
return null;
|
|
return null;
|