From 1e4e57ceac723e4a58811fdadb32e8175a105a85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=AA=E4=BA=91=E6=98=8A?= Date: Tue, 23 Mar 2021 11:47:49 +0800 Subject: [PATCH 01/11] =?UTF-8?q?fix(impp):=E8=B5=84=E6=BA=90=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E4=BC=A0=E5=8F=82=E6=94=B9=E4=B8=BAbody=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/busi/SysLocaleResourceController.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLocaleResourceController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLocaleResourceController.java index 89b9246..83665de 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLocaleResourceController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLocaleResourceController.java @@ -13,10 +13,11 @@ import cn.estsh.i3plus.platform.common.tool.StringTool; import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.platform.common.util.FileContentTypeTool; import cn.estsh.i3plus.platform.common.util.PlatformConstWords; +import cn.estsh.i3plus.pojo.base.bean.ImppFile; import cn.estsh.i3plus.pojo.base.bean.ListPager; -import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +import cn.estsh.i3plus.pojo.model.common.CloudPagerModel; import cn.estsh.i3plus.pojo.model.platform.MissResourceModel; import cn.estsh.i3plus.pojo.platform.bean.SysFile; import cn.estsh.i3plus.pojo.platform.bean.SysLocaleLanguage; @@ -26,7 +27,6 @@ import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.fileservice.ImppFileService; -import cn.estsh.i3plus.pojo.base.bean.ImppFile; import cn.estsh.impp.framework.boot.util.ImppRedis; import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; @@ -202,15 +202,15 @@ public class SysLocaleResourceController extends CoreBaseController { /** * 语言资源复杂查询,分页,排序 - * @param sysLocaleResource 查询资源 * @param pager 分页数据 * @return 处理结果 */ - @GetMapping(value = "/query") + @PostMapping(value = "/query") @ApiOperation(value = "语言资源复杂查询,分页,排序",notes = "语言资源复杂查询,分页,排序") - public ResultBean querySysLocaleResourceByPager(SysLocaleResource sysLocaleResource, Pager pager){ + public ResultBean querySysLocaleResourceByPager(@RequestBody CloudPagerModel pager){ try { - ListPager sysLocaleLanguageListPager = sysLocaleResourceService.querySysLocaleResourceByPager(sysLocaleResource,pager); + ListPager sysLocaleLanguageListPager = + sysLocaleResourceService.querySysLocaleResourceByPager(pager.getObj(),pager.getPager()); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setListPager(sysLocaleLanguageListPager); }catch(ImppBusiException busExcep){ return ResultBean.fail(busExcep); From 480fadb6b5c03d0ec08a4c73e194fd5214f8fc3c Mon Sep 17 00:00:00 2001 From: wynne1005 Date: Wed, 7 Apr 2021 20:32:35 +0800 Subject: [PATCH 02/11] =?UTF-8?q?refactor(core):=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=AF=86=E7=A0=81=E8=BF=87=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit21.4.7 --- .../api/iservice/busi/ISysUserPasswordService.java | 5 +- .../controller/base/WhiteController.java | 5 +- .../controller/busi/PersonnelController.java | 63 ++++++++++++++-------- .../controller/busi/SysUserController.java | 43 +++++++++++++-- .../base/login/strategy/DefaultLoginStrategy.java | 42 +++++++++++++-- .../busi/SysUserSavePasswordService.java | 21 ++++++-- .../serviceimpl/busi/SysUserService.java | 21 ++++++-- 7 files changed, 158 insertions(+), 42 deletions(-) diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserPasswordService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserPasswordService.java index 1bce21d..ac4a493 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserPasswordService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserPasswordService.java @@ -4,8 +4,6 @@ import cn.estsh.i3plus.pojo.platform.bean.SysUserPassword; import cn.estsh.impp.framework.base.service.ICrudService; import io.swagger.annotations.ApiOperation; -import java.util.List; - /** * @Description : * @Reference : @@ -24,6 +22,9 @@ public interface ISysUserPasswordService extends ICrudService { @ApiOperation(value = "修改用户密码") void updatePassword(Long userId,String password,String newPwd); + @ApiOperation(value = "修改用户密码") + void updatePassword(String loginName,String password,String newPwd); + @ApiOperation(value = "重置用户密码") void updatePassword(Long userId,String password); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java index e849270..e50d76e 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java @@ -47,6 +47,7 @@ import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.CredentialsException; +import org.apache.shiro.authc.ExpiredCredentialsException; import org.apache.shiro.authc.IncorrectCredentialsException; import org.apache.shiro.authc.LockedAccountException; import org.apache.shiro.authc.UnknownAccountException; @@ -316,8 +317,10 @@ public class WhiteController extends CoreBaseController { } catch (IncorrectCredentialsException e) { result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_PASSWORD); userPasswordUtil.checkLoginErrorNumber(loginModel.getLoginName(), result, e); - userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.WRONG_PASSWORD; + } catch (ExpiredCredentialsException e) { + result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_PASSWORD_EXPIRED); + userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.WRONG_USERNAME_OR_PASSWORD; } catch (CredentialsException e) { // 用户名或密码错误 result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_NAME); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java index 9a2fbbb..cd0c3a8 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java @@ -89,6 +89,7 @@ public class PersonnelController extends CoreBaseController { /** * 添加用户信息 + * * @param model 用户信息 * @return 处理结果 */ @@ -147,6 +148,7 @@ public class PersonnelController extends CoreBaseController { user.setOrganizeNameRdd(userOrganize.getName()); user.setOrganizeCode(userOrganize.getOrganizeCode()); user.setUserInfoId(info.getId()); + user.setUserPasswordLastModifyTime(TimeTool.getNowTime(true)); refreshSysUserPassword(user); personnelService.saveSysUser(user); @@ -167,6 +169,7 @@ public class PersonnelController extends CoreBaseController { /** * 修改用户信息 + * * @param model 用户信息 * @return 处理结果 */ @@ -256,6 +259,7 @@ public class PersonnelController extends CoreBaseController { /** * 修改用户信息 + * * @param model 用户信息 * @return 处理结果 */ @@ -290,6 +294,7 @@ public class PersonnelController extends CoreBaseController { /** * 获取用户信息 + * * @param id 用户id * @return 处理结果 */ @@ -330,6 +335,7 @@ public class PersonnelController extends CoreBaseController { /** * 获取账号信息 + * * @param id 用户id * @return 处理结果 */ @@ -359,6 +365,7 @@ public class PersonnelController extends CoreBaseController { /** * 删除用户信息 + * * @param id 用户id * @return 处理结果 */ @@ -389,6 +396,7 @@ public class PersonnelController extends CoreBaseController { /** * 根据id批量删除 + * * @param ids id数组 * @return 处理 */ @@ -434,6 +442,7 @@ public class PersonnelController extends CoreBaseController { /** * 删除账号信息 + * * @param id 用户账号id * @return 处理结果 */ @@ -464,6 +473,7 @@ public class PersonnelController extends CoreBaseController { /** * 根据id批量删除 + * * @param ids ids数组 * @return 处理结果 */ @@ -509,6 +519,7 @@ public class PersonnelController extends CoreBaseController { /** * 查询角色的所有角色权限关系 + * * @param model 查询条件 * @return 处理结果 */ @@ -521,7 +532,7 @@ public class PersonnelController extends CoreBaseController { List refs = personnelService.querySysRefUserDepartmentByUserDetailModel(model); if (refs != null && refs.size() > 0) { for (SysRefUserDepartment ref : refs) { - if(!idList.contains(ref.getUserId())){ + if (!idList.contains(ref.getUserId())) { idList.add(ref.getUserId()); } } @@ -538,6 +549,7 @@ public class PersonnelController extends CoreBaseController { /** * 查询角色的所有角色权限关系 + * * @param model 处理消息 * @return 处理结果 */ @@ -564,6 +576,7 @@ public class PersonnelController extends CoreBaseController { /** * 根据条件分页查询用户角色信息 + * * @param model 条件 * @return 处理结果 */ @@ -582,6 +595,7 @@ public class PersonnelController extends CoreBaseController { /** * 根据条件分页查询用户信息 + * * @param model 查询条件 * @return 处理结果 */ @@ -600,6 +614,7 @@ public class PersonnelController extends CoreBaseController { /** * 根据条件分页查询用户信息 + * * @param model 查询条件 * @return 处理结果 */ @@ -618,11 +633,12 @@ public class PersonnelController extends CoreBaseController { /** * 获取账号的所有组织信息集合 + * * @return 组织信息集合 */ @GetMapping(value = "/user/get-organize-list") @ApiOperation(value = "获取账号信息", notes = "获取用户账号的所有组织信息") - public ResultBean getUserOrganizeList(){ + public ResultBean getUserOrganizeList() { try { List list = AuthUtil.getSessionUser().getUser().getOrganizeList(); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(list); @@ -635,19 +651,19 @@ public class PersonnelController extends CoreBaseController { @PutMapping(value = "/user/session-organize/{id}") @ApiOperation(value = "修改用户会话组织信息", notes = "修改用户会话组织信息") - public ResultBean updateUserOrganizeList(@PathVariable("id") String idStr){ + public ResultBean updateUserOrganizeList(@PathVariable("id") String idStr) { try { ValidatorBean.checkIsNumber(idStr, "id为空"); List list = AuthUtil.getSessionUser().getUser().getOrganizeList(); Long id = Long.parseLong(idStr); SysOrganize organize = null; for (SysOrganize org : list) { - if(org.getId().equals(id)){ + if (org.getId().equals(id)) { organize = org; } } - if(organize == null){ + if (organize == null) { throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) @@ -658,7 +674,7 @@ public class PersonnelController extends CoreBaseController { // 会话工厂信息保存进Redis AuthUtil.setOrganize(organize); - personnelService.updateSysUserOrganize(AuthUtil.getSessionUser().getUser().getId(),organize.getId()); + personnelService.updateSysUserOrganize(AuthUtil.getSessionUser().getUser().getId(), organize.getId()); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(organize); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); @@ -670,7 +686,7 @@ public class PersonnelController extends CoreBaseController { /** * 数据必填校验 * - * @param model 用户信息 + * @param model 用户信息 * @param isCheckId 是否校验 * @throws Exception */ @@ -717,7 +733,7 @@ public class PersonnelController extends CoreBaseController { * 用户信息初始化 * * @param model 用户明细信息 - * @param user 用户信息 + * @param user 用户信息 * @throws Exception */ public void initUser(UserDetailModel model, SysUser user) throws Exception { @@ -737,8 +753,8 @@ public class PersonnelController extends CoreBaseController { /** * 关系刷新 * - * @param user 账户 - * @param info 用户信息 + * @param user 账户 + * @param info 用户信息 * @param model 用户模型 */ public void refreshRef(SysUser user, SysUserInfo info, UserDetailModel model) { @@ -781,57 +797,60 @@ public class PersonnelController extends CoreBaseController { /** * 根据组织code查询对应的组织信息 + * * @param code 组织代码 * @return 处理结果 */ @GetMapping(value = "/organize/get-code") @ApiOperation(value = "根据组织code查询对应的组织信息", notes = "根据组织code查询对应的组织信息") - public ResultBean getSysOrganizeByCode(String code){ - try{ + public ResultBean getSysOrganizeByCode(String code) { + try { SysOrganize org = new SysOrganize(); org.setOrganizeCode(code); SysOrganize sysOrganize = organizeService.get(org); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(sysOrganize); - }catch(ImppBusiException busExcep){ + } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); - }catch(Exception e){ + } catch (Exception e) { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } /** * 查询所有组织信息 + * * @return 处理结果 */ @GetMapping(value = "/organize/list") @ApiOperation(value = "查询所有组织信息", notes = "查询所有组织信息") - public ResultBean findSysOrganizeList(){ - try{ + public ResultBean findSysOrganizeList() { + try { List sysOrganize = organizeService.findAll(); return ResultBean.success("操作成功") .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) .setResultList(sysOrganize); - }catch(ImppBusiException busExcep){ + } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); - }catch(Exception e){ + } catch (Exception e) { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } /** * 查询所有组织信息 + * * @return 处理结果 */ @GetMapping(value = "/license") @ApiOperation(value = "获取授权信息") - public ResultBean getLicense(){ - try{ + public ResultBean getLicense() { + try { return ResultBean.success("操作成功") .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) .setResultObject(ImppLicenseTool.getLicense()); - }catch(ImppBusiException busExcep){ + } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); - }catch(Exception e){ + } catch (Exception e) { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java index 91bf7bb..49ea348 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java @@ -1,8 +1,13 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; -import cn.estsh.i3plus.core.api.iservice.busi.*; -import cn.estsh.i3plus.core.apiservice.util.SysUserPasswordUtil; +import cn.estsh.i3plus.core.api.iservice.busi.ICoreMemTreeService; +import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysMessageService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysUserInfoService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysUserPasswordService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService; import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.tool.EncryptTool; import cn.estsh.i3plus.platform.common.tool.StringTool; import cn.estsh.i3plus.platform.common.tool.TimeTool; @@ -13,12 +18,16 @@ import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; -import cn.estsh.i3plus.pojo.platform.bean.*; +import cn.estsh.i3plus.pojo.platform.bean.SessionUser; +import cn.estsh.i3plus.pojo.platform.bean.SysMessage; +import cn.estsh.i3plus.pojo.platform.bean.SysRefUserDepartment; +import cn.estsh.i3plus.pojo.platform.bean.SysRefUserRole; +import cn.estsh.i3plus.pojo.platform.bean.SysUser; +import cn.estsh.i3plus.pojo.platform.bean.SysUserInfo; import cn.estsh.impp.framework.base.controller.CoreBaseController; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; -import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.Api; @@ -27,7 +36,13 @@ import org.apache.commons.lang3.RandomStringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; @@ -270,6 +285,24 @@ public class SysUserController extends CoreBaseController{ } } + @PutMapping(value = "/update-expired-password") + @ApiOperation(value = "修改密码", notes = "修改当前登录用户密码") + public ResultBean updateSysUserPassword(String loginName,String password,String newPwd) { + try { + // 数据校验 + ValidatorBean.checkNotNull(password, "旧密码不能为空"); + ValidatorBean.checkNotNull(newPwd, "新密码不能为空"); + ValidatorBean.checkNotNull(loginName, "用户名不能为空"); + + userPasswordService.updatePassword(loginName,password,newPwd.trim()); + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch(ImppBusiException busExcep){ + return ResultBean.fail(busExcep); + }catch(Exception e){ + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + /** * 查询所有用户 * @return 查询所有用户 diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/login/strategy/DefaultLoginStrategy.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/login/strategy/DefaultLoginStrategy.java index 8ebc2d9..66f1c5d 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/login/strategy/DefaultLoginStrategy.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/login/strategy/DefaultLoginStrategy.java @@ -2,24 +2,32 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.base.login.strategy; import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginService; import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginStrategyService; -import cn.estsh.i3plus.core.api.iservice.busi.ILicenseClickService; import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService; import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.pojo.base.bean.BaseThreadLocal; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.model.platform.SysLoginModel; import cn.estsh.i3plus.pojo.platform.bean.SessionUser; +import cn.estsh.i3plus.pojo.platform.bean.SysConfig; +import cn.estsh.i3plus.pojo.platform.bean.SysUser; import cn.estsh.impp.framework.boot.auth.AuthUtil; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.util.ImppRedis; import cn.estsh.impp.framework.boot.util.RedisCacheTool; import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.authc.ExpiredCredentialsException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.function.BiFunction; import static cn.estsh.i3plus.platform.common.util.CommonConstWords.DEFAULT_LANGUAGE; @@ -37,9 +45,6 @@ public class DefaultLoginStrategy implements ISystemLoginStrategyService { protected ImppRedis redisCore; @Autowired - private ILicenseClickService licenseClickService; - - @Autowired private ISysUserService userService; @Autowired @@ -65,6 +70,9 @@ public class DefaultLoginStrategy implements ISystemLoginStrategyService { if (sessionMode != CommonEnumUtil.SESSION_MODE.SEIZE.getValue()) { AuthUtil.logout(); } + // 已经对用户名和密码做过验证了 + // 获取系统参数【密码过期时间】 进行密码有效时间判断 + validatePasswordIsExpired(loginModel.getLoginName()); SessionUser user = userService.loginUser( loginModel.getLoginName().trim(), @@ -84,4 +92,30 @@ public class DefaultLoginStrategy implements ISystemLoginStrategyService { return result; }; } + + private void validatePasswordIsExpired(String loginName) { + SysConfig passwordExpireSwitch = RedisCacheTool.getSysConfigByConfigCode(CommonConstWords.CONFIG_PWD_EXPIRE_SWITCH); + if (passwordExpireSwitch != null + && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == Integer.parseInt(passwordExpireSwitch.getConfigValue())) { + SysConfig passwordExpireDays = RedisCacheTool.getSysConfigByConfigCode(CommonConstWords.CONFIG_PWD_EXPIRE_DAY_TIME); + if (passwordExpireDays != null && Integer.parseInt(passwordExpireDays.getConfigValue()) > 0) { + SysUser user = userService.getSysUserByLoginName(loginName); + if (StringUtils.isEmpty(user.getUserPasswordLastModifyTime())) { + throw new ExpiredCredentialsException("用户密码过期 请重新设置新密码"); + } else { + DateFormat df = new SimpleDateFormat(CommonConstWords.DATE_TIME_FORMAT_HH_MM_SS_RISK); + Date lastModifyDate = null; + try { + lastModifyDate = df.parse(user.getUserPasswordLastModifyTime()); + } catch (ParseException e) { + throw new ImppBusiException("验证用户密码登录时间,时间解析错误"); + } + long dayGap = System.currentTimeMillis() - lastModifyDate.getTime() / (60 * 60 * 1000 * 24); + if ((int) dayGap >= Integer.parseInt(passwordExpireDays.getConfigValue())) { + throw new ExpiredCredentialsException("用户密码过期 请重新设置新密码"); + } + } + } + } + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java index 111ba52..8256ce3 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java @@ -15,14 +15,11 @@ import cn.estsh.impp.framework.base.service.CrudService; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ValidatorBean; -import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Service; -import java.util.List; - /** * @Description : * @Reference : @@ -68,6 +65,23 @@ public class SysUserSavePasswordService extends CrudService imp } @Override + public void updatePassword(String loginName, String password, String newPwd) { + SysUser user= userService.getSysUserByLoginName(loginName); + SysUserPassword userPassword = userPasswordRDao.getById(user.getUserLoginPasswordId()); + ValidatorBean.checkNotNull(userPassword,"不存在的用户密码信息"); + if(StringUtils.equals(userPassword.getUserPassword(),password)){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("原始密码错误") + .setErrorSolution("请重新操作") + .build(); + } + + updatePassword(user.getId(), newPwd); + } + + @Override public void updatePassword(Long userId, String password) { SysUser user = userService.getSysUserById(userId); ValidatorBean.checkNotNull(user,"不存在的用户信息"); @@ -88,6 +102,7 @@ public class SysUserSavePasswordService extends CrudService imp SysUserPassword save = userPasswordRDao.save(pwd); user.setUserLoginPasswordId(save.getId()); + user.setUserPasswordLastModifyTime(TimeTool.getNowTime(true)); ConvertBean.serviceModelUpdate(user,AuthUtil.getSessionUser().getUserName()); userService.updateSysUser(user); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java index eff6bdc..ac437fc 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java @@ -1,9 +1,9 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; import cn.estsh.i3plus.core.api.iservice.busi.*; -import cn.estsh.i3plus.core.apiservice.dao.IUserPermissionDao; import cn.estsh.i3plus.core.apiservice.util.SysUserPasswordUtil; import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.tool.EncryptTool; import cn.estsh.i3plus.platform.common.tool.StringTool; import cn.estsh.i3plus.platform.common.tool.TimeTool; @@ -20,11 +20,15 @@ import cn.estsh.i3plus.pojo.base.shirotoken.UserToken; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.tool.HqlPack; import cn.estsh.i3plus.pojo.platform.bean.*; -import cn.estsh.i3plus.pojo.platform.repository.*; +import cn.estsh.i3plus.pojo.platform.repository.SysLogUserLoginRepository; +import cn.estsh.i3plus.pojo.platform.repository.SysRefUserDepartmentRepository; +import cn.estsh.i3plus.pojo.platform.repository.SysRefUserPositionRepository; +import cn.estsh.i3plus.pojo.platform.repository.SysRefUserRoleRepository; +import cn.estsh.i3plus.pojo.platform.repository.SysUserInfoRepository; +import cn.estsh.i3plus.pojo.platform.repository.SysUserRepository; import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; -import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.impp.framework.boot.util.ImppRedis; import cn.estsh.impp.framework.boot.util.RedisCacheTool; import cn.estsh.impp.framework.boot.util.ValidatorBean; @@ -42,7 +46,15 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; import java.util.stream.Collectors; @@ -124,7 +136,6 @@ public class SysUserService implements ISysUserService { BaseToken token = getToken(loginName, password, languageCode, loginPlatform); SessionUser sessionUser = AuthUtil.login(token); SysUser user = this.getSysUserByLoginName(loginName); - if (user == null) { throw new CredentialsException("用户不存在"); } From 9f67131539ce6b13f7a952a793f416f3d844c67b Mon Sep 17 00:00:00 2001 From: wynne1005 Date: Thu, 8 Apr 2021 15:01:00 +0800 Subject: [PATCH 03/11] =?UTF-8?q?refactor(core):=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=AF=86=E7=A0=81=E8=BF=87=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Finish 21.4.8 --- .../api/iservice/busi/ISysUserPasswordService.java | 1 + .../core/api/iservice/busi/ISysUserService.java | 16 ++++++- .../controller/base/SystemController.java | 19 ++++----- .../controller/base/WhiteController.java | 21 +++++++++- .../controller/busi/SysUserController.java | 18 -------- .../base/login/strategy/DefaultLoginStrategy.java | 3 +- .../busi/SysUserSavePasswordService.java | 49 ++++++++++++++++------ .../serviceimpl/busi/SysUserService.java | 12 ++++++ 8 files changed, 94 insertions(+), 45 deletions(-) diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserPasswordService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserPasswordService.java index ac4a493..2c77db1 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserPasswordService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserPasswordService.java @@ -28,4 +28,5 @@ public interface ISysUserPasswordService extends ICrudService { @ApiOperation(value = "重置用户密码") void updatePassword(Long userId,String password); + void updatePasswordWizoutSession(String loginName,String password,String newPwd); } diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java index df2219e..e6d1196 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java @@ -3,7 +3,11 @@ package cn.estsh.i3plus.core.api.iservice.busi; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.shirotoken.BaseToken; -import cn.estsh.i3plus.pojo.platform.bean.*; +import cn.estsh.i3plus.pojo.platform.bean.SessionUser; +import cn.estsh.i3plus.pojo.platform.bean.SysLogUserLogin; +import cn.estsh.i3plus.pojo.platform.bean.SysRefUserRole; +import cn.estsh.i3plus.pojo.platform.bean.SysUser; +import cn.estsh.i3plus.pojo.platform.bean.SysUserInfo; import io.swagger.annotations.ApiOperation; import org.apache.shiro.authc.AuthenticationException; @@ -300,4 +304,14 @@ public interface ISysUserService { */ @ApiOperation(value = "根据id查询用户信息") List findSysUserByIds(Long[] ids); + + + /** + * 根据用户名查询密码是否正确 + * + * @param loginName 用户名 + * @param password 密码 + */ + @ApiOperation(value = "根据用户名查询密码是否正确") + SysUser validatePasswordByLoginNameAndReturnUser(String loginName, String password); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/SystemController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/SystemController.java index 6de22d1..159748c 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/SystemController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/SystemController.java @@ -1,12 +1,10 @@ package cn.estsh.i3plus.core.apiservice.controller.base; -import cn.estsh.i3plus.core.api.iservice.busi.ISysDictionaryService; -import cn.estsh.i3plus.icloud.wms.sdk.IWmsCommonCloud; +import cn.estsh.i3plus.core.api.iservice.busi.ISysUserPasswordService; import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.platform.common.util.PlatformConstWords; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; -import cn.estsh.impp.framework.boot.configuration.SystemConfig; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ImppRedis; @@ -28,7 +26,11 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; -import java.util.*; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; /** * @Description : @@ -47,17 +49,11 @@ public class SystemController { @Autowired private Environment environment; - @Autowired - private IWmsCommonCloud wmsCommonCloud; - @Resource(name = CommonConstWords.IMPP_REDIS_CORE) protected ImppRedis redisCore; @Autowired - private ISysDictionaryService sysDictionaryService; - - @Autowired - private SystemConfig systemConfig; + private ISysUserPasswordService userPasswordService; @GetMapping("/get-properties") @ApiOperation(value = "获取系统配置信息", notes = "获取系统配置信息") @@ -139,4 +135,5 @@ public class SystemController { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } + } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java index e50d76e..2e08c19 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java @@ -2,7 +2,6 @@ package cn.estsh.i3plus.core.apiservice.controller.base; import cn.estsh.i3plus.core.api.iservice.base.ISynchronizedService; import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService; -import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginService; import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginStrategyService; import cn.estsh.i3plus.core.api.iservice.busi.*; import cn.estsh.i3plus.core.apiservice.controller.busi.PersonnelController; @@ -133,7 +132,7 @@ public class WhiteController extends CoreBaseController { private ISysConfigService configService; @Autowired - private ISystemLoginService loginService; + private ISysUserPasswordService userPasswordService; @Autowired private SysUserPasswordUtil userPasswordUtil; @@ -720,6 +719,24 @@ public class WhiteController extends CoreBaseController { } } + @PutMapping(value = "/update-expired-password") + @ApiOperation(value = "修改密码", notes = "松下修改当前登录用户密码") + public ResultBean updateSysUserPassword(String loginName, String password, String newPwd) { + try { + // 数据校验 + ValidatorBean.checkNotNull(password, "旧密码不能为空"); + ValidatorBean.checkNotNull(newPwd, "新密码不能为空"); + ValidatorBean.checkNotNull(loginName, "用户名不能为空"); + + userPasswordService.updatePasswordWizoutSession(loginName, password, newPwd.trim()); + return ResultBean.success("修改密码成功,请重新登陆").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + @PostMapping(value = "/license") @ApiOperation(value = "更新授权", notes = "更新授权") public ResultBean updateLicense(String content) { diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java index 49ea348..aace7cf 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java @@ -285,24 +285,6 @@ public class SysUserController extends CoreBaseController{ } } - @PutMapping(value = "/update-expired-password") - @ApiOperation(value = "修改密码", notes = "修改当前登录用户密码") - public ResultBean updateSysUserPassword(String loginName,String password,String newPwd) { - try { - // 数据校验 - ValidatorBean.checkNotNull(password, "旧密码不能为空"); - ValidatorBean.checkNotNull(newPwd, "新密码不能为空"); - ValidatorBean.checkNotNull(loginName, "用户名不能为空"); - - userPasswordService.updatePassword(loginName,password,newPwd.trim()); - return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - } catch(ImppBusiException busExcep){ - return ResultBean.fail(busExcep); - }catch(Exception e){ - return ImppExceptionBuilder.newInstance().buildExceptionResult(e); - } - } - /** * 查询所有用户 * @return 查询所有用户 diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/login/strategy/DefaultLoginStrategy.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/login/strategy/DefaultLoginStrategy.java index 66f1c5d..9c0f7f2 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/login/strategy/DefaultLoginStrategy.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/login/strategy/DefaultLoginStrategy.java @@ -72,6 +72,7 @@ public class DefaultLoginStrategy implements ISystemLoginStrategyService { } // 已经对用户名和密码做过验证了 // 获取系统参数【密码过期时间】 进行密码有效时间判断 + userService.validatePasswordByLoginNameAndReturnUser(loginModel.getLoginName(),loginModel.getLoginPwd()); validatePasswordIsExpired(loginModel.getLoginName()); SessionUser user = userService.loginUser( @@ -110,7 +111,7 @@ public class DefaultLoginStrategy implements ISystemLoginStrategyService { } catch (ParseException e) { throw new ImppBusiException("验证用户密码登录时间,时间解析错误"); } - long dayGap = System.currentTimeMillis() - lastModifyDate.getTime() / (60 * 60 * 1000 * 24); + long dayGap = (System.currentTimeMillis() - lastModifyDate.getTime()) / (60 * 60 * 1000 * 24); if ((int) dayGap >= Integer.parseInt(passwordExpireDays.getConfigValue())) { throw new ExpiredCredentialsException("用户密码过期 请重新设置新密码"); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java index 8256ce3..f0800f5 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java @@ -48,11 +48,11 @@ public class SysUserSavePasswordService extends CrudService imp @Override public void updatePassword(Long userId, String password, String newPwd) { SysUser user = userService.getSysUserById(userId); - ValidatorBean.checkNotNull(user,"不存在的用户信息"); + ValidatorBean.checkNotNull(user, "不存在的用户信息"); SysUserPassword userPassword = userPasswordRDao.getById(user.getUserLoginPasswordId()); - ValidatorBean.checkNotNull(userPassword,"不存在的用户密码信息"); - if(StringUtils.equals(userPassword.getUserPassword(),password)){ + ValidatorBean.checkNotNull(userPassword, "不存在的用户密码信息"); + if (StringUtils.equals(userPassword.getUserPassword(), password)) { throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) @@ -66,10 +66,10 @@ public class SysUserSavePasswordService extends CrudService imp @Override public void updatePassword(String loginName, String password, String newPwd) { - SysUser user= userService.getSysUserByLoginName(loginName); + SysUser user = userService.getSysUserByLoginName(loginName); SysUserPassword userPassword = userPasswordRDao.getById(user.getUserLoginPasswordId()); - ValidatorBean.checkNotNull(userPassword,"不存在的用户密码信息"); - if(StringUtils.equals(userPassword.getUserPassword(),password)){ + ValidatorBean.checkNotNull(userPassword, "不存在的用户密码信息"); + if (StringUtils.equals(userPassword.getUserPassword(), password)) { throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) @@ -84,26 +84,51 @@ public class SysUserSavePasswordService extends CrudService imp @Override public void updatePassword(Long userId, String password) { SysUser user = userService.getSysUserById(userId); - ValidatorBean.checkNotNull(user,"不存在的用户信息"); + ValidatorBean.checkNotNull(user, "不存在的用户信息"); user.setUserLoginPassword(password); userPasswordUtil.checkPasswordSave(user); userPasswordRDao.updateByProperties( - new String[]{"userId","isDeleted"}, - new Object[]{user.getId(),CommonEnumUtil.IS_DEAL.NO.getValue()}, - new String[]{"isDeleted","modifyDatetime","modifyUser"}, + new String[]{"userId", "isDeleted"}, + new Object[]{user.getId(), CommonEnumUtil.IS_DEAL.NO.getValue()}, + new String[]{"isDeleted", "modifyDatetime", "modifyUser"}, new Object[]{ CommonEnumUtil.IS_DEAL.YES.getValue(), TimeTool.getNowTime(true), AuthUtil.getSessionUser().getUserName()}); SysUserPassword pwd = new SysUserPassword(); pwd.setUserId(userId); pwd.setUserPassword(SysUserPasswordUtil.encoder(password)); - ConvertBean.serviceModelInitialize(pwd,AuthUtil.getSessionUser()); + ConvertBean.serviceModelInitialize(pwd, AuthUtil.getSessionUser()); SysUserPassword save = userPasswordRDao.save(pwd); user.setUserLoginPasswordId(save.getId()); user.setUserPasswordLastModifyTime(TimeTool.getNowTime(true)); - ConvertBean.serviceModelUpdate(user,AuthUtil.getSessionUser().getUserName()); + ConvertBean.serviceModelUpdate(user, AuthUtil.getSessionUser().getUserName()); + userService.updateSysUser(user); + } + + @Override + public void updatePasswordWizoutSession(String loginName, String password, String newPwd) { + SysUser user = userService.validatePasswordByLoginNameAndReturnUser(loginName, password); + user.setUserLoginPassword(password); + userPasswordUtil.checkPasswordSave(user); + + userPasswordRDao.updateByProperties( + new String[]{"userId", "isDeleted"}, + new Object[]{user.getId(), CommonEnumUtil.IS_DEAL.NO.getValue()}, + new String[]{"isDeleted", "modifyDatetime", "modifyUser"}, + new Object[]{ + CommonEnumUtil.IS_DEAL.YES.getValue(), TimeTool.getNowTime(true), loginName}); + + SysUserPassword pwd = new SysUserPassword(); + pwd.setUserId(user.getId()); + pwd.setUserPassword(SysUserPasswordUtil.encoder(newPwd)); + ConvertBean.serviceModelInitialize(pwd, loginName); + SysUserPassword save = userPasswordRDao.save(pwd); + + user.setUserLoginPasswordId(save.getId()); + user.setUserPasswordLastModifyTime(TimeTool.getNowTime(true)); + ConvertBean.serviceModelUpdate(user, loginName); userService.updateSysUser(user); } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java index ac437fc..75f1e0e 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java @@ -37,6 +37,7 @@ import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.CredentialsException; +import org.apache.shiro.authc.IncorrectCredentialsException; import org.apache.shiro.authc.UnknownAccountException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -724,6 +725,17 @@ public class SysUserService implements ISysUserService { return userRDao.findByHqlWhere(ddlPackBean); } + @Override + public SysUser validatePasswordByLoginNameAndReturnUser(String loginName, String password) { + SysUser userDb = getSysUserByLoginName(loginName); + ValidatorBean.checkNotNull(userDb, "不存在的用户信息"); + SysUserPassword userPassword = userPasswordService.get(userDb.getUserLoginPasswordId()); + if (!userPassword.getUserPassword().equals(SysUserPasswordUtil.encoder(password))) { + throw new IncorrectCredentialsException("用户密码错误"); + } + return userDb; + } + /** * 账号数据排序 * 创建时间 角色升序 From 8f658735b115435976184bff834f6106c92971a2 Mon Sep 17 00:00:00 2001 From: wynne1005 Date: Tue, 13 Apr 2021 14:59:02 +0800 Subject: [PATCH 04/11] =?UTF-8?q?refactor(core):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E9=BB=98=E8=AE=A4=E6=B7=BB=E5=8A=A0UserPassw?= =?UTF-8?q?ord?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增用户默认添加UserPassword --- .../core/apiservice/controller/base/WhiteController.java | 3 +++ .../apiservice/controller/busi/PersonnelController.java | 13 +++++++++++++ .../core/apiservice/serviceimpl/busi/SysUserService.java | 13 ++++++++++--- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java index 2e08c19..eac36b2 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java @@ -337,13 +337,16 @@ public class WhiteController extends CoreBaseController { result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_PASSWORD.getDescription()).setCode(ImppExceptionEnum.LOGIN_EXCEPTION_USER_PASSWORD.getCode()); result.setErrorMsg(e.getMessage()); userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR; + LOGGER.warn("Impp业务异常AuthenticationException 登录失败 ", e); } catch (ImppBusiException e) { result = ResultBean.fail(e); userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR; + LOGGER.warn("Impp业务异常ImppBusiException 登录失败 ", e); } catch (Exception e) { result = ResultBean.fail(e.getMessage()).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()) .setErrorMsg(LocaleUtils.getEnumLocaleResDesc(ImppExceptionEnum.SYSTEM_EXCEPTION, ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription())); userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR; + LOGGER.warn("Impp业务异常Exception 登录失败 ", e); } finally { // 记录登录记录 recordSysUserLog(null, loginModel.getLoginName(), userLoginStatus.getValue()); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java index cd0c3a8..5417f96 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java @@ -22,6 +22,7 @@ import cn.estsh.i3plus.pojo.model.platform.UserDetailModel; import cn.estsh.i3plus.pojo.model.platform.UserDetailPagerModel; import cn.estsh.i3plus.pojo.model.platform.UserRolePagerModel; import cn.estsh.i3plus.pojo.platform.bean.*; +import cn.estsh.i3plus.pojo.platform.repository.SysUserPasswordRepository; import cn.estsh.impp.framework.base.controller.CoreBaseController; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; @@ -87,6 +88,9 @@ public class PersonnelController extends CoreBaseController { @Autowired private SysUserPasswordUtil userPasswordUtil; + @Autowired + private SysUserPasswordRepository userPasswordRDao; + /** * 添加用户信息 * @@ -150,6 +154,15 @@ public class PersonnelController extends CoreBaseController { user.setUserInfoId(info.getId()); user.setUserPasswordLastModifyTime(TimeTool.getNowTime(true)); refreshSysUserPassword(user); + SysUser userSaved=personnelService.saveSysUser(user); + + // 添加保存passwordId进SysUser表 + SysUserPassword pwd = new SysUserPassword(); + pwd.setUserId(userSaved.getId()); + pwd.setUserPassword(userSaved.getUserLoginPassword()); + ConvertBean.serviceModelInitialize(pwd, userSaved.getUserName()); + SysUserPassword savedPassword = userPasswordRDao.save(pwd); + user.setUserLoginPasswordId(savedPassword.getId()); personnelService.saveSysUser(user); info.setUserId(user.getId()); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java index 75f1e0e..2d6b3d7 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java @@ -729,10 +729,17 @@ public class SysUserService implements ISysUserService { public SysUser validatePasswordByLoginNameAndReturnUser(String loginName, String password) { SysUser userDb = getSysUserByLoginName(loginName); ValidatorBean.checkNotNull(userDb, "不存在的用户信息"); - SysUserPassword userPassword = userPasswordService.get(userDb.getUserLoginPasswordId()); - if (!userPassword.getUserPassword().equals(SysUserPasswordUtil.encoder(password))) { - throw new IncorrectCredentialsException("用户密码错误"); + if (userDb.getUserLoginPasswordId() == null || userDb.getUserLoginPasswordId() <= 0) { + if (!userDb.getUserLoginPassword().equals(SysUserPasswordUtil.encoder(password))) { + throw new IncorrectCredentialsException("用户密码错误"); + } + } else { + SysUserPassword userPassword = userPasswordService.get(userDb.getUserLoginPasswordId()); + if (!userPassword.getUserPassword().equals(SysUserPasswordUtil.encoder(password))) { + throw new IncorrectCredentialsException("用户密码错误"); + } } + return userDb; } From b7d2dc1b40dede9157ec4b1bdae9a21d5f1e310b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=AA=E4=BA=91=E6=98=8A?= Date: Tue, 13 Apr 2021 16:59:55 +0800 Subject: [PATCH 05/11] =?UTF-8?q?fix(core):=E4=BF=AE=E6=94=B9=E5=9B=BD?= =?UTF-8?q?=E9=99=85=E5=8C=96=E8=B5=84=E6=BA=90=E6=97=B6=E7=9A=84=E4=BC=A0?= =?UTF-8?q?=E5=8F=82=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/apiservice/controller/busi/SysLocaleResourceController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLocaleResourceController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLocaleResourceController.java index 83665de..058ff60 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLocaleResourceController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLocaleResourceController.java @@ -128,7 +128,7 @@ public class SysLocaleResourceController extends CoreBaseController { */ @PutMapping(value = "/update") @ApiOperation(value = "修改语言资源",notes = "修改语言资源") - public ResultBean updateSysLocaleResource(SysLocaleResource sysLocaleResource) { + public ResultBean updateSysLocaleResource(@RequestBody SysLocaleResource sysLocaleResource) { try { //条件验证 ValidatorBean.beginValid(sysLocaleResource) From a0ef9bc225481b0ecd7f484d4793e527fe355f03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=AA=E4=BA=91=E6=98=8A?= Date: Tue, 13 Apr 2021 17:08:00 +0800 Subject: [PATCH 06/11] =?UTF-8?q?fix(core):=E5=8E=BB=E9=99=A4=E6=89=8B?= =?UTF-8?q?=E6=9C=BA=E5=8F=B7=E4=B8=8E=E9=82=AE=E7=AE=B1=E5=9C=B0=E5=9D=80?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/apiservice/controller/busi/PersonnelController.java | 8 ++------ .../i3plus/core/apiservice/controller/busi/SysUserController.java | 4 +--- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java index f31f3a4..6c3206b 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java @@ -676,9 +676,7 @@ public class PersonnelController extends CoreBaseController { .notNull("infoPositionId", model.getInfoPositionId()) .notNull("infoDepartmentId", model.getInfoDepartmentId()) .notNull("userDepartmentId", model.getUserDepartmentId()) - .notNull("userLoginName", model.getUserLoginName()) - .notNull("userEmail", model.getUserEmail()) - .notNull("userPhone", model.getUserPhone()); + .notNull("userLoginName", model.getUserLoginName()); } /** @@ -694,9 +692,7 @@ public class PersonnelController extends CoreBaseController { .notNull("infoName", model.getInfoName()) .notNull("infoEmpNo", model.getInfoEmpNo()) .notNull("userDepartmentId", model.getUserDepartmentId()) - .notNull("userLoginName", model.getUserLoginName()) - .notNull("userEmail", model.getUserEmail()) - .notNull("userPhone", model.getUserPhone()); + .notNull("userLoginName", model.getUserLoginName()); } /** diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java index fbc54a3..e94e34e 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java @@ -81,7 +81,6 @@ public class SysUserController extends CoreBaseController{ ValidatorBean.beginValid(sysUser) .numberCheck("userInfoId",sysUser.getUserInfoId()) .notNull("userLoginName",sysUser.getUserLoginName()) - .notNull("userEmail",sysUser.getUserEmail()) .notNull("userLoginPassword",sysUser.getUserLoginPassword()); if(roleIds == null || roleIds.length <= 0){ @@ -143,8 +142,7 @@ public class SysUserController extends CoreBaseController{ ValidatorBean.beginValid(sysUser) .numberCheck("id",sysUser.getUserInfoId()) .numberCheck("userInfoId",sysUser.getUserInfoId()) - .notNull("userLoginName",sysUser.getUserLoginName()) - .notNull("userEmail",sysUser.getUserEmail()); + .notNull("userLoginName",sysUser.getUserLoginName()); if(roleIds == null || roleIds.length <= 0){ throw ImppExceptionBuilder.newInstance() From 296c2870e99e1752b104dabf82e79fd782a4c849 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=AA=E4=BA=91=E6=98=8A?= Date: Tue, 13 Apr 2021 17:32:19 +0800 Subject: [PATCH 07/11] =?UTF-8?q?feat(core):=E6=B7=BB=E5=8A=A0=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E7=8A=B6=E6=80=81=E5=8F=98=E6=9B=B4=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../i3plus/core/apiservice/mq/MessageMailQueueReceiver.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java index a7f5d88..a49718f 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java @@ -29,6 +29,8 @@ import org.springframework.context.annotation.Configuration; import java.io.IOException; import java.io.InputStream; +import static cn.estsh.i3plus.platform.common.util.CommonConstWords.CONFIG_APP_STATE_CHANGE_NOTICE; + /** * @Description : 邮件队列处理 * @Reference : @@ -119,7 +121,16 @@ public class MessageMailQueueReceiver { // 判断收件人类型 if (msg.getMessageReceiverType() != null) { - if (msg.getMessageReceiverType() == ImppEnumUtil.MESSAGE_RECEIVER_TYPE.EXTERNAL.getValue()) { + if (msg.getMessageReceiverType() == ImppEnumUtil.MESSAGE_RECEIVER_TYPE.URGENT.getValue() + && RedisCacheTool.getSysConfigBooleanVal(CONFIG_APP_STATE_CHANGE_NOTICE)) { + // 判断是否为系统紧急提示 微服注册状态提示 + mailUtil.setTo(RedisCacheTool.getSysConfigStrVal(PlatformConstWords.CONTACT_MAIL)); + try { + mailUtil.send(); + } catch (Exception e) { + saveSendErrorMsg(msg, RedisCacheTool.getSysConfigStrVal(PlatformConstWords.CONTACT_MAIL), e); + } + } else if (msg.getMessageReceiverType() == ImppEnumUtil.MESSAGE_RECEIVER_TYPE.EXTERNAL.getValue()) { //判断是否为外部邮件 mailUtil.setTo(StringUtils.split(msg.getMessageReceiversNameRdd(), ",")); try { From c65a1d735c0b7d814e651ee025b5934884519f4d Mon Sep 17 00:00:00 2001 From: wynne1005 Date: Sat, 8 May 2021 14:32:19 +0800 Subject: [PATCH 08/11] =?UTF-8?q?fix(core):=20=E6=B7=BB=E5=8A=A0=20?= =?UTF-8?q?=E6=9C=AA=E6=B7=BB=E5=8A=A0=E8=87=B3=E5=9B=BD=E9=99=85=E5=8C=96?= =?UTF-8?q?=E7=9A=84=E8=B5=84=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加 未添加至国际化的资源 --- .../apiservice/controller/base/WhiteController.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java index eac36b2..9ce20e5 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java @@ -41,6 +41,8 @@ import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.SpringContextsUtil; import cn.estsh.impp.framework.boot.util.ValidatorBean; import com.alibaba.fastjson.JSONObject; +import com.google.common.cache.Cache; +import com.google.common.cache.CacheBuilder; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; @@ -75,6 +77,7 @@ import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.Set; +import java.util.concurrent.TimeUnit; import java.util.function.BiFunction; import java.util.stream.Collectors; @@ -149,6 +152,11 @@ public class WhiteController extends CoreBaseController { @Autowired private RabbitTemplate rabbitTemplate; + private Cache unsavedLocaleResSwitch = CacheBuilder.newBuilder() + .maximumSize(1) + .expireAfterWrite(1, TimeUnit.MINUTES) + .build(); + @GetMapping(value = "/sys-locale-language/list") @ApiOperation(value = "查询可用语言", notes = "查询可用语言") public ResultBean listSysLocaleLanguage() { @@ -690,6 +698,17 @@ public class WhiteController extends CoreBaseController { @ApiOperation(value = "缺失资源", notes = "缺失资源") public ResultBean getMissResourceByKey(String key, String menuCode) { try { + Integer switcher = unsavedLocaleResSwitch.asMap().get(PlatformConstWords.WEB_MISS_RESOURCE_LISTENER_SWITCH); + + if (switcher == null) { + switcher = RedisCacheTool.getSysConfigIntVal(PlatformConstWords.WEB_MISS_RESOURCE_LISTENER_SWITCH, + CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + unsavedLocaleResSwitch.put(PlatformConstWords.WEB_MISS_RESOURCE_LISTENER_SWITCH, switcher); + } + if (switcher == -1 || switcher == CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) { + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } + Map missResource = new HashMap<>(); missResource.put(key, menuCode); rabbitTemplate.convertAndSend(PlatformConstWords.QUEUE_IMPP_RESOURCE, JsonUtilTool.encode(missResource)); From 762458a1d593fa9193f81b8d851f355c53be5b50 Mon Sep 17 00:00:00 2001 From: wynne1005 Date: Tue, 11 May 2021 13:27:24 +0800 Subject: [PATCH 09/11] =?UTF-8?q?feat(core):=20=E5=B9=B3=E5=8F=B0=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E7=94=A8=E6=88=B7=E5=90=8D=E7=99=BB=E5=BD=95=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=20=E6=94=AF=E6=8C=81=E9=92=89=E9=92=89=E6=8E=88?= =?UTF-8?q?=E6=9D=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 平台添加用户名登录方式 支持钉钉授权 --- .../api/iservice/base/ISystemLoginService.java | 25 ++++++ modules/i3plus-core-apiservice/pom.xml | 6 ++ .../apiservice/auth/ShiroAuthConfiguration.java | 24 ++++++ .../realm/strategy/name/NameAdminAuthRealm.java | 55 +++++++++++++ .../auth/realm/strategy/name/NameSaAuthRealm.java | 50 ++++++++++++ .../realm/strategy/name/NameUserAuthRealm.java | 55 +++++++++++++ .../controller/base/WhiteController.java | 54 +++++++++++++ .../serviceimpl/base/SystemLoginService.java | 25 +++++- .../base/login/strategy/NameLoginStrategy.java | 92 ++++++++++++++++++++++ .../src/main/resources/application.properties | 2 +- pom.xml | 8 +- 11 files changed, 393 insertions(+), 3 deletions(-) create mode 100644 modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/strategy/name/NameAdminAuthRealm.java create mode 100644 modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/strategy/name/NameSaAuthRealm.java create mode 100644 modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/strategy/name/NameUserAuthRealm.java create mode 100644 modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/login/strategy/NameLoginStrategy.java diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/ISystemLoginService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/ISystemLoginService.java index eb5dcb5..5b3240c 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/ISystemLoginService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/ISystemLoginService.java @@ -92,6 +92,31 @@ public interface ISystemLoginService { SessionUser queryCheckE9SaAdminLogin(SaAdminToken saAdminToken); /** + * Name用户单点登录 + * + * @param userToken 用户token + * @return 用户会话 + */ + @ApiOperation(value = "封装用户", notes = "封装普通用户信息") + SessionUser queryCheckNameUserLogin(UserToken userToken); + /** + * NameAdmin单点登录 + * + * @param adminToken admin token + * @return 用户会话 + */ + @ApiOperation(value = "封装用户", notes = "封装管理员信息") + SessionUser queryCheckNameAdminLogin(AdminToken adminToken); + + /** + * Name SA单点登录 + * @param saAdminToken sa token + * @return 用户会话 + */ + @ApiOperation(value = "封装用户", notes = "封装超级管理员信息") + SessionUser queryCheckNameSaAdminLogin(SaAdminToken saAdminToken); + + /** * 记录登录错误 * * @param loginName 账号 diff --git a/modules/i3plus-core-apiservice/pom.xml b/modules/i3plus-core-apiservice/pom.xml index 3684557..6f40464 100644 --- a/modules/i3plus-core-apiservice/pom.xml +++ b/modules/i3plus-core-apiservice/pom.xml @@ -89,6 +89,11 @@ i3plus.sdk + i3plus-sdk-dingtalk + + + + i3plus.sdk i3plus-sdk-sms @@ -174,6 +179,7 @@ i3plus.pojo i3plus-pojo-mes + org.slf4j slf4j-api diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/ShiroAuthConfiguration.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/ShiroAuthConfiguration.java index c87079e..e6cafcb 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/ShiroAuthConfiguration.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/ShiroAuthConfiguration.java @@ -7,6 +7,9 @@ import cn.estsh.i3plus.core.apiservice.auth.realm.UserAuthRealm; import cn.estsh.i3plus.core.apiservice.auth.realm.strategy.e9.E9AdminAuthRealm; import cn.estsh.i3plus.core.apiservice.auth.realm.strategy.e9.E9SaAuthRealm; import cn.estsh.i3plus.core.apiservice.auth.realm.strategy.e9.E9UserAuthRealm; +import cn.estsh.i3plus.core.apiservice.auth.realm.strategy.name.NameAdminAuthRealm; +import cn.estsh.i3plus.core.apiservice.auth.realm.strategy.name.NameSaAuthRealm; +import cn.estsh.i3plus.core.apiservice.auth.realm.strategy.name.NameUserAuthRealm; import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; @@ -107,6 +110,21 @@ public class ShiroAuthConfiguration { return new E9UserAuthRealm(); } + @Bean + public NameAdminAuthRealm nameAdminAuthRealm() { + return new NameAdminAuthRealm(); + } + + @Bean + public NameSaAuthRealm nameSaAuthRealm() { + return new NameSaAuthRealm(); + } + + @Bean + public NameUserAuthRealm nameUserAuthRealm() { + return new NameUserAuthRealm(); + } + public Map supportRealmMap() { //支持的授权规则 Map realms = new HashMap(8); @@ -123,6 +141,12 @@ public class ShiroAuthConfiguration { .saRealm(e9SaAuthRealm()).build(); realms.put(ImppEnumUtil.AUTH_LOGIN_STRATEGY.E9.getCode(), e9RoleRealmModel); + RoleRealmModel nameRoleRealmModel = RoleRealmModel.builder() + .userRealm(nameUserAuthRealm()) + .adminRealm(nameAdminAuthRealm()) + .saRealm(nameSaAuthRealm()).build(); + realms.put(ImppEnumUtil.AUTH_LOGIN_STRATEGY.NAME.getCode(), nameRoleRealmModel); + return realms; } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/strategy/name/NameAdminAuthRealm.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/strategy/name/NameAdminAuthRealm.java new file mode 100644 index 0000000..2276c16 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/strategy/name/NameAdminAuthRealm.java @@ -0,0 +1,55 @@ +package cn.estsh.i3plus.core.apiservice.auth.realm.strategy.name; + +import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginService; +import cn.estsh.i3plus.pojo.base.shirotoken.AdminToken; +import cn.estsh.i3plus.pojo.platform.bean.SessionUser; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.AuthenticationInfo; +import org.apache.shiro.authc.AuthenticationToken; +import org.apache.shiro.authc.SimpleAuthenticationInfo; +import org.apache.shiro.authz.AuthorizationInfo; +import org.apache.shiro.authz.SimpleAuthorizationInfo; +import org.apache.shiro.realm.AuthorizingRealm; +import org.apache.shiro.subject.PrincipalCollection; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description : 验证规则 + * @Reference : + * @Author : alwaysfrin + * @CreateDate : 2018-10-13 14:04 + * @Modify: + **/ +public class NameAdminAuthRealm extends AuthorizingRealm { + public static final Logger LOGGER = LoggerFactory.getLogger(NameAdminAuthRealm.class); + + @Autowired + private ISystemLoginService systemLoginService; + + public NameAdminAuthRealm() { + //添加支持的token + this.setAuthenticationTokenClass(AdminToken.class); + } + + //权限验证 + @Override + protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { + return new SimpleAuthorizationInfo(); + } + + //令牌确认 + @Override + protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { + try { + //管理员令牌 + SessionUser sessionUser = systemLoginService.queryCheckNameAdminLogin((AdminToken) authenticationToken); + LOGGER.info("管理员令牌验证:{}", sessionUser); + return new SimpleAuthenticationInfo(sessionUser, ((AdminToken) authenticationToken).getLoginName(), this.getName()); + } catch (Exception e) { + e.printStackTrace(); + throw new AuthenticationException(e.getMessage()); + } + } +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/strategy/name/NameSaAuthRealm.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/strategy/name/NameSaAuthRealm.java new file mode 100644 index 0000000..ad64399 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/strategy/name/NameSaAuthRealm.java @@ -0,0 +1,50 @@ +package cn.estsh.i3plus.core.apiservice.auth.realm.strategy.name; + +import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginService; +import cn.estsh.i3plus.pojo.base.shirotoken.SaAdminToken; +import cn.estsh.i3plus.pojo.platform.bean.SessionUser; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.AuthenticationInfo; +import org.apache.shiro.authc.AuthenticationToken; +import org.apache.shiro.authc.SimpleAuthenticationInfo; +import org.apache.shiro.authz.AuthorizationInfo; +import org.apache.shiro.authz.SimpleAuthorizationInfo; +import org.apache.shiro.realm.AuthorizingRealm; +import org.apache.shiro.subject.PrincipalCollection; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description : 验证规则 + * @Reference : + * @Author : alwaysfrin + * @CreateDate : 2018-10-13 14:04 + * @Modify: + **/ +public class NameSaAuthRealm extends AuthorizingRealm { + public static final Logger LOGGER = LoggerFactory.getLogger(NameSaAuthRealm.class); + + @Autowired + private ISystemLoginService systemLoginService; + + public NameSaAuthRealm() { + //添加支持的token + this.setAuthenticationTokenClass(SaAdminToken.class); + } + + //权限验证 + @Override + protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { + return new SimpleAuthorizationInfo(); + } + + //令牌确认 + @Override + protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { + //管理员令牌 + SessionUser sessionUser = systemLoginService.queryCheckNameSaAdminLogin((SaAdminToken) authenticationToken); + LOGGER.info("超级管理员令牌验证:{}", sessionUser); + return new SimpleAuthenticationInfo(sessionUser, ((SaAdminToken) authenticationToken).getLoginName(), this.getName()); + } +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/strategy/name/NameUserAuthRealm.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/strategy/name/NameUserAuthRealm.java new file mode 100644 index 0000000..7d8b905 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/strategy/name/NameUserAuthRealm.java @@ -0,0 +1,55 @@ +package cn.estsh.i3plus.core.apiservice.auth.realm.strategy.name; + +import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginService; +import cn.estsh.i3plus.pojo.base.shirotoken.UserToken; +import cn.estsh.i3plus.pojo.platform.bean.SessionUser; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.AuthenticationInfo; +import org.apache.shiro.authc.AuthenticationToken; +import org.apache.shiro.authc.SimpleAuthenticationInfo; +import org.apache.shiro.authz.AuthorizationInfo; +import org.apache.shiro.authz.SimpleAuthorizationInfo; +import org.apache.shiro.realm.AuthorizingRealm; +import org.apache.shiro.subject.PrincipalCollection; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description : 验证规则 + * @Reference :- + * @Author : alwaysfrin + * @CreateDate : 2018-10-13 14:04 + * @Modify: + **/ +public class NameUserAuthRealm extends AuthorizingRealm { + public static final Logger LOGGER = LoggerFactory.getLogger(NameUserAuthRealm.class); + + @Autowired + private ISystemLoginService systemLoginService; + + public NameUserAuthRealm() { + //添加支持的token + this.setAuthenticationTokenClass(UserToken.class); + } + + //权限验证 + @Override + protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { + return new SimpleAuthorizationInfo(); + } + + //令牌确认 + @Override + protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { + try { + //管理员令牌 + SessionUser sessionUser = systemLoginService.queryCheckNameUserLogin((UserToken) authenticationToken); + LOGGER.info("用户令牌验证:{}", sessionUser); + return new SimpleAuthenticationInfo(sessionUser, ((UserToken) authenticationToken).getLoginName(), this.getName()); + } catch (Exception e) { + e.printStackTrace(); + throw new AuthenticationException(e.getMessage()); + } + } +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java index 9ce20e5..a4fba8d 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java @@ -28,6 +28,7 @@ import cn.estsh.i3plus.pojo.model.platform.SysLoginModel; import cn.estsh.i3plus.pojo.model.platform.UserDetailModel; import cn.estsh.i3plus.pojo.model.platform.UserDetailPagerModel; import cn.estsh.i3plus.pojo.platform.bean.*; +import cn.estsh.i3plus.sdk.dingtalk.cn.estsh.i3plus.sdk.service.IDingTalkService; import cn.estsh.impp.framework.base.controller.CoreBaseController; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; @@ -41,6 +42,8 @@ import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.SpringContextsUtil; import cn.estsh.impp.framework.boot.util.ValidatorBean; import com.alibaba.fastjson.JSONObject; +import com.dingtalk.api.response.OapiUserGetResponse; +import com.dingtalk.api.response.OapiV2UserGetResponse; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; import io.swagger.annotations.Api; @@ -152,6 +155,9 @@ public class WhiteController extends CoreBaseController { @Autowired private RabbitTemplate rabbitTemplate; + @Autowired + private IDingTalkService dingTalkService; + private Cache unsavedLocaleResSwitch = CacheBuilder.newBuilder() .maximumSize(1) .expireAfterWrite(1, TimeUnit.MINUTES) @@ -293,6 +299,54 @@ public class WhiteController extends CoreBaseController { return Optional.ofNullable(data); } + @GetMapping(value = "/auth/dingtalk/login") + @ApiOperation(value = "登录", notes = "登录") + public ResultBean loginByPhoneNumber(HttpServletRequest request, String dingTalkTmpAuthCode, + @RequestParam(required = false) String languageCode, + @RequestParam(required = false) String deviceId) { + SysLoginModel loginModel = SysLoginModel.builder() + .dingTalkTmpAuthCode(dingTalkTmpAuthCode) + .languageCode(languageCode) + .deviceId(deviceId) + .loginStrategy(ImppEnumUtil.AUTH_LOGIN_STRATEGY.NAME.getCode()).build(); + + String dingTalkUrl = RedisCacheTool.getSysConfigStrVal(PlatformConstWords.DINGTALK_URL); + String dingTalkAppKey = RedisCacheTool.getSysConfigStrVal(PlatformConstWords.DINGTALK_APP_KEY); + String dingTalkAppSecret = RedisCacheTool.getSysConfigStrVal(PlatformConstWords.DINGTALK_APP_SECRET); + String dingTalkWhiteList = RedisCacheTool.getSysConfigStrVal(PlatformConstWords.DINGTALK_WHITE_LIST); + + if (StringUtils.isEmpty(dingTalkUrl) || + StringUtils.isEmpty(dingTalkAppKey) || + StringUtils.isEmpty(dingTalkAppSecret) || + StringUtils.isEmpty(dingTalkWhiteList)) { + return ResultBean.fail("访问钉钉的系统参数缺失,请在平台的系统参数中进行配置"); + } + + Optional userInfo = + dingTalkService.getUserInfo(dingTalkUrl, dingTalkAppKey, dingTalkAppSecret, loginModel.getDingTalkTmpAuthCode()); + if (userInfo.isPresent()) { + String mobile = userInfo.get().getResult().getMobile(); + if (StringUtils.isEmpty(mobile)) { + return ResultBean.fail("用户并未在钉钉中设置手机号 或 钉钉接口权限不足无法获取到手机号"); + } + if (!Arrays.asList(dingTalkWhiteList.split(",")).contains(mobile)) { + return ResultBean.fail("对指定手机号允许,权限不足,请联系管理员"); + } + SysUser sysUserByPhone = userService.getSysUserByPhone(mobile); + if (sysUserByPhone == null) { + return ResultBean.fail("未根据用户手机在平台中找到相应记录 钉钉获取的手机号为" + mobile); + } + loginModel.setLoginName(sysUserByPhone.getUserLoginName()); + loginModel.setPhoneNumber(mobile); + } else { + return ResultBean.fail("获取钉钉用户信息失败"); + } + String beanName = ImppEnumUtil.AUTH_LOGIN_STRATEGY.codeOfStrategyName(loginModel.getLoginStrategy()); + ISystemLoginStrategyService loginStrategyService = (ISystemLoginStrategyService) SpringContextsUtil.getBean(beanName); + + return loginByStrategy(request, loginModel, loginStrategyService.login()); + } + @GetMapping(value = "/auth/login") @ApiOperation(value = "登录", notes = "登录") public ResultBean login(HttpServletRequest request, String loginName, String loginPwd, diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemLoginService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemLoginService.java index af43f3a..639f004 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemLoginService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemLoginService.java @@ -73,7 +73,7 @@ public class SystemLoginService implements ISystemLoginService { } public static void main(String[] args) { - System.out.println(1+2+"a"); + System.out.println(1 + 2 + "a"); } @Override @@ -138,6 +138,29 @@ public class SystemLoginService implements ISystemLoginService { } @Override + public SessionUser queryCheckNameUserLogin(UserToken userToken) { + //验证用户 + SysUser user = getUserLoginInfo(userToken.getLoginName()); + LOGGER.info("【验证用户checkUserLogin】{}", user); + //用户单地登录 + return packSessionUser(user, CommonEnumUtil.USER_TYPE.USER.getCode(), userToken.getLanguageCode()); + } + + @Override + public SessionUser queryCheckNameAdminLogin(AdminToken adminToken) { + //验证用户 + SysUser user = getUserLoginInfo(adminToken.getLoginName()); + //未抛异常,封装用户 + return packSessionUser(user, CommonEnumUtil.USER_TYPE.ADMIN.getCode(), adminToken.getLanguageCode()); + } + + @Override + public SessionUser queryCheckNameSaAdminLogin(SaAdminToken saAdminToken) { + SysUser user = getUserLoginInfo(saAdminToken.getLoginName()); + return packSessionUser(user, CommonEnumUtil.USER_TYPE.SA.getCode(), saAdminToken.getLanguageCode()); + } + + @Override @ApiOperation(value = "登录密码错误", notes = "登录密码错误记录错误次数功能") public Integer doLoginPasswordError(String loginName, String sessionId) { SysUser user = sysUserRDao.getByProperty(new String[]{"userLoginName", "isValid"}, diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/login/strategy/NameLoginStrategy.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/login/strategy/NameLoginStrategy.java new file mode 100644 index 0000000..c78ce6e --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/login/strategy/NameLoginStrategy.java @@ -0,0 +1,92 @@ +package cn.estsh.i3plus.core.apiservice.serviceimpl.base.login.strategy; + +import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginService; +import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginStrategyService; +import cn.estsh.i3plus.core.api.iservice.busi.ILicenseClickService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService; +import cn.estsh.i3plus.platform.common.tool.ServletRequestTool; +import cn.estsh.i3plus.platform.common.util.CommonConstWords; +import cn.estsh.i3plus.platform.common.util.PlatformConstWords; +import cn.estsh.i3plus.pojo.base.bean.BaseThreadLocal; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; +import cn.estsh.i3plus.pojo.model.platform.SysLoginModel; +import cn.estsh.i3plus.pojo.platform.bean.SessionUser; +import cn.estsh.impp.framework.boot.auth.AuthUtil; +import cn.estsh.impp.framework.boot.util.ImppRedis; +import cn.estsh.impp.framework.boot.util.RedisCacheTool; +import cn.estsh.impp.framework.boot.util.ResultBean; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; +import java.util.function.BiFunction; + +import static cn.estsh.i3plus.platform.common.util.CommonConstWords.DEFAULT_LANGUAGE; + +/** + * @author Wynne.Lu + * @date 2021/1/18 上午10:53 + * @desc + */ +@Lazy +@Slf4j +@Service +public class NameLoginStrategy implements ISystemLoginStrategyService { + + @Resource(name = "redisCore") + protected ImppRedis redisCore; + + @Autowired + private ILicenseClickService licenseClickService; + + @Autowired + private ISysUserService userService; + + @Autowired + private ISystemLoginService loginService; + + @Override + public BiFunction login() { + return (request, loginModel) -> { + licenseClickService.checkLicenseNumberLogin(); + + // TODO 后期移除,暂时用于避免自动登录后前台没有正确的传输组织代码信息 + if ("null".equals(loginModel.getLanguageCode())|| StringUtils.isEmpty(loginModel.getLanguageCode())) { + loginModel.setLanguageCode(DEFAULT_LANGUAGE); + } + + // 设置语言代码 + BaseThreadLocal.setData(BaseThreadLocal.LANGUAGE_CODE, loginModel.getLanguageCode()); + BaseThreadLocal.setData(PlatformConstWords.AUTH_LOGIN_STRATEGY, ImppEnumUtil.AUTH_LOGIN_STRATEGY.NAME.getCode()); + + int sessionMode = RedisCacheTool.getSysConfigIntVal(CommonConstWords.CONFIG_SESSION_MODE, CommonConstWords.CONFIG_SESSION_MODE_DEFAULT); + if (sessionMode != CommonEnumUtil.SESSION_MODE.SEIZE.getValue()) { + AuthUtil.logout(); + } + + SessionUser user = userService.loginUser( + loginModel.getLoginName().trim(), + loginModel.getLoginName().trim(), + loginModel.getLanguageCode(), + loginService.getLoginPlatform(request).getValue(), + loginModel.getDeviceId() + ); + + String redisKey = CommonConstWords.USER_LOGIN_ERROR + "_" + user.getUser().getId(); + redisCore.deleteKey(redisKey); + + ResultBean result = new ResultBean(true, AuthUtil.getSession().getId().toString(), AuthUtil.getSessionUser()); + result.setUrl("/"); + + AuthUtil.setOrganize(user.getUser().getOrganize()); + + return result; + }; + } +} diff --git a/modules/i3plus-core-apiservice/src/main/resources/application.properties b/modules/i3plus-core-apiservice/src/main/resources/application.properties index 229a7b5..5c57413 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/application.properties +++ b/modules/i3plus-core-apiservice/src/main/resources/application.properties @@ -1,5 +1,5 @@ #\u4F7F\u7528\u914D\u7F6E -spring.profiles.active=dev +spring.profiles.active=test #\u9879\u76EE\u63CF\u8FF0\u4FE1\u606F\uFF08swagger\u4E2D\u663E\u5F0F\uFF09\uFF0C\u4E2D\u6587\u4F7F\u7528uncode\u8F6C\u7801 desc.application.name=\u6838\u5FC3\u7BA1\u7406\u540E\u53F0 diff --git a/pom.xml b/pom.xml index 66fac15..aee75c4 100644 --- a/pom.xml +++ b/pom.xml @@ -129,6 +129,12 @@ i3plus.sdk + i3plus-sdk-dingtalk + ${project.version} + + + + i3plus.sdk i3plus-sdk-wechat ${project.version} @@ -189,7 +195,7 @@ mysql mysql-connector-java - 5.1.39 + 5.1.49 From e15e55aedbaf2e0b3a3e1f1e5710afb0d9861ebf Mon Sep 17 00:00:00 2001 From: wynne1005 Date: Tue, 11 May 2021 15:38:19 +0800 Subject: [PATCH 10/11] =?UTF-8?q?=E6=9B=B4=E6=8D=A2=E9=92=89=E9=92=89jar?= =?UTF-8?q?=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/i3plus-core-apiservice/pom.xml | 16 ++++++++++++++++ .../core/apiservice/controller/base/WhiteController.java | 1 - 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/modules/i3plus-core-apiservice/pom.xml b/modules/i3plus-core-apiservice/pom.xml index 6f40464..e13cdfd 100644 --- a/modules/i3plus-core-apiservice/pom.xml +++ b/modules/i3plus-core-apiservice/pom.xml @@ -91,6 +91,13 @@ i3plus.sdk i3plus-sdk-dingtalk + + + + + + + i3plus.sdk @@ -343,4 +350,13 @@ + + + public + + http://mvn.estsh.com/repository/maven-public/ + + + + \ No newline at end of file diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java index a4fba8d..32f7e8b 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java @@ -42,7 +42,6 @@ import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.SpringContextsUtil; import cn.estsh.impp.framework.boot.util.ValidatorBean; import com.alibaba.fastjson.JSONObject; -import com.dingtalk.api.response.OapiUserGetResponse; import com.dingtalk.api.response.OapiV2UserGetResponse; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; From 3f57a0b48dcf6c76446c658af8fc92593e37864d Mon Sep 17 00:00:00 2001 From: wynne1005 Date: Tue, 11 May 2021 16:21:19 +0800 Subject: [PATCH 11/11] =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=B8=8D=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E7=9A=84pom?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/i3plus-core-apiservice/pom.xml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/modules/i3plus-core-apiservice/pom.xml b/modules/i3plus-core-apiservice/pom.xml index e13cdfd..9578fe9 100644 --- a/modules/i3plus-core-apiservice/pom.xml +++ b/modules/i3plus-core-apiservice/pom.xml @@ -91,13 +91,6 @@ i3plus.sdk i3plus-sdk-dingtalk - - - - - - - i3plus.sdk