超级管理员 角色-菜单-权限 逻辑调整

v1.4.1
Parker 5 years ago
parent e214c8caf3
commit f4cf681d78

@ -57,7 +57,7 @@ public class UserAndOrgModel extends ApiWrapper {
@ApiModelProperty(value = "盐值,密码秘钥") @ApiModelProperty(value = "盐值,密码秘钥")
@ExcelIgnore @ExcelIgnore
@ValidationArgsLenMax(50) @ValidationArgsLenMax(50)
private String secretkey; private String secretKey;
/** 是否锁定 */ /** 是否锁定 */
@ApiModelProperty(value = "是否锁定") @ApiModelProperty(value = "是否锁定")

@ -57,7 +57,7 @@ public class UserModel extends ApiWrapper {
@ApiModelProperty(value = "盐值,密码秘钥") @ApiModelProperty(value = "盐值,密码秘钥")
@ExcelIgnore @ExcelIgnore
@ValidationArgsLenMax(50) @ValidationArgsLenMax(50)
private String secretkey; private String secretKey;
/** 是否锁定 */ /** 是否锁定 */
@ApiModelProperty(value = "是否锁定") @ApiModelProperty(value = "是否锁定")

@ -589,11 +589,11 @@ public class UserUtil {
/** /**
* *
* @param password * @param password
* @param secretkey * @param secretKey
* @return String * @return String
*/ */
public static String handlePassword(String password, String secretkey){ public static String handlePassword(String password, String secretKey){
return new Md5Hash(password, secretkey).toHex(); return new Md5Hash(password, secretKey).toHex();
} }
// ===================================== // =====================================

@ -99,7 +99,7 @@ public class LoginRestController {
// 账号不存在、密码错误 // 账号不存在、密码错误
if(user == null || if(user == null ||
!user.getPassword().equals(UserUtil.handlePassword(form.getPassword(), user.getSecretkey()))) { !user.getPassword().equals(UserUtil.handlePassword(form.getPassword(), user.getSecretKey()))) {
// 判断是否需要锁定账号 这里没有直接抛异常 而是返回错误信息, 其中包含 是否开启验证码状态 // 判断是否需要锁定账号 这里没有直接抛异常 而是返回错误信息, 其中包含 是否开启验证码状态
TokenMsg lockAccountMsg = UserTokenUtil.lockAccount(form.getUsername()); TokenMsg lockAccountMsg = UserTokenUtil.lockAccount(form.getUsername());
throw new TokenException(lockAccountMsg); throw new TokenException(lockAccountMsg);
@ -213,8 +213,8 @@ public class LoginRestController {
// ================= // =================
public static void main(String[] args) { public static void main(String[] args) {
String passwordStr = "Aa123456"; String passwordStr = "Bb123456";
String password = UserUtil.handlePassword(passwordStr, "system"); String password = UserUtil.handlePassword(passwordStr, "z25fk1otoj45ref83shq");
System.out.println(password); System.out.println(password);
} }
} }

@ -43,6 +43,13 @@ public interface IRoleMenuRefService {
*/ */
boolean setPerms(String roleId,String[] permsIds); boolean setPerms(String roleId,String[] permsIds);
/**
* ID
* @param roleIds ID
* @return boolean
*/
boolean delPermsByRoleIds(List<String> roleIds);
/** /**
* ID * ID
* @param menuIds ID * @param menuIds ID

@ -96,6 +96,14 @@ public class RoleMenuRefServiceImpl extends ServiceImpl<RoleMenuRefMapper,SysRol
return this.remove(queryWrapper); return this.remove(queryWrapper);
} }
@Override
@Transactional(rollbackFor = Exception.class)
public boolean delPermsByRoleIds(List<String> menuIds){
QueryWrapper<SysRoleMenuRef> queryWrapper = new QueryWrapper<>();
queryWrapper.in("role_id", menuIds);
return this.remove(queryWrapper);
}
// ========================= // =========================
/** /**

@ -15,7 +15,9 @@
*/ */
package org.opsli.modulars.system.role.service.impl; package org.opsli.modulars.system.role.service.impl;
import cn.hutool.core.convert.Convert;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.collect.Lists;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.opsli.api.wrapper.system.role.RoleModel; import org.opsli.api.wrapper.system.role.RoleModel;
import org.opsli.common.constants.MyBatisConstants; import org.opsli.common.constants.MyBatisConstants;
@ -26,11 +28,15 @@ import org.opsli.core.persistence.querybuilder.chain.TenantHandler;
import org.opsli.modulars.system.SystemMsg; import org.opsli.modulars.system.SystemMsg;
import org.opsli.modulars.system.role.entity.SysRole; import org.opsli.modulars.system.role.entity.SysRole;
import org.opsli.modulars.system.role.mapper.RoleMapper; import org.opsli.modulars.system.role.mapper.RoleMapper;
import org.opsli.modulars.system.role.service.IRoleMenuRefService;
import org.opsli.modulars.system.role.service.IRoleService; import org.opsli.modulars.system.role.service.IRoleService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.Collection;
import java.util.List;
/** /**
* @BelongsProject: opsli-boot * @BelongsProject: opsli-boot
@ -44,6 +50,8 @@ public class RoleServiceImpl extends CrudServiceImpl<RoleMapper, SysRole, RoleMo
@Autowired(required = false) @Autowired(required = false)
private RoleMapper mapper; private RoleMapper mapper;
@Autowired
private IRoleMenuRefService iRoleMenuRefService;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@ -79,6 +87,41 @@ public class RoleServiceImpl extends CrudServiceImpl<RoleMapper, SysRole, RoleMo
return super.update(model); return super.update(model);
} }
@Override
public boolean delete(String id) {
// 删除角色下 权限
iRoleMenuRefService.delPermsByRoleIds(Convert.toList(String.class, id));
return super.delete(id);
}
@Override
public boolean deleteAll(String[] ids) {
// 删除角色下 权限
iRoleMenuRefService.delPermsByRoleIds(Convert.toList(String.class, ids));
return super.deleteAll(ids);
}
@Override
public boolean delete(RoleModel model) {
if(model == null){
return false;
}
// 删除角色下 权限
iRoleMenuRefService.delPermsByRoleIds(Convert.toList(String.class, model.getId()));
return super.delete(model);
}
@Override
public boolean deleteAll(Collection<RoleModel> models) {
List<String> roleIds = Lists.newArrayList();
for (RoleModel model : models) {
roleIds.add(model.getId());
}
// 删除角色下 权限
iRoleMenuRefService.delPermsByRoleIds(roleIds);
return super.deleteAll(models);
}
/** /**
* *
* @param model model * @param model model

@ -95,13 +95,13 @@ public class UserServiceImpl extends CrudServiceImpl<UserMapper, SysUser, UserMo
// 新增可以直接设置密码 // 新增可以直接设置密码
if(StringUtils.isNotEmpty(model.getPassword())){ if(StringUtils.isNotEmpty(model.getPassword())){
// 设置随机新盐值 // 设置随机新盐值
model.setSecretkey( model.setSecretKey(
RandomUtil.randomString(20) RandomUtil.randomString(20)
); );
// 处理密码 // 处理密码
model.setPassword( model.setPassword(
UserUtil.handlePassword(model.getPassword(), UserUtil.handlePassword(model.getPassword(),
model.getSecretkey()) model.getSecretKey())
); );
} }
@ -142,7 +142,7 @@ public class UserServiceImpl extends CrudServiceImpl<UserMapper, SysUser, UserMo
// 需要注意的是 不要轻易改修改策略 // 需要注意的是 不要轻易改修改策略
model.setUsername(null); model.setUsername(null);
model.setPassword(null); model.setPassword(null);
model.setSecretkey(null); model.setSecretKey(null);
model.setLoginIp(null); model.setLoginIp(null);
UserModel update = super.update(model); UserModel update = super.update(model);
@ -381,7 +381,7 @@ public class UserServiceImpl extends CrudServiceImpl<UserMapper, SysUser, UserMo
// 获得 处理后 老密码 // 获得 处理后 老密码
String orlPassword = UserUtil.handlePassword(userPassword.getOldPassword(), String orlPassword = UserUtil.handlePassword(userPassword.getOldPassword(),
userModel.getSecretkey()); userModel.getSecretKey());
// 判断老密码是否正确 // 判断老密码是否正确
if(!userModel.getPassword().equals(orlPassword)){ if(!userModel.getPassword().equals(orlPassword)){

@ -328,7 +328,7 @@ public class UserRestController extends BaseRestController<SysUser, UserModel, I
page = IService.findPageByCus(page); page = IService.findPageByCus(page);
// 密码防止分页泄露处理 // 密码防止分页泄露处理
for (UserAndOrgModel userModel : page.getList()) { for (UserAndOrgModel userModel : page.getList()) {
userModel.setSecretkey(null); userModel.setSecretKey(null);
userModel.setPassword(null); userModel.setPassword(null);
} }
return ResultVo.success(page.getBootstrapData()); return ResultVo.success(page.getBootstrapData());

Loading…
Cancel
Save