diff options
| author | shizhendong <[email protected]> | 2024-05-13 16:04:29 +0800 |
|---|---|---|
| committer | shizhendong <[email protected]> | 2024-05-13 16:04:29 +0800 |
| commit | cce25703bf115966a9c9dfc232717e9208d93e4e (patch) | |
| tree | 898929d263541899278bbb19886995e4224d0c3b | |
| parent | 6cd17196999cb5fbb47b5eeebb03cd5ebcc476cb (diff) | |
fix: NEZ-3468 用户编辑页面修改 username 校验规则rel-24.01.21
4 files changed, 26 insertions, 46 deletions
diff --git a/nz-admin/src/main/java/com/nis/modules/sys/controller/SysUserController.java b/nz-admin/src/main/java/com/nis/modules/sys/controller/SysUserController.java index f2cf2574..cbd08be8 100644 --- a/nz-admin/src/main/java/com/nis/modules/sys/controller/SysUserController.java +++ b/nz-admin/src/main/java/com/nis/modules/sys/controller/SysUserController.java @@ -1,7 +1,6 @@ package com.nis.modules.sys.controller; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.nis.common.annotation.SysLog; import com.nis.common.exception.NZException; import com.nis.common.smartvalidate.ValidateUtils; @@ -166,29 +165,6 @@ public class SysUserController extends AbstractController { } /** - * 用户名称校验 - * @param params - * @return - */ - @RequestMapping(value = "nameCheck", method = RequestMethod.GET) - public R nameCheck(@RequestParam Map<String, Object> params) { - ValidateUtils.is(params.get("name")).notNull(); - //校验名称重复 - SysUserEntity queryParam = new SysUserEntity(); - Object object = params.get("id"); - if (object != null && !StringUtils.isEmpty(object.toString())) { - queryParam.setId(Long.valueOf((String)object)); - } - queryParam.setUsername((String)params.get("name")); - - if (sysUserService.checkName(queryParam)) { - throw new NZException(RCode.SYS_USER_DUPLICATENAME); - } else { - return R.ok(); - } - } - - /** * 用户权限查询接口 * @param request * @return diff --git a/nz-admin/src/main/java/com/nis/modules/sys/service/SysUserService.java b/nz-admin/src/main/java/com/nis/modules/sys/service/SysUserService.java index b3a39e23..a0d407ac 100644 --- a/nz-admin/src/main/java/com/nis/modules/sys/service/SysUserService.java +++ b/nz-admin/src/main/java/com/nis/modules/sys/service/SysUserService.java @@ -46,13 +46,6 @@ public interface SysUserService extends IService<SysUserEntity> { */ boolean updatePassword(Long userId, String password, String newPassword); - /** - * 校验用户名是否重复 - * @param queryParam - * @return - */ - boolean checkName(SysUserEntity queryParam); - void deleteUsers(String userIds); Map<String, Object> getUserPermissions(HttpServletRequest request); @@ -63,4 +56,7 @@ public interface SysUserService extends IService<SysUserEntity> { void checkPin(SysUserEntity user,boolean isLogin); void checkCacheRetry(SysUserEntity user); + + void validateUsername(String username); + } diff --git a/nz-admin/src/main/java/com/nis/modules/sys/service/impl/SysUserServiceImpl.java b/nz-admin/src/main/java/com/nis/modules/sys/service/impl/SysUserServiceImpl.java index bf0bd55c..4dfca324 100644 --- a/nz-admin/src/main/java/com/nis/modules/sys/service/impl/SysUserServiceImpl.java +++ b/nz-admin/src/main/java/com/nis/modules/sys/service/impl/SysUserServiceImpl.java @@ -43,6 +43,8 @@ import org.springframework.transaction.annotation.Transactional; import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.StreamSupport; @@ -149,6 +151,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserDao, SysUserEntity> i .and(user.getMobile()).maxLength(64) .and(status).notNull(RCode.SYS_USER_STATUS_ISNULL).and(user.getName()).notNull(RCode.SYS_USER_NAME_ISNULL).maxLength(64); + // 校验用户名 + this.validateUsername(user.getUsername()); + List<SysUserEntity> list = this.list(new QueryWrapper<SysUserEntity>().lambda().eq(SysUserEntity::getName, user.getName()).ne(ObjectUtil.isNotEmpty(user.getId()),SysUserEntity::getId, user.getId())); if(ObjectUtil.isNotEmpty(list)) { throw new NZException(RCode.SYS_USER_NAME_DUPLICATE); @@ -309,21 +314,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserDao, SysUserEntity> i } @Override - public boolean checkName(SysUserEntity user) { - List<SysUserEntity> list = this.list(new LambdaUpdateWrapper<SysUserEntity>() - .eq(ToolUtil.isNotEmpty(user.getUsername()), SysUserEntity::getUsername, user.getUsername()) - .eq(ToolUtil.isNotEmpty(user.getStatus()), SysUserEntity::getStatus, 1)); - boolean dumpFlag = true; //是否名称重复,true为重复 - - //当只有一个结果并且这个结果是自身时,或没有结果时,说明名称不重复 - if ((list == null || list.size() == 0) || - (list.size() == 1 && list.get(0).getId().longValue() == user.getId().longValue())) { - dumpFlag = false; - } - return dumpFlag; - } - - @Override @Transactional(rollbackFor = Exception.class) public void deleteUsers(String userIds) { ValidateUtils.is(userIds).notNull(RCode.SYS_USER_ID_ISNULL); @@ -561,4 +551,19 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserDao, SysUserEntity> i cache.put(key, "1", TimeUnit.MINUTES.toMillis(5)); } } + + @Override + public void validateUsername(String username) { + if (username.length() > 64 || username.length() < 1) { + log.info("[validateUsername] [Username length is invalid] [value: {}]", username); + throw new NZException(RCode.SYS_USER_USERNAME_LENGTH_INVALID); + } + // 判断用户名仅允许字母数字及英文标点符号 + final String pattern = "^[a-zA-Z0-9!@~\\-=`#\\$%^&\\*\\(\\)\\+\\{\\}\\[\\]\\\\|:;'\"<>,\\./\\?_]*$"; + final Pattern compole = Pattern.compile(pattern); + final Matcher m = compole.matcher(username); + if (!m.matches()) { + throw new NZException(RCode.SYS_USER_USERNAME_VALIDATION_FAILED); + } + } } diff --git a/nz-common/src/main/java/com/nis/common/utils/RCode.java b/nz-common/src/main/java/com/nis/common/utils/RCode.java index 03af998c..b371a1fc 100644 --- a/nz-common/src/main/java/com/nis/common/utils/RCode.java +++ b/nz-common/src/main/java/com/nis/common/utils/RCode.java @@ -615,6 +615,9 @@ public enum RCode { SYS_USER_QUERY_KEY_ISNULL(511050,"Query key can not be empty"), SYS_USER_QUERY_VALUE_ISNULL(511051,"Query value can not be empty"), SYS_USER_USERNAME_DUPLICATE(511052,"System user userName duplicate"), + SYS_USER_USERNAME_VALIDATION_FAILED(513053,"Only letters, numbers and symbols are allowed for username"), + SYS_USER_USERNAME_LENGTH_INVALID(513054, "Username length is invalid"), + AGENT_ID_ISNULL(521000, "Agent id can not be empty"), AGENT_DCID_ISNULL(521001, "Agent Dc id can not be empty"), |
