diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java index 8aaeecd..5ae341f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java @@ -121,6 +121,7 @@ public class SysRoleController extends BaseController @ResponseBody public AjaxResult editSave(@Validated SysRole role) { + roleService.checkRoleAllowed(role); if (UserConstants.ROLE_NAME_NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role))) { return error("修改角色'" + role.getRoleName() + "'失败,角色名称已存在"); @@ -153,6 +154,7 @@ public class SysRoleController extends BaseController @ResponseBody public AjaxResult authDataScopeSave(SysRole role) { + roleService.checkRoleAllowed(role); role.setUpdateBy(ShiroUtils.getLoginName()); if (roleService.authDataScope(role) > 0) { @@ -216,6 +218,7 @@ public class SysRoleController extends BaseController @ResponseBody public AjaxResult changeStatus(SysRole role) { + roleService.checkRoleAllowed(role); return toAjax(roleService.changeStatus(role)); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java index 490c4fe..2a6175b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java @@ -159,11 +159,8 @@ public class SysUserController extends BaseController @ResponseBody public AjaxResult editSave(@Validated SysUser user) { - if (StringUtils.isNotNull(user.getUserId()) && SysUser.isAdmin(user.getUserId())) - { - return error("不允许修改超级管理员用户"); - } - else if (UserConstants.USER_PHONE_NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) + userService.checkUserAllowed(user); + if (UserConstants.USER_PHONE_NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) { return error("修改用户'" + user.getLoginName() + "'失败,手机号码已存在"); } @@ -190,6 +187,7 @@ public class SysUserController extends BaseController @ResponseBody public AjaxResult resetPwdSave(SysUser user) { + userService.checkUserAllowed(user); user.setSalt(ShiroUtils.randomSalt()); user.setPassword(passwordService.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt())); if (userService.resetUserPwd(user) > 0) @@ -258,6 +256,7 @@ public class SysUserController extends BaseController @ResponseBody public AjaxResult changeStatus(SysUser user) { + userService.checkUserAllowed(user); return toAjax(userService.changeStatus(user)); } } \ No newline at end of file diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MyBatisConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MyBatisConfig.java index ee00d3e..4839fac 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MyBatisConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MyBatisConfig.java @@ -5,7 +5,6 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.List; import javax.sql.DataSource; - import org.apache.ibatis.io.VFS; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/realm/UserRealm.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/realm/UserRealm.java index 68d0960..d63e80c 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/realm/UserRealm.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/realm/UserRealm.java @@ -19,7 +19,6 @@ import org.apache.shiro.subject.PrincipalCollection; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; - import com.ruoyi.common.exception.user.CaptchaException; import com.ruoyi.common.exception.user.RoleBlockedException; import com.ruoyi.common.exception.user.UserBlockedException; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRole.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRole.java index 9252fe4..62a6fb4 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRole.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRole.java @@ -52,6 +52,16 @@ public class SysRole extends BaseEntity /** 部门组(数据权限) */ private Long[] deptIds; + public SysRole() + { + + } + + public SysRole(Long roleId) + { + this.roleId = roleId; + } + public Long getRoleId() { return roleId; @@ -62,6 +72,16 @@ public class SysRole extends BaseEntity this.roleId = roleId; } + public boolean isAdmin() + { + return isAdmin(this.roleId); + } + + public static boolean isAdmin(Long roleId) + { + return roleId != null && 1L == roleId; + } + public String getDataScope() { return dataScope; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUser.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUser.java index 3577cf3..c4e0940 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUser.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUser.java @@ -93,6 +93,16 @@ public class SysUser extends BaseEntity /** 岗位组 */ private Long[] postIds; + public SysUser() + { + + } + + public SysUser(Long userId) + { + this.userId = userId; + } + public Long getUserId() { return userId; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java index c16f5cc..706d3e2 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java @@ -108,6 +108,13 @@ public interface ISysRoleService */ public String checkRoleKeyUnique(SysRole role); + /** + * 校验角色是否允许操作 + * + * @param role 角色信息 + */ + public void checkRoleAllowed(SysRole role); + /** * 通过角色ID查询角色使用数量 * @@ -123,6 +130,7 @@ public interface ISysRoleService * @return 结果 */ public int changeStatus(SysRole role); + /** * 取消授权用户角色 * @@ -139,7 +147,7 @@ public interface ISysRoleService * @return 结果 */ public int deleteAuthUsers(Long roleId, String userIds); - + /** * 批量选择授权用户角色 * diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java index 3b34be6..3b30eb2 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java @@ -139,12 +139,20 @@ public interface ISysUserService */ public String checkEmailUnique(SysUser user); + /** + * 校验用户是否允许操作 + * + * @param user 用户信息 + */ + public void checkUserAllowed(SysUser user); + /** * 根据用户ID查询用户所属角色组 * * @param userId 用户ID * @return 结果 */ + public String selectUserRoleGroup(Long userId); /** diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java index 4b3ed74..025d169 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java @@ -150,6 +150,7 @@ public class SysRoleServiceImpl implements ISysRoleService Long[] roleIds = Convert.toLongArray(ids); for (Long roleId : roleIds) { + checkRoleAllowed(new SysRole(roleId)); SysRole role = selectRoleById(roleId); if (countUserRoleByRoleId(roleId) > 0) { @@ -293,6 +294,19 @@ public class SysRoleServiceImpl implements ISysRoleService return UserConstants.ROLE_KEY_UNIQUE; } + /** + * 校验角色是否允许操作 + * + * @param role 角色信息 + */ + public void checkRoleAllowed(SysRole role) + { + if (StringUtils.isNotNull(role.getRoleId()) && role.isAdmin()) + { + throw new BusinessException("不允许操作超级管理员角色"); + } + } + /** * 通过角色ID查询角色使用数量 * diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java index 35d0307..4ad9124 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java @@ -167,10 +167,7 @@ public class SysUserServiceImpl implements ISysUserService Long[] userIds = Convert.toLongArray(ids); for (Long userId : userIds) { - if (SysUser.isAdmin(userId)) - { - throw new BusinessException("不允许删除超级管理员用户"); - } + checkUserAllowed(new SysUser(userId)); } return userMapper.deleteUserByIds(userIds); } @@ -345,6 +342,19 @@ public class SysUserServiceImpl implements ISysUserService return UserConstants.USER_EMAIL_UNIQUE; } + /** + * 校验用户是否允许操作 + * + * @param user 用户信息 + */ + public void checkUserAllowed(SysUser user) + { + if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin()) + { + throw new BusinessException("不允许操作超级管理员用户"); + } + } + /** * 查询用户所属角色组 * @@ -465,10 +475,6 @@ public class SysUserServiceImpl implements ISysUserService @Override public int changeStatus(SysUser user) { - if (SysUser.isAdmin(user.getUserId())) - { - throw new BusinessException("不允许修改超级管理员用户"); - } return userMapper.updateUser(user); } }