update 优化密码校验

This commit is contained in:
AprilWind
2025-07-04 19:18:42 +08:00
parent a7cddc8d40
commit 4f99487d24
9 changed files with 41 additions and 27 deletions

View File

@ -1,17 +1,17 @@
package org.dromara.system.domain.bo;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.system.domain.SysTenant;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.system.domain.SysTenant;
import java.util.Date;
import org.dromara.common.mybatis.core.domain.BaseEntity;
/**
* 租户业务对象 sys_tenant
*
@ -62,6 +62,7 @@ public class SysTenantBo extends BaseEntity {
* 密码(创建系统用户)
*/
@NotBlank(message = "密码不能为空", groups = { AddGroup.class })
// @Pattern(regexp = RegexConstants.PASSWORD, message = "{user.password.format.valid}")
private String password;
/**

View File

@ -1,16 +1,13 @@
package org.dromara.system.mapper;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.mybatis.annotation.DataColumn;
import org.dromara.common.mybatis.annotation.DataPermission;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.system.domain.SysRole;
import org.dromara.system.domain.vo.SysRoleVo;
@ -78,21 +75,6 @@ public interface SysRoleMapper extends BaseMapperPlus<SysRole, SysRoleVo> {
return this.selectCount(new LambdaQueryWrapper<SysRole>().in(SysRole::getRoleId, roleIds));
}
/**
* 校验角色是否有数据权限
*
* @param roleIds 角色ID列表支持传单个ID
*/
default void checkRoleDataScope(List<Long> roleIds) {
if (CollUtil.isEmpty(roleIds) || LoginHelper.isSuperAdmin()) {
return;
}
long count = this.selectRoleCount(roleIds);
if (count != roleIds.size()) {
throw new ServiceException("没有权限访问部分角色数据!");
}
}
/**
* 根据角色ID查询角色信息
*

View File

@ -118,6 +118,13 @@ public interface ISysRoleService {
*/
void checkRoleDataScope(Long roleId);
/**
* 校验角色是否有数据权限
*
* @param roleIds 角色ID列表支持传单个ID
*/
void checkRoleDataScope(List<Long> roleIds);
/**
* 通过角色ID查询角色使用数量
*

View File

@ -254,7 +254,23 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService {
if (ObjectUtil.isNull(roleId)) {
return;
}
baseMapper.checkRoleDataScope(Collections.singletonList(roleId));
this.checkRoleDataScope(Collections.singletonList(roleId));
}
/**
* 校验角色是否有数据权限
*
* @param roleIds 角色ID列表支持传单个ID
*/
@Override
public void checkRoleDataScope(List<Long> roleIds) {
if (CollUtil.isEmpty(roleIds) || LoginHelper.isSuperAdmin()) {
return;
}
long count = baseMapper.selectRoleCount(roleIds);
if (count != roleIds.size()) {
throw new ServiceException("没有权限访问部分角色数据!");
}
}
/**
@ -411,8 +427,8 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService {
@Override
@Transactional(rollbackFor = Exception.class)
public int deleteRoleByIds(List<Long> roleIds) {
this.checkRoleDataScope(roleIds);
List<SysRole> roles = baseMapper.selectByIds(roleIds);
baseMapper.checkRoleDataScope(roleIds);
for (SysRole role : roles) {
checkRoleAllowed(BeanUtil.toBean(role, SysRoleBo.class));
if (countUserRoleByRoleId(role.getRoleId()) > 0) {