From 7488b091bc08d187fbd30bf11c33d2e0745b6b2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Sun, 6 Jul 2025 10:50:23 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E8=A7=92=E8=89=B2=E6=98=AF=E5=90=A6=E6=9C=89=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/auth/form/PasswordLoginBody.java | 1 + .../org/dromara/auth/form/RegisterBody.java | 1 + .../main/resources/i18n/messages.properties | 1 + .../resources/i18n/messages_en_US.properties | 1 + .../resources/i18n/messages_zh_CN.properties | 1 + .../dromara/system/domain/bo/SysTenantBo.java | 1 + .../system/service/ISysRoleService.java | 7 +++++++ .../service/impl/SysRoleServiceImpl.java | 21 +++++++++++++------ 8 files changed, 28 insertions(+), 6 deletions(-) diff --git a/ruoyi-auth/src/main/java/org/dromara/auth/form/PasswordLoginBody.java b/ruoyi-auth/src/main/java/org/dromara/auth/form/PasswordLoginBody.java index 31086ab4..44777b02 100644 --- a/ruoyi-auth/src/main/java/org/dromara/auth/form/PasswordLoginBody.java +++ b/ruoyi-auth/src/main/java/org/dromara/auth/form/PasswordLoginBody.java @@ -27,6 +27,7 @@ public class PasswordLoginBody extends LoginBody { */ @NotBlank(message = "{user.password.not.blank}") @Length(min = 5, max = 30, message = "{user.password.length.valid}") +// @Pattern(regexp = RegexConstants.PASSWORD, message = "{user.password.format.valid}") private String password; } diff --git a/ruoyi-auth/src/main/java/org/dromara/auth/form/RegisterBody.java b/ruoyi-auth/src/main/java/org/dromara/auth/form/RegisterBody.java index 8b0a0474..65ee4354 100644 --- a/ruoyi-auth/src/main/java/org/dromara/auth/form/RegisterBody.java +++ b/ruoyi-auth/src/main/java/org/dromara/auth/form/RegisterBody.java @@ -27,6 +27,7 @@ public class RegisterBody extends LoginBody { */ @NotBlank(message = "{user.password.not.blank}") @Length(min = 5, max = 30, message = "{user.password.length.valid}") +// @Pattern(regexp = RegexConstants.PASSWORD, message = "{user.password.format.valid}") private String password; /** diff --git a/ruoyi-common/ruoyi-common-core/src/main/resources/i18n/messages.properties b/ruoyi-common/ruoyi-common-core/src/main/resources/i18n/messages.properties index cce11c85..f2777f77 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/resources/i18n/messages.properties +++ b/ruoyi-common/ruoyi-common-core/src/main/resources/i18n/messages.properties @@ -17,6 +17,7 @@ user.username.length.valid=账户长度必须在{min}到{max}个字符之间 user.password.not.blank=用户密码不能为空 user.password.length.valid=用户密码长度必须在{min}到{max}个字符之间 user.password.not.valid=* 5-50个字符 +user.password.format.valid=密码必须包含大写字母、小写字母、数字和特殊字符 user.email.not.valid=邮箱格式错误 user.email.not.blank=邮箱不能为空 user.phonenumber.not.blank=用户手机号不能为空 diff --git a/ruoyi-common/ruoyi-common-core/src/main/resources/i18n/messages_en_US.properties b/ruoyi-common/ruoyi-common-core/src/main/resources/i18n/messages_en_US.properties index f948c4ab..306a48f6 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/resources/i18n/messages_en_US.properties +++ b/ruoyi-common/ruoyi-common-core/src/main/resources/i18n/messages_en_US.properties @@ -17,6 +17,7 @@ user.username.length.valid=Account length must be between {min} and {max} charac user.password.not.blank=Password cannot be empty user.password.length.valid=Password length must be between {min} and {max} characters user.password.not.valid=* 5-50 characters +user.password.format.valid=Password must contain uppercase, lowercase, digit, and special character user.email.not.valid=Mailbox format error user.email.not.blank=Mailbox cannot be blank user.phonenumber.not.blank=Phone number cannot be blank diff --git a/ruoyi-common/ruoyi-common-core/src/main/resources/i18n/messages_zh_CN.properties b/ruoyi-common/ruoyi-common-core/src/main/resources/i18n/messages_zh_CN.properties index cce11c85..f2777f77 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/resources/i18n/messages_zh_CN.properties +++ b/ruoyi-common/ruoyi-common-core/src/main/resources/i18n/messages_zh_CN.properties @@ -17,6 +17,7 @@ user.username.length.valid=账户长度必须在{min}到{max}个字符之间 user.password.not.blank=用户密码不能为空 user.password.length.valid=用户密码长度必须在{min}到{max}个字符之间 user.password.not.valid=* 5-50个字符 +user.password.format.valid=密码必须包含大写字母、小写字母、数字和特殊字符 user.email.not.valid=邮箱格式错误 user.email.not.blank=邮箱不能为空 user.phonenumber.not.blank=用户手机号不能为空 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantBo.java index d98b3a87..49f80e89 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantBo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantBo.java @@ -62,6 +62,7 @@ public class SysTenantBo extends BaseEntity { * 密码(创建系统用户) */ @NotBlank(message = "密码不能为空", groups = { AddGroup.class }) +// @Pattern(regexp = RegexConstants.PASSWORD, message = "{user.password.format.valid}", groups = { AddGroup.class }) private String password; /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java index 2abdb971..db633c81 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java @@ -118,6 +118,13 @@ public interface ISysRoleService { */ void checkRoleDataScope(Long roleId); + /** + * 校验角色是否有数据权限 + * + * @param roleIds 角色ID列表(支持传单个ID) + */ + void checkRoleDataScope(List roleIds); + /** * 通过角色ID查询角色使用数量 * diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java index 89929c36..8fa65a65 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java @@ -253,14 +253,23 @@ public class SysRoleServiceImpl implements ISysRoleService { if (ObjectUtil.isNull(roleId)) { return; } - if (LoginHelper.isSuperAdmin()) { + this.checkRoleDataScope(Collections.singletonList(roleId)); + } + + /** + * 校验角色是否有数据权限 + * + * @param roleIds 角色ID列表(支持传单个ID) + */ + @Override + public void checkRoleDataScope(List roleIds) { + if (CollUtil.isEmpty(roleIds) || LoginHelper.isSuperAdmin()) { return; } - List roles = this.selectRoleList(new SysRoleBo(roleId)); - if (CollUtil.isEmpty(roles)) { - throw new ServiceException("没有权限访问角色数据!"); + long count = baseMapper.selectRoleCount(roleIds); + if (count != roleIds.size()) { + throw new ServiceException("没有权限访问部分角色数据!"); } - } /** @@ -417,10 +426,10 @@ public class SysRoleServiceImpl implements ISysRoleService { @Override @Transactional(rollbackFor = Exception.class) public int deleteRoleByIds(List roleIds) { + checkRoleDataScope(roleIds); List roles = baseMapper.selectByIds(roleIds); for (SysRole role : roles) { checkRoleAllowed(BeanUtil.toBean(role, SysRoleBo.class)); - checkRoleDataScope(role.getRoleId()); if (countUserRoleByRoleId(role.getRoleId()) > 0) { throw new ServiceException(String.format("%1$s已分配,不能删除!", role.getRoleName())); }