From 82a410d9ec7a5d15eed27e9990cff371feab43a1 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期一, 27 三月 2023 18:25:38 +0800 Subject: [PATCH] 新增编码规则服务 --- Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java | 60 ++++++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 44 insertions(+), 16 deletions(-) diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java index 5138b90..96f2490 100644 --- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java +++ b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java @@ -21,7 +21,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import lombok.AllArgsConstructor; +import lombok.RequiredArgsConstructor; import org.springblade.common.constant.CommonConstant; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; @@ -50,6 +50,7 @@ import org.springblade.system.user.service.IUserService; import org.springblade.system.user.vo.UserVO; import org.springblade.system.user.wrapper.UserWrapper; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.DigestUtils; @@ -64,7 +65,7 @@ * @author Chill */ @Service -@AllArgsConstructor +@RequiredArgsConstructor public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implements IUserService { private static final String GUEST_NAME = "guest"; @@ -72,6 +73,10 @@ private final IUserOauthService userOauthService; private final ISysClient sysClient; private final BladeTenantProperties tenantProperties; + //鎷垮埌閰嶇疆鐨勮秴绠d + @Value("${user-info.id}") + private String adminUserId; + @Override @Transactional(rollbackFor = Exception.class) @@ -293,7 +298,6 @@ @Override public boolean updatePassword(Long userId, String oldPassword, String newPassword, String newPassword1) { - String hex = DigestUtil.hex(DigestUtils.md5DigestAsHex((newPassword1).getBytes())); User user = getById(userId); if (!newPassword.equals(newPassword1)) { throw new ServiceException("璇疯緭鍏ユ纭殑纭瀵嗙爜!"); @@ -303,19 +307,38 @@ } //鑾峰彇鐢ㄦ埛閲囩敤鐨勫瘑鐮佺瓥鐣� Strategy strategy = sysClient.getByUserId(userId).getData(); - String resException = "瀵嗙爜涓繀椤诲惈鏈夈��"+strategy.getCombinationIds()+"銆戜腑鐨勩��"+strategy.getRequiredType()+"銆戠瀵嗙爜缁勫悎鏂瑰紡锛屼笖瀵嗙爜闀垮害蹇呴』鍦ㄣ��"+strategy.getMinPwdLen()+"-"+strategy.getMaxPwdLen()+"銆戣寖鍥村唴"; //瀵嗙爜闀垮害鏍¢獙 if(newPassword1.length() < strategy.getMinPwdLen() || newPassword1.length() > strategy.getMaxPwdLen()){ + throw new ServiceException("瀵嗙爜涓繀椤诲惈鏈夈��"+strategy.getCombinationNames()+"銆戜腑鐨勩��"+strategy.getRequiredType()+"銆戠瀵嗙爜缁勫悎鏂瑰紡锛屼笖瀵嗙爜闀垮害蹇呴』鍦ㄣ��"+strategy.getMinPwdLen()+"-"+strategy.getMaxPwdLen()+"銆戣寖鍥村唴"); + } + List<String> regexs = sysClient.getRegexByList(Arrays.asList(strategy.getCombinationIds().split(","))).getData(); + //鍒ゆ柇鏄惁婊¤冻缁勫悎鏂瑰紡涓殑蹇呭~绉嶇被鏁� + int reqType = 0; + for (int i = 0; i < regexs.size(); i++) { + if(reqType>=strategy.getRequiredType()){ + break; + } + if(!Func.isEmpty(RegexUtil.findResult(regexs.get(i),newPassword1))){ + reqType++; + } + } + String resException = "瀵嗙爜涓繀椤诲惈鏈夈��"+strategy.getCombinationNames()+"銆戜腑鐨勩��"+strategy.getRequiredType()+"銆戠绫诲瀷锛岃閲嶆柊杈撳叆瀵嗙爜锛�"; + if(reqType<strategy.getRequiredType()){ throw new ServiceException(resException); } - //鏌ヨ瀵嗙爜绛栫暐鍙栧�� + // 鏄惁灞炰簬缁勫悎鏂瑰紡涓殑绫诲瀷 String regex = sysClient.getRegex(Arrays.asList(strategy.getCombinationIds().split(","))).getData(); - System.out.println("===============regex================"+regex); - regex = "^"+regex+"$"; - String result = RegexUtil.findResult(regex, newPassword); - System.out.println(result); - return this.update(Wrappers.<User>update().lambda().set(User::getPassword, DigestUtil.hex(DigestUtils.md5DigestAsHex((newPassword1).getBytes()))).eq(User::getId, userId)); - //return true; + regex = "^"+regex+"{"+strategy.getRequiredType()+",}$"; + boolean result = RegexUtil.find(regex, newPassword1); + if(!result){ + throw new ServiceException(resException); + } + //淇敼瀵嗙爜鍚屾椂锛屾敼鍙樼敤鎴蜂俊鎭腑鐨勫瘑鐮佷慨鏀圭姸鎬佸瓧娈�,瀵嗙爜淇敼鏃堕棿 + return this.update(Wrappers.<User>update().lambda() + .set(User::getPassword, DigestUtil.hex(DigestUtils.md5DigestAsHex((newPassword1).getBytes()))) + .set(User::getStrategyUpdateStatus,CommonConstant.TOP_PARENT_ID) + .set(User::getPwdUpdateTime,new Date()) + .eq(User::getId, userId)); } @Override @@ -454,6 +477,10 @@ @Override public Long checkRenAndExpr(Long userId) { + //瓒呯骇绠$悊鍛樼洿鎺ヨ繑鍥炰笉闇�瑕佹彁閱掑瘑鐮佷慨鏀� + if(adminUserId.equals(userId)){ + return 0L; + } //鑾峰彇鍒板瘑鐮佷慨鏀规椂闂� Date pwdUpdateTime = this.getOne(Wrappers.<User>query().eq("ID", userId)).getPwdUpdateTime(); Long pwdupdateday = 0L; @@ -461,13 +488,9 @@ pwdupdateday = dateToDay(pwdUpdateTime); } Strategy strategy = sysClient.getByUserId(userId).getData(); - System.out.println("褰撳墠鏃堕棿=================="+dateToDay(new Date())); - System.out.println("瀵嗙爜淇敼鏃堕棿======================"+pwdupdateday); - System.out.println("鎻愰啋鏃堕棿======================"+strategy.getReminderTime()); - System.out.println("杩囨湡鏃堕棿======================="+strategy.getExpirationTime()); //鏄惁鎻愰啋閫氳繃鏈�鍚庝竴娆′慨鏀瑰瘑鐮佺殑鏃堕棿鍔犱笂杩囨湡鏃堕棿鍑忓幓褰撳墠鏃堕棿锛屽鏋滃皬浜庤繃鏈熸彁閱掓椂闂村氨杩涜鎻愰啋锛屽鏋�<=0灏辨彁閱掑繀椤讳慨鏀瑰瘑鐮� long reminder = pwdupdateday+strategy.getExpirationTime()-dateToDay(pwdUpdateTime); - //蹇呴』鍘讳慨鏀瑰瘑鐮� + //鎻愰啋鐢ㄦ埛蹇呴』淇敼瀵嗙爜 if(reminder<=0){ return -1L; } @@ -480,6 +503,11 @@ return 0L; } + /** + * 鏃堕棿鏍煎紡杞ぉ + * @param date + * @return + */ private Long dateToDay(Date date){ long time = date.getTime(); return time/(1000 * 60 * 60 * 24); -- Gitblit v1.9.3