refactor(core): 支持用户密码过期

commit21.4.7
yun-zuoyi
wynne1005 4 years ago
parent 9f317beec3
commit 480fadb6b5

@ -4,8 +4,6 @@ import cn.estsh.i3plus.pojo.platform.bean.SysUserPassword;
import cn.estsh.impp.framework.base.service.ICrudService; import cn.estsh.impp.framework.base.service.ICrudService;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import java.util.List;
/** /**
* @Description : * @Description :
* @Reference : * @Reference :
@ -24,6 +22,9 @@ public interface ISysUserPasswordService extends ICrudService<SysUserPassword> {
@ApiOperation(value = "修改用户密码") @ApiOperation(value = "修改用户密码")
void updatePassword(Long userId,String password,String newPwd); void updatePassword(Long userId,String password,String newPwd);
@ApiOperation(value = "修改用户密码")
void updatePassword(String loginName,String password,String newPwd);
@ApiOperation(value = "重置用户密码") @ApiOperation(value = "重置用户密码")
void updatePassword(Long userId,String password); void updatePassword(Long userId,String password);

@ -47,6 +47,7 @@ import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.CredentialsException; import org.apache.shiro.authc.CredentialsException;
import org.apache.shiro.authc.ExpiredCredentialsException;
import org.apache.shiro.authc.IncorrectCredentialsException; import org.apache.shiro.authc.IncorrectCredentialsException;
import org.apache.shiro.authc.LockedAccountException; import org.apache.shiro.authc.LockedAccountException;
import org.apache.shiro.authc.UnknownAccountException; import org.apache.shiro.authc.UnknownAccountException;
@ -316,8 +317,10 @@ public class WhiteController extends CoreBaseController {
} catch (IncorrectCredentialsException e) { } catch (IncorrectCredentialsException e) {
result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_PASSWORD); result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_PASSWORD);
userPasswordUtil.checkLoginErrorNumber(loginModel.getLoginName(), result, e); userPasswordUtil.checkLoginErrorNumber(loginModel.getLoginName(), result, e);
userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.WRONG_PASSWORD; 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) { } catch (CredentialsException e) {
// 用户名或密码错误 // 用户名或密码错误
result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_NAME); result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_NAME);

@ -89,6 +89,7 @@ public class PersonnelController extends CoreBaseController {
/** /**
* *
*
* @param model * @param model
* @return * @return
*/ */
@ -147,6 +148,7 @@ public class PersonnelController extends CoreBaseController {
user.setOrganizeNameRdd(userOrganize.getName()); user.setOrganizeNameRdd(userOrganize.getName());
user.setOrganizeCode(userOrganize.getOrganizeCode()); user.setOrganizeCode(userOrganize.getOrganizeCode());
user.setUserInfoId(info.getId()); user.setUserInfoId(info.getId());
user.setUserPasswordLastModifyTime(TimeTool.getNowTime(true));
refreshSysUserPassword(user); refreshSysUserPassword(user);
personnelService.saveSysUser(user); personnelService.saveSysUser(user);
@ -167,6 +169,7 @@ public class PersonnelController extends CoreBaseController {
/** /**
* *
*
* @param model * @param model
* @return * @return
*/ */
@ -256,6 +259,7 @@ public class PersonnelController extends CoreBaseController {
/** /**
* *
*
* @param model * @param model
* @return * @return
*/ */
@ -290,6 +294,7 @@ public class PersonnelController extends CoreBaseController {
/** /**
* *
*
* @param id id * @param id id
* @return * @return
*/ */
@ -330,6 +335,7 @@ public class PersonnelController extends CoreBaseController {
/** /**
* *
*
* @param id id * @param id id
* @return * @return
*/ */
@ -359,6 +365,7 @@ public class PersonnelController extends CoreBaseController {
/** /**
* *
*
* @param id id * @param id id
* @return * @return
*/ */
@ -389,6 +396,7 @@ public class PersonnelController extends CoreBaseController {
/** /**
* id * id
*
* @param ids id * @param ids id
* @return * @return
*/ */
@ -434,6 +442,7 @@ public class PersonnelController extends CoreBaseController {
/** /**
* *
*
* @param id id * @param id id
* @return * @return
*/ */
@ -464,6 +473,7 @@ public class PersonnelController extends CoreBaseController {
/** /**
* id * id
*
* @param ids ids * @param ids ids
* @return * @return
*/ */
@ -509,6 +519,7 @@ public class PersonnelController extends CoreBaseController {
/** /**
* *
*
* @param model * @param model
* @return * @return
*/ */
@ -521,7 +532,7 @@ public class PersonnelController extends CoreBaseController {
List<SysRefUserDepartment> refs = personnelService.querySysRefUserDepartmentByUserDetailModel(model); List<SysRefUserDepartment> refs = personnelService.querySysRefUserDepartmentByUserDetailModel(model);
if (refs != null && refs.size() > 0) { if (refs != null && refs.size() > 0) {
for (SysRefUserDepartment ref : refs) { for (SysRefUserDepartment ref : refs) {
if(!idList.contains(ref.getUserId())){ if (!idList.contains(ref.getUserId())) {
idList.add(ref.getUserId()); idList.add(ref.getUserId());
} }
} }
@ -538,6 +549,7 @@ public class PersonnelController extends CoreBaseController {
/** /**
* *
*
* @param model * @param model
* @return * @return
*/ */
@ -564,6 +576,7 @@ public class PersonnelController extends CoreBaseController {
/** /**
* *
*
* @param model * @param model
* @return * @return
*/ */
@ -582,6 +595,7 @@ public class PersonnelController extends CoreBaseController {
/** /**
* *
*
* @param model * @param model
* @return * @return
*/ */
@ -600,6 +614,7 @@ public class PersonnelController extends CoreBaseController {
/** /**
* *
*
* @param model * @param model
* @return * @return
*/ */
@ -618,11 +633,12 @@ public class PersonnelController extends CoreBaseController {
/** /**
* *
*
* @return * @return
*/ */
@GetMapping(value = "/user/get-organize-list") @GetMapping(value = "/user/get-organize-list")
@ApiOperation(value = "获取账号信息", notes = "获取用户账号的所有组织信息") @ApiOperation(value = "获取账号信息", notes = "获取用户账号的所有组织信息")
public ResultBean getUserOrganizeList(){ public ResultBean getUserOrganizeList() {
try { try {
List<SysOrganize> list = AuthUtil.getSessionUser().getUser().getOrganizeList(); List<SysOrganize> list = AuthUtil.getSessionUser().getUser().getOrganizeList();
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(list); 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}") @PutMapping(value = "/user/session-organize/{id}")
@ApiOperation(value = "修改用户会话组织信息", notes = "修改用户会话组织信息") @ApiOperation(value = "修改用户会话组织信息", notes = "修改用户会话组织信息")
public ResultBean updateUserOrganizeList(@PathVariable("id") String idStr){ public ResultBean updateUserOrganizeList(@PathVariable("id") String idStr) {
try { try {
ValidatorBean.checkIsNumber(idStr, "id为空"); ValidatorBean.checkIsNumber(idStr, "id为空");
List<SysOrganize> list = AuthUtil.getSessionUser().getUser().getOrganizeList(); List<SysOrganize> list = AuthUtil.getSessionUser().getUser().getOrganizeList();
Long id = Long.parseLong(idStr); Long id = Long.parseLong(idStr);
SysOrganize organize = null; SysOrganize organize = null;
for (SysOrganize org : list) { for (SysOrganize org : list) {
if(org.getId().equals(id)){ if (org.getId().equals(id)) {
organize = org; organize = org;
} }
} }
if(organize == null){ if (organize == null) {
throw ImppExceptionBuilder.newInstance() throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
@ -658,7 +674,7 @@ public class PersonnelController extends CoreBaseController {
// 会话工厂信息保存进Redis // 会话工厂信息保存进Redis
AuthUtil.setOrganize(organize); 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); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(organize);
} catch (ImppBusiException busExcep) { } catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep); return ResultBean.fail(busExcep);
@ -670,7 +686,7 @@ public class PersonnelController extends CoreBaseController {
/** /**
* *
* *
* @param model * @param model
* @param isCheckId * @param isCheckId
* @throws Exception * @throws Exception
*/ */
@ -717,7 +733,7 @@ public class PersonnelController extends CoreBaseController {
* *
* *
* @param model * @param model
* @param user * @param user
* @throws Exception * @throws Exception
*/ */
public void initUser(UserDetailModel model, SysUser user) throws Exception { public void initUser(UserDetailModel model, SysUser user) throws Exception {
@ -737,8 +753,8 @@ public class PersonnelController extends CoreBaseController {
/** /**
* *
* *
* @param user * @param user
* @param info * @param info
* @param model * @param model
*/ */
public void refreshRef(SysUser user, SysUserInfo info, UserDetailModel model) { public void refreshRef(SysUser user, SysUserInfo info, UserDetailModel model) {
@ -781,57 +797,60 @@ public class PersonnelController extends CoreBaseController {
/** /**
* code * code
*
* @param code * @param code
* @return * @return
*/ */
@GetMapping(value = "/organize/get-code") @GetMapping(value = "/organize/get-code")
@ApiOperation(value = "根据组织code查询对应的组织信息", notes = "根据组织code查询对应的组织信息") @ApiOperation(value = "根据组织code查询对应的组织信息", notes = "根据组织code查询对应的组织信息")
public ResultBean<SysOrganize> getSysOrganizeByCode(String code){ public ResultBean<SysOrganize> getSysOrganizeByCode(String code) {
try{ try {
SysOrganize org = new SysOrganize(); SysOrganize org = new SysOrganize();
org.setOrganizeCode(code); org.setOrganizeCode(code);
SysOrganize sysOrganize = organizeService.get(org); SysOrganize sysOrganize = organizeService.get(org);
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(sysOrganize); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(sysOrganize);
}catch(ImppBusiException busExcep){ } catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep); return ResultBean.fail(busExcep);
}catch(Exception e){ } catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e); return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} }
} }
/** /**
* *
*
* @return * @return
*/ */
@GetMapping(value = "/organize/list") @GetMapping(value = "/organize/list")
@ApiOperation(value = "查询所有组织信息", notes = "查询所有组织信息") @ApiOperation(value = "查询所有组织信息", notes = "查询所有组织信息")
public ResultBean<SysOrganize> findSysOrganizeList(){ public ResultBean<SysOrganize> findSysOrganizeList() {
try{ try {
List<SysOrganize> sysOrganize = organizeService.findAll(); List<SysOrganize> sysOrganize = organizeService.findAll();
return ResultBean.success("操作成功") return ResultBean.success("操作成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setResultList(sysOrganize); .setResultList(sysOrganize);
}catch(ImppBusiException busExcep){ } catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep); return ResultBean.fail(busExcep);
}catch(Exception e){ } catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e); return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} }
} }
/** /**
* *
*
* @return * @return
*/ */
@GetMapping(value = "/license") @GetMapping(value = "/license")
@ApiOperation(value = "获取授权信息") @ApiOperation(value = "获取授权信息")
public ResultBean<ImppLicense> getLicense(){ public ResultBean<ImppLicense> getLicense() {
try{ try {
return ResultBean.success("操作成功") return ResultBean.success("操作成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setResultObject(ImppLicenseTool.getLicense()); .setResultObject(ImppLicenseTool.getLicense());
}catch(ImppBusiException busExcep){ } catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep); return ResultBean.fail(busExcep);
}catch(Exception e){ } catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e); return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} }
} }

@ -1,8 +1,13 @@
package cn.estsh.i3plus.core.apiservice.controller.busi; package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.core.api.iservice.busi.*; import cn.estsh.i3plus.core.api.iservice.busi.ICoreMemTreeService;
import cn.estsh.i3plus.core.apiservice.util.SysUserPasswordUtil; 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.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.EncryptTool;
import cn.estsh.i3plus.platform.common.tool.StringTool; import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.tool.TimeTool; 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.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; 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.base.controller.CoreBaseController;
import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; 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.ResultBean;
import cn.estsh.impp.framework.boot.util.ValidatorBean; import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@ -27,7 +36,13 @@ import org.apache.commons.lang3.RandomStringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; 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.ArrayList;
import java.util.List; 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 * @return

@ -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.ISystemLoginService;
import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginStrategyService; 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.core.api.iservice.busi.ISysUserService;
import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.pojo.base.bean.BaseThreadLocal; import cn.estsh.i3plus.pojo.base.bean.BaseThreadLocal;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.model.platform.SysLoginModel; import cn.estsh.i3plus.pojo.model.platform.SysLoginModel;
import cn.estsh.i3plus.pojo.platform.bean.SessionUser; 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.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.ImppRedis;
import cn.estsh.impp.framework.boot.util.RedisCacheTool; import cn.estsh.impp.framework.boot.util.RedisCacheTool;
import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ResultBean;
import cn.estsh.impp.framework.boot.util.ValidatorBean; import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j; 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; 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 java.util.function.BiFunction;
import static cn.estsh.i3plus.platform.common.util.CommonConstWords.DEFAULT_LANGUAGE; import static cn.estsh.i3plus.platform.common.util.CommonConstWords.DEFAULT_LANGUAGE;
@ -37,9 +45,6 @@ public class DefaultLoginStrategy implements ISystemLoginStrategyService {
protected ImppRedis redisCore; protected ImppRedis redisCore;
@Autowired @Autowired
private ILicenseClickService licenseClickService;
@Autowired
private ISysUserService userService; private ISysUserService userService;
@Autowired @Autowired
@ -65,6 +70,9 @@ public class DefaultLoginStrategy implements ISystemLoginStrategyService {
if (sessionMode != CommonEnumUtil.SESSION_MODE.SEIZE.getValue()) { if (sessionMode != CommonEnumUtil.SESSION_MODE.SEIZE.getValue()) {
AuthUtil.logout(); AuthUtil.logout();
} }
// 已经对用户名和密码做过验证了
// 获取系统参数【密码过期时间】 进行密码有效时间判断
validatePasswordIsExpired(loginModel.getLoginName());
SessionUser user = userService.loginUser( SessionUser user = userService.loginUser(
loginModel.getLoginName().trim(), loginModel.getLoginName().trim(),
@ -84,4 +92,30 @@ public class DefaultLoginStrategy implements ISystemLoginStrategyService {
return result; 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("用户密码过期 请重新设置新密码");
}
}
}
}
}
} }

@ -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.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ValidatorBean; import cn.estsh.impp.framework.boot.util.ValidatorBean;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Primary; import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
/** /**
* @Description : * @Description :
* @Reference : * @Reference :
@ -68,6 +65,23 @@ public class SysUserSavePasswordService extends CrudService<SysUserPassword> imp
} }
@Override @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) { public void updatePassword(Long userId, String password) {
SysUser user = userService.getSysUserById(userId); SysUser user = userService.getSysUserById(userId);
ValidatorBean.checkNotNull(user,"不存在的用户信息"); ValidatorBean.checkNotNull(user,"不存在的用户信息");
@ -88,6 +102,7 @@ public class SysUserSavePasswordService extends CrudService<SysUserPassword> imp
SysUserPassword save = userPasswordRDao.save(pwd); SysUserPassword save = userPasswordRDao.save(pwd);
user.setUserLoginPasswordId(save.getId()); user.setUserLoginPasswordId(save.getId());
user.setUserPasswordLastModifyTime(TimeTool.getNowTime(true));
ConvertBean.serviceModelUpdate(user,AuthUtil.getSessionUser().getUserName()); ConvertBean.serviceModelUpdate(user,AuthUtil.getSessionUser().getUserName());
userService.updateSysUser(user); userService.updateSysUser(user);
} }

@ -1,9 +1,9 @@
package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.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.core.apiservice.util.SysUserPasswordUtil;
import cn.estsh.i3plus.platform.common.convert.ConvertBean; 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.EncryptTool;
import cn.estsh.i3plus.platform.common.tool.StringTool; import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.tool.TimeTool; 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.DdlPreparedPack;
import cn.estsh.i3plus.pojo.base.tool.HqlPack; import cn.estsh.i3plus.pojo.base.tool.HqlPack;
import cn.estsh.i3plus.pojo.platform.bean.*; 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.i3plus.pojo.platform.sqlpack.CoreHqlPack;
import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; 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.ImppRedis;
import cn.estsh.impp.framework.boot.util.RedisCacheTool; import cn.estsh.impp.framework.boot.util.RedisCacheTool;
import cn.estsh.impp.framework.boot.util.ValidatorBean; 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 org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; 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; import java.util.stream.Collectors;
@ -124,7 +136,6 @@ public class SysUserService implements ISysUserService {
BaseToken token = getToken(loginName, password, languageCode, loginPlatform); BaseToken token = getToken(loginName, password, languageCode, loginPlatform);
SessionUser sessionUser = AuthUtil.login(token); SessionUser sessionUser = AuthUtil.login(token);
SysUser user = this.getSysUserByLoginName(loginName); SysUser user = this.getSysUserByLoginName(loginName);
if (user == null) { if (user == null) {
throw new CredentialsException("用户不存在"); throw new CredentialsException("用户不存在");
} }

Loading…
Cancel
Save