|
|
@@ -6,8 +6,7 @@ import com.alibaba.fastjson.serializer.SerializerFeature;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.dk.common.infrastructure.constant.Constant;
|
|
|
import com.dk.common.infrastructure.enums.ErrorCodeEnum;
|
|
|
-import com.dk.common.model.vo.core.UserLoginVo;
|
|
|
-import com.dk.common.model.vo.system.UserVo;
|
|
|
+import com.dk.common.model.vo.core.UserVO;
|
|
|
import com.dk.common.response.ResponseCodeEnum;
|
|
|
import com.dk.common.response.ResponseResultUtil;
|
|
|
import com.dk.common.response.ResponseResultVO;
|
|
|
@@ -75,7 +74,11 @@ public class AccessTokenController {
|
|
|
@Value("${client-app-id}")
|
|
|
private String clientAppId;
|
|
|
|
|
|
-
|
|
|
+ /**
|
|
|
+ * @desc : 获取token
|
|
|
+ * @author : 周兴
|
|
|
+ * @date : 2023/1/5 13:35
|
|
|
+ */
|
|
|
@PostMapping(value = "/oauth/token")
|
|
|
public ResponseResultVO token(HttpServletRequest request) throws Exception {
|
|
|
AuthUserLoginLog authUserLoginLog = new AuthUserLoginLog();
|
|
|
@@ -110,7 +113,6 @@ public class AccessTokenController {
|
|
|
return ResponseResultUtil.error(ErrorCodeEnum.USER_PASSWORD_ERROR.getCode(), OauthConstants.INVALID_CLIENT_STOP);
|
|
|
}
|
|
|
authUserLoginLog.setClient(authCode);
|
|
|
-
|
|
|
//endregion
|
|
|
|
|
|
// region 根据不同grant_type处理
|
|
|
@@ -118,11 +120,11 @@ public class AccessTokenController {
|
|
|
* 只校验 AUTHORIZATION_CODE、PASSWORD 、REFRESH_TOKEN 和 CLIENT_CREDENTIALS 类型
|
|
|
* 具体查看 {@link GrantType}
|
|
|
* */
|
|
|
- UserVo userVo = null;
|
|
|
+ UserVO userVo = null;
|
|
|
|
|
|
//定义api用户
|
|
|
- UserVo apiUser = null;
|
|
|
- ResponseResultVO validRes=ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL);
|
|
|
+ UserVO apiUser = null;
|
|
|
+ ResponseResultVO validRes = ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL);
|
|
|
|
|
|
String appUuid = null;
|
|
|
// region AUTHORIZATION_CODE
|
|
|
@@ -141,34 +143,25 @@ public class AccessTokenController {
|
|
|
|
|
|
// region PASSWORD
|
|
|
else if (oauthRequest.getParam(OAuth.OAUTH_GRANT_TYPE).equalsIgnoreCase(GrantType.PASSWORD.toString())) {
|
|
|
- UserVo user;
|
|
|
- ResponseResultVO<UserVo> userRes = userService.selectCpCodeByCodeOrPhone(request.getParameter("username"));
|
|
|
- if (userRes.getCode() == ResponseCodeEnum.SUCCESS.getCode()) {
|
|
|
- user = userRes.getData();
|
|
|
- } else {
|
|
|
- return userRes;
|
|
|
- }
|
|
|
- appUuid = Constant.LongConstant.COMPANY_HEGII_ID.getValue().equals(user.getCpId()) ?
|
|
|
- Constant.AppConstant.APP_WEB_HEGII.getName() : Constant.AppConstant.APP_WEB_MERCHANT.getName();
|
|
|
- //创建登录实体
|
|
|
- UserLoginVo userLoginVo=new UserLoginVo().setAppUuid(appUuid)
|
|
|
- .setCompanyCode(Constant.LongConstant.COMPANY_HEGII_ID.getValue().equals(user.getCpId()) ?
|
|
|
- null:user.getCpCode())
|
|
|
- .setName(user.getUserCode())
|
|
|
- .setPassword(request.getParameter("password"))
|
|
|
- .setSysId(Constant.LongConstant.COMPANY_HEGII_ID.getValue().equals(user.getCpId()) ?
|
|
|
- Constant.IntegerConstant.SYS_HEGII.getValue() : Constant.IntegerConstant.SYS_MERCHANT.getValue());
|
|
|
+ UserVO user = new UserVO();
|
|
|
+ user.setUserCode(request.getParameter("username")).setUserPwd(request.getParameter("password"))
|
|
|
+ .setAppCode(Constant.AppConstant.WEB_MAIN.getName());
|
|
|
+// ResponseResultVO<UserVO> userRes = userService.selectCpCodeByCodeOrPhone(request.getParameter("username"));
|
|
|
+// if (userRes.getCode() == ResponseCodeEnum.SUCCESS.getCode()) {
|
|
|
+// user = userRes.getData();
|
|
|
+// } else {
|
|
|
+// return userRes;
|
|
|
+// }
|
|
|
//调用user服务进行业务校验
|
|
|
- validRes = userService.loginValid(userLoginVo);
|
|
|
- if (validRes.getCode()!= ResponseCodeEnum.SUCCESS.getCode()){
|
|
|
+ validRes = userService.loginValid(user);
|
|
|
+ if (validRes.getCode() != ResponseCodeEnum.SUCCESS.getCode()) {
|
|
|
authUserLoginLog.setLoginType(AuthUserLoginLog.LOGIN_TYPE3);
|
|
|
authUserLoginLog.setCommand(AuthUserLoginLog.LOGIN_COMMAND3);
|
|
|
loinLog(authUserLoginLog, request);
|
|
|
return validRes;
|
|
|
- }else{
|
|
|
- userVo=JSON.parseObject(JSON.toJSONString(validRes.getData())).getObject("u",UserVo.class);
|
|
|
+ } else {
|
|
|
+ userVo = JSON.parseObject(JSON.toJSONString(validRes.getData())).getObject("user", UserVO.class);
|
|
|
authAccessToken.setUserId(String.valueOf(userVo.getUserId()));
|
|
|
- authAccessToken.setCompanyId(String.valueOf(userVo.getCpId()));
|
|
|
}
|
|
|
}
|
|
|
// endregion
|
|
|
@@ -201,16 +194,14 @@ public class AccessTokenController {
|
|
|
return ResponseResultUtil.error(ErrorCodeEnum.USER_PASSWORD_ERROR.getCode(), OauthConstants.INVALID_CLIENT_DESCRIPTION);
|
|
|
}
|
|
|
//根据客户端主键id查询用户
|
|
|
- apiUser=userService.selectByClientId(client.getId());
|
|
|
+ apiUser = userService.selectByClientId(client.getId());
|
|
|
//如果不存在,或已经停用
|
|
|
- if(apiUser==null||!apiUser.getFlgValid()){
|
|
|
+ if (apiUser == null || !apiUser.getFlgValid()) {
|
|
|
return ResponseResultUtil.error(ErrorCodeEnum.USER_PASSWORD_ERROR.getCode(), OauthConstants.INVALID_CLIENT_STOP);
|
|
|
}
|
|
|
authAccessToken.setUserId(String.valueOf(apiUser.getUserId()));
|
|
|
- authAccessToken.setCompanyId(String.valueOf(apiUser.getCpId()));
|
|
|
}
|
|
|
// endregion
|
|
|
-
|
|
|
else {
|
|
|
authUserLoginLog.setCommand(AuthUserLoginLog.LOGIN_COMMAND3);
|
|
|
loinLog(authUserLoginLog, request);
|
|
|
@@ -222,31 +213,24 @@ public class AccessTokenController {
|
|
|
String username = "";
|
|
|
String userId = "";
|
|
|
String companyId = "";
|
|
|
- String appId="";
|
|
|
+ String appId = "";
|
|
|
if (oauthRequest.getParam(OAuth.OAUTH_GRANT_TYPE).equals(GrantType.CLIENT_CREDENTIALS.toString())) {
|
|
|
// 客户端凭证
|
|
|
username = client.getClientId();
|
|
|
userId = String.valueOf(apiUser.getUserId());
|
|
|
- companyId = String.valueOf(apiUser.getCpId());
|
|
|
- appId=clientAppId;
|
|
|
} else if (oauthRequest.getParam(OAuth.OAUTH_GRANT_TYPE).equals(GrantType.AUTHORIZATION_CODE.toString())) {
|
|
|
// auth2 code模式
|
|
|
username = code.getUserId();
|
|
|
userId = code.getUserId();
|
|
|
- companyId = client.getClientId();
|
|
|
} else {
|
|
|
// 密码模式
|
|
|
username = request.getParameter("username");
|
|
|
userId = String.valueOf(userVo.getUserId());
|
|
|
- companyId = String.valueOf(userVo.getCpId());
|
|
|
- appId= appUuid;
|
|
|
}
|
|
|
JWTGenerator jwtGenerator = new JWTGenerator();
|
|
|
jwtGenerator.setSalt(username);
|
|
|
jwtGenerator.setUsername(username);
|
|
|
jwtGenerator.setUserId(userId);
|
|
|
- jwtGenerator.setCompanyId(companyId);
|
|
|
- jwtGenerator.setAppId(appId);
|
|
|
jwtGenerator.setClientId(client.getClientId());
|
|
|
jwtGenerator.setGrantType(oauthRequest.getParam(OAuth.OAUTH_GRANT_TYPE));
|
|
|
OAuthIssuerImpl oAuthIssuer = new OAuthIssuerImpl(jwtGenerator);
|
|
|
@@ -283,25 +267,25 @@ public class AccessTokenController {
|
|
|
loinLog(authUserLoginLog, request);
|
|
|
// endregion
|
|
|
|
|
|
- if (oauthRequest.getParam(OAuth.OAUTH_GRANT_TYPE).equalsIgnoreCase(GrantType.PASSWORD.toString())){
|
|
|
+ if (oauthRequest.getParam(OAuth.OAUTH_GRANT_TYPE).equalsIgnoreCase(GrantType.PASSWORD.toString())) {
|
|
|
//调用 loginAfterCheckPassword
|
|
|
- ResponseResultVO<JSONObject> loginRes = userService.loginAfterCheckPassword(JSON.parseObject(JSON.toJSONString(validRes.getData())).fluentPut("accessToken",accessToken));
|
|
|
+ ResponseResultVO<JSONObject> loginRes = userService.loginAfterCheckPassword(JSON.parseObject(JSON.toJSONString(validRes.getData())).fluentPut("accessToken", accessToken));
|
|
|
|
|
|
return ResponseResultUtil.success(JSON.parseObject(JSON.toJSONString(loginRes.getData(), SerializerFeature.WRITE_MAP_NULL_FEATURES))
|
|
|
- .fluentPut("nowDate",DateUtil.dateToString(authAccessToken.getCreateDate()))
|
|
|
- .fluentPut("expires_in",String.valueOf(OauthConstants.EXPIRES_IN)));
|
|
|
- }else{
|
|
|
+ .fluentPut("nowDate", DateUtil.dateToString(authAccessToken.getCreateDate()))
|
|
|
+ .fluentPut("expires_in", String.valueOf(OauthConstants.EXPIRES_IN)));
|
|
|
+ } else {
|
|
|
// region 生成OAuth响应
|
|
|
- OAuthResponse response = OAuthASResponse
|
|
|
- .tokenResponse(HttpServletResponse.SC_OK)
|
|
|
- .setAccessToken(accessToken)
|
|
|
- .setExpiresIn(String.valueOf(OauthConstants.EXPIRES_IN))
|
|
|
- .setParam("nowDate", DateUtil.dateToString(authAccessToken.getCreateDate()))
|
|
|
+ OAuthResponse response = OAuthASResponse
|
|
|
+ .tokenResponse(HttpServletResponse.SC_OK)
|
|
|
+ .setAccessToken(accessToken)
|
|
|
+ .setExpiresIn(String.valueOf(OauthConstants.EXPIRES_IN))
|
|
|
+ .setParam("nowDate", DateUtil.dateToString(authAccessToken.getCreateDate()))
|
|
|
// .setParam("username", username)
|
|
|
// .setParam("companyId", companyId)
|
|
|
- .buildJSONMessage();
|
|
|
- log.info("---->>>SecurityUtils.getSubject().isAuthenticated() =" + SecurityUtils.getSubject().isAuthenticated());
|
|
|
- return ResponseResultUtil.success(response.getResponseStatus(), "", JSONObject.parse(response.getBody()));
|
|
|
+ .buildJSONMessage();
|
|
|
+ log.info("---->>>SecurityUtils.getSubject().isAuthenticated() =" + SecurityUtils.getSubject().isAuthenticated());
|
|
|
+ return ResponseResultUtil.success(response.getResponseStatus(), "", JSONObject.parse(response.getBody()));
|
|
|
// endregion
|
|
|
}
|
|
|
|
|
|
@@ -335,13 +319,13 @@ public class AccessTokenController {
|
|
|
}
|
|
|
|
|
|
@PostMapping(value = "/oauth/wx_token")
|
|
|
- public String wxToken(@RequestBody Map<String,Object> param) throws Exception{
|
|
|
- log.info("wx_token_param=>{}",JSON.toJSONString(param));
|
|
|
- String username=param.get("userCode").toString();
|
|
|
- String userId=param.get("userId").toString();
|
|
|
- String companyId=param.get("cpId").toString();
|
|
|
- String appId=param.get("appId").toString();
|
|
|
- String clientId=param.get("clientId").toString();
|
|
|
+ public String wxToken(@RequestBody Map<String, Object> param) throws Exception {
|
|
|
+ log.info("wx_token_param=>{}", JSON.toJSONString(param));
|
|
|
+ String username = param.get("username").toString();
|
|
|
+ String userId = param.get("userId").toString();
|
|
|
+ String companyId = param.get("cpId").toString();
|
|
|
+ String appId = param.get("appId").toString();
|
|
|
+ String clientId = param.get("clientId").toString();
|
|
|
|
|
|
AuthUserLoginLog authUserLoginLog = new AuthUserLoginLog();
|
|
|
AuthAccessToken authAccessToken = new AuthAccessToken();
|
|
|
@@ -380,11 +364,11 @@ public class AccessTokenController {
|
|
|
}
|
|
|
|
|
|
authUserLoginLog.setCommand(AuthUserLoginLog.LOGIN_COMMAND1);
|
|
|
- wxLoginLog(authUserLoginLog, param.get("ip").toString(),param.get("browser").toString());
|
|
|
+ wxLoginLog(authUserLoginLog, param.get("ip").toString(), param.get("browser").toString());
|
|
|
return accessToken;
|
|
|
}
|
|
|
|
|
|
- private void wxLoginLog(AuthUserLoginLog authUserLoginLog,String ip,String browser) {
|
|
|
+ private void wxLoginLog(AuthUserLoginLog authUserLoginLog, String ip, String browser) {
|
|
|
Date date = new Date();
|
|
|
authUserLoginLog.setCreateDate(date);
|
|
|
authUserLoginLog.setLastUpdateDate(date);
|
|
|
@@ -399,12 +383,12 @@ public class AccessTokenController {
|
|
|
|
|
|
|
|
|
/**
|
|
|
- * @desc : 查询用户最新token
|
|
|
+ * @desc : 查询用户最新token
|
|
|
* @author : 洪旭东
|
|
|
- * @date : 2022-08-02 18:44
|
|
|
+ * @date : 2022-08-02 18:44
|
|
|
*/
|
|
|
@PostMapping(value = "current_token/{userId}")
|
|
|
- public String getCurrentToken(@PathVariable Long userId){
|
|
|
+ public String getCurrentToken(@PathVariable Long userId) {
|
|
|
return authAccessTokenService.getCurrentToken(userId);
|
|
|
}
|
|
|
}
|