diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/CasLoginHandler.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/CasLoginHandler.java index 2975acd6f..23c9265fa 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/CasLoginHandler.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/CasLoginHandler.java @@ -17,6 +17,7 @@ package com.pig4cloud.pigx.admin.handler; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.pig4cloud.pigx.admin.api.dto.UserDTO; import com.pig4cloud.pigx.admin.api.dto.UserInfo; @@ -41,47 +42,54 @@ import org.springframework.stereotype.Component; @AllArgsConstructor public class CasLoginHandler extends AbstractLoginHandler { - private final SysSocialDetailsMapper sysSocialDetailsMapper; + private final SysSocialDetailsMapper sysSocialDetailsMapper; - private final SysUserService sysUserService; + private final SysUserService sysUserService; - /** - * cas 回到的ticket - *

- * 通过ticket 调用CAS获取唯一标识 - * @param ticket - * @return - */ - @Override - @SneakyThrows - public String identify(String ticket) { - SysSocialDetails condition = new SysSocialDetails(); - condition.setType(LoginTypeEnum.CAS.getType()); - SysSocialDetails socialDetails = sysSocialDetailsMapper.selectOne(new QueryWrapper<>(condition)); - // remark 字段填写 CAS 服务器的URL - Cas30ProxyTicketValidator cas30ProxyTicketValidator = new Cas30ProxyTicketValidator(socialDetails.getRemark()); - Assertion validate = cas30ProxyTicketValidator.validate(ticket, socialDetails.getRedirectUrl()); - return validate.getPrincipal().getName(); - } + /** + * cas 回到的ticket + *

+ * 通过ticket 调用CAS获取唯一标识 + * + * @param ticket + * @return + */ + @Override + @SneakyThrows + public String identify(String ticket) { + SysSocialDetails condition = new SysSocialDetails(); + condition.setType(LoginTypeEnum.CAS.getType()); + SysSocialDetails socialDetails = sysSocialDetailsMapper.selectOne(new QueryWrapper<>(condition)); + // remark 字段填写 CAS 服务器的URL + Cas30ProxyTicketValidator cas30ProxyTicketValidator = new Cas30ProxyTicketValidator(socialDetails.getRemark()); + Assertion validate = cas30ProxyTicketValidator.validate(ticket, socialDetails.getRedirectUrl()); + return validate.getPrincipal().getName(); + } - /** + /** * 根据用户名获取用户信息 + * * @param username 用户名 * @return 用户信息对象,如果用户不存在则返回null - */ - @Override - public UserInfo info(String username) { + */ + @Override + public UserInfo info(String username) { + if (StrUtil.isBlank(username)) { + log.warn("CAS用户名为空,无法获取用户信息"); + return null; + } + UserDTO userDTO = new UserDTO(); userDTO.setUsername(username); R userInfoR = sysUserService.getUserInfo(userDTO); if (userInfoR.getData() == null) { - log.info("CAS 不存在用户:{}", username); - return null; - } + log.info("CAS 不存在用户:{}", username); + return null; + } return userInfoR.getData(); - } + } } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/DingTalkLoginHandler.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/DingTalkLoginHandler.java index 1f6e06d26..ca3a8748e 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/DingTalkLoginHandler.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/DingTalkLoginHandler.java @@ -17,6 +17,7 @@ package com.pig4cloud.pigx.admin.handler; +import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONUtil; @@ -91,6 +92,11 @@ public class DingTalkLoginHandler extends AbstractLoginHandler { */ @Override public UserInfo info(String openId) { + if (StrUtil.isBlank(openId)) { + log.warn("钉钉openId为空,无法获取用户信息"); + return null; + } + UserDTO userDTO = new UserDTO(); userDTO.setWxDingUserid(openId); diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/GiteeLoginHandler.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/GiteeLoginHandler.java index 3941d3ff8..dc6900d27 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/GiteeLoginHandler.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/GiteeLoginHandler.java @@ -17,6 +17,7 @@ package com.pig4cloud.pigx.admin.handler; +import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.URLUtil; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONObject; @@ -87,6 +88,10 @@ public class GiteeLoginHandler extends AbstractLoginHandler { */ @Override public UserInfo info(String identify) { + if (StrUtil.isBlank(identify)) { + log.warn("Gitee标识为空,无法获取用户信息"); + return null; + } UserDTO userDTO = new UserDTO(); userDTO.setGiteeLogin(identify); diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/MiniAppLoginHandler.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/MiniAppLoginHandler.java index ed48115c6..81803fbe1 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/MiniAppLoginHandler.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/MiniAppLoginHandler.java @@ -17,6 +17,7 @@ package com.pig4cloud.pigx.admin.handler; +import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; @@ -46,72 +47,76 @@ import org.springframework.stereotype.Component; @AllArgsConstructor public class MiniAppLoginHandler extends AbstractLoginHandler { - private final SysUserService sysUserService; + private final SysUserService sysUserService; - private final SysSocialDetailsMapper sysSocialDetailsMapper; + private final SysSocialDetailsMapper sysSocialDetailsMapper; - /** - * 小程序登录传入code - *

- * 通过code 调用qq 获取唯一标识 - * - * @param code - * @return - */ - @Override - public String identify(String code) { - SysSocialDetails condition = new SysSocialDetails(); - condition.setType(LoginTypeEnum.MINI_APP.getType()); - SysSocialDetails socialDetails = sysSocialDetailsMapper.selectOne(new QueryWrapper<>(condition)); + /** + * 小程序登录传入code + *

+ * 通过code 调用qq 获取唯一标识 + * + * @param code + * @return + */ + @Override + public String identify(String code) { + SysSocialDetails condition = new SysSocialDetails(); + condition.setType(LoginTypeEnum.MINI_APP.getType()); + SysSocialDetails socialDetails = sysSocialDetailsMapper.selectOne(new QueryWrapper<>(condition)); - String url = String.format(SecurityConstants.MINI_APP_AUTHORIZATION_CODE_URL, socialDetails.getAppId(), - socialDetails.getAppSecret(), code); - String result = HttpUtil.get(url); - log.debug("微信小程序响应报文:{}", result); - JSONObject resultJsonObj = JSONUtil.parseObj(result); + String url = String.format(SecurityConstants.MINI_APP_AUTHORIZATION_CODE_URL, socialDetails.getAppId(), + socialDetails.getAppSecret(), code); + String result = HttpUtil.get(url); + log.debug("微信小程序响应报文:{}", result); + JSONObject resultJsonObj = JSONUtil.parseObj(result); - if (resultJsonObj.containsKey("errcode")) { - log.error("微信小程序登录失败:{}", result); - throw new CheckedException("微信小程序登录失败"); - } + if (resultJsonObj.containsKey("errcode")) { + log.error("微信小程序登录失败:{}", result); + throw new CheckedException("微信小程序登录失败"); + } - Object obj = resultJsonObj.get("openid"); - return obj.toString(); - } + return resultJsonObj.getStr("openid"); + } - /** - * 根据openId获取用户信息 - * - * @param openId 用户openId - * @return 用户信息对象,未找到时返回null - */ - @Override - public UserInfo info(String openId) { - UserDTO userDTO = new UserDTO(); - userDTO.setMiniOpenid(openId); + /** + * 根据openId获取用户信息 + * + * @param openId 用户openId + * @return 用户信息对象,未找到时返回null + */ + @Override + public UserInfo info(String openId) { + if (StrUtil.isBlank(openId)) { + log.warn("小程序openId为空,无法获取用户信息"); + return null; + } - R userInfoR = sysUserService.getUserInfo(userDTO); + UserDTO userDTO = new UserDTO(); + userDTO.setMiniOpenid(openId); - if (userInfoR.getData() == null) { - log.info("小程序不存在用户:{}", openId); - return null; - } + R userInfoR = sysUserService.getUserInfo(userDTO); - return userInfoR.getData(); - } + if (userInfoR.getData() == null) { + log.info("小程序不存在用户:{}", openId); + return null; + } - /** - * 绑定逻辑 - * - * @param user 用户实体 - * @param identify 渠道返回唯一标识 - * @return - */ - @Override - public Boolean bind(SysUser user, String identify) { - user.setMiniOpenid(identify); - sysUserService.updateById(user); - return true; - } + return userInfoR.getData(); + } + + /** + * 绑定逻辑 + * + * @param user 用户实体 + * @param identify 渠道返回唯一标识 + * @return + */ + @Override + public Boolean bind(SysUser user, String identify) { + user.setMiniOpenid(identify); + sysUserService.updateById(user); + return true; + } } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/OscChinaLoginHandler.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/OscChinaLoginHandler.java index b2bfeb0ca..34ba9b02e 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/OscChinaLoginHandler.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/OscChinaLoginHandler.java @@ -17,6 +17,7 @@ package com.pig4cloud.pigx.admin.handler; +import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; @@ -86,8 +87,7 @@ public class OscChinaLoginHandler extends AbstractLoginHandler { JSONObject userInfo = JSONUtil.parseObj(resp); // 开源中国唯一标识 - String id = userInfo.getStr("id"); - return id; + return userInfo.getStr("id"); } /** @@ -98,6 +98,11 @@ public class OscChinaLoginHandler extends AbstractLoginHandler { */ @Override public UserInfo info(String identify) { + if (StrUtil.isBlank(identify)) { + log.warn("开源中国标识为空,无法获取用户信息"); + return null; + } + UserDTO userDTO = new UserDTO(); userDTO.setOscId(identify); diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/SmsLoginHandler.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/SmsLoginHandler.java index f9bf59779..d9866eb62 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/SmsLoginHandler.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/SmsLoginHandler.java @@ -17,6 +17,7 @@ package com.pig4cloud.pigx.admin.handler; +import cn.hutool.core.util.StrUtil; import com.pig4cloud.pigx.admin.api.dto.UserDTO; import com.pig4cloud.pigx.admin.api.dto.UserInfo; import com.pig4cloud.pigx.admin.api.entity.SysUser; @@ -48,23 +49,28 @@ public class SmsLoginHandler extends AbstractLoginHandler { } /** - * 通过手机号获取用户信息 - * @param identify 手机号标识 - * @return 用户信息,未找到时返回null + * 通过手机号获取用户信息 + * @param identify 手机号标识 + * @return 用户信息,未找到时返回null */ @Override public UserInfo info(String identify) { - UserDTO userDTO = new UserDTO(); - userDTO.setPhone(identify); - - R userInfoR = sysUserService.getUserInfo(userDTO); - - if (userInfoR.getData() == null) { - log.info("手机号 不存在用户:{}", identify); + if (StrUtil.isBlank(identify)) { + log.warn("手机号为空,无法获取用户信息"); return null; } - return userInfoR.getData(); + UserDTO userDTO = new UserDTO(); + userDTO.setPhone(identify); + + R userInfoR = sysUserService.getUserInfo(userDTO); + + if (userInfoR.getData() == null) { + log.info("手机号 不存在用户:{}", identify); + return null; + } + + return userInfoR.getData(); } /** diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/WeChatCPLoginHandler.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/WeChatCPLoginHandler.java index af636b1ba..f25f2942b 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/WeChatCPLoginHandler.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/WeChatCPLoginHandler.java @@ -17,6 +17,7 @@ package com.pig4cloud.pigx.admin.handler; +import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -82,6 +83,11 @@ public class WeChatCPLoginHandler extends AbstractLoginHandler { */ @Override public UserInfo info(String openId) { + if (StrUtil.isBlank(openId)) { + log.warn("企业微信userid为空,无法获取用户信息"); + return null; + } + UserDTO userDTO = new UserDTO(); userDTO.setWxCpUserid(openId); diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/WeChatLoginHandler.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/WeChatLoginHandler.java index 2c347f6e7..f7b774c1a 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/WeChatLoginHandler.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/WeChatLoginHandler.java @@ -17,6 +17,7 @@ package com.pig4cloud.pigx.admin.handler; +import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -42,63 +43,70 @@ import org.springframework.stereotype.Component; @AllArgsConstructor public class WeChatLoginHandler extends AbstractLoginHandler { - private final SysUserService sysUserService; + private final SysUserService sysUserService; - private final SysSocialDetailsMapper sysSocialDetailsMapper; + private final SysSocialDetailsMapper sysSocialDetailsMapper; - /** - * 微信登录传入code - *

- * 通过code 调用qq 获取唯一标识 - * @param code - * @return - */ - @Override - public String identify(String code) { - SysSocialDetails condition = new SysSocialDetails(); - condition.setType(LoginTypeEnum.WECHAT.getType()); - SysSocialDetails socialDetails = sysSocialDetailsMapper.selectOne(new QueryWrapper<>(condition)); + /** + * 微信登录传入code + *

+ * 通过code 调用qq 获取唯一标识 + * + * @param code + * @return + */ + @Override + public String identify(String code) { + SysSocialDetails condition = new SysSocialDetails(); + condition.setType(LoginTypeEnum.WECHAT.getType()); + SysSocialDetails socialDetails = sysSocialDetailsMapper.selectOne(new QueryWrapper<>(condition)); - String url = String.format(SecurityConstants.WX_AUTHORIZATION_CODE_URL, socialDetails.getAppId(), - socialDetails.getAppSecret(), code); - String result = HttpUtil.get(url); - log.debug("微信响应报文:{}", result); + String url = String.format(SecurityConstants.WX_AUTHORIZATION_CODE_URL, socialDetails.getAppId(), + socialDetails.getAppSecret(), code); + String result = HttpUtil.get(url); + log.debug("微信响应报文:{}", result); - Object obj = JSONUtil.parseObj(result).get("openid"); - return obj.toString(); - } + return JSONUtil.parseObj(result).getStr("openid"); + } - /** - * 根据微信openId获取用户信息 - * @param openId 微信openId - * @return 用户信息,未找到时返回null - */ - @Override - public UserInfo info(String openId) { - UserDTO userDTO = new UserDTO(); - userDTO.setWxOpenid(openId); + /** + * 根据微信openId获取用户信息 + * + * @param openId 微信openId + * @return 用户信息,未找到时返回null + */ + @Override + public UserInfo info(String openId) { + if (StrUtil.isBlank(openId)) { + log.warn("微信openId为空,无法获取用户信息"); + return null; + } - R userInfoR = sysUserService.getUserInfo(userDTO); + UserDTO userDTO = new UserDTO(); + userDTO.setWxOpenid(openId); - if (userInfoR.getData() == null) { - log.info("微信 不存在用户:{}", openId); - return null; - } + R userInfoR = sysUserService.getUserInfo(userDTO); - return userInfoR.getData(); - } + if (userInfoR.getData() == null) { + log.info("微信 不存在用户:{}", openId); + return null; + } - /** - * 绑定逻辑 - * @param user 用户实体 - * @param identify 渠道返回唯一标识 - * @return - */ - @Override - public Boolean bind(SysUser user, String identify) { - user.setWxOpenid(identify); - sysUserService.updateById(user); - return true; - } + return userInfoR.getData(); + } + + /** + * 绑定逻辑 + * + * @param user 用户实体 + * @param identify 渠道返回唯一标识 + * @return + */ + @Override + public Boolean bind(SysUser user, String identify) { + user.setWxOpenid(identify); + sysUserService.updateById(user); + return true; + } }