update 优化 脱敏增加角色及权限校验

This commit is contained in:
刘一森 2023-11-09 17:00:29 +08:00
parent bb6f79913b
commit 8a00416c40
3 changed files with 17 additions and 7 deletions

View File

@ -2,7 +2,6 @@ package org.dromara.common.sensitive.annotation;
import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.dromara.common.core.constant.UserConstants;
import org.dromara.common.sensitive.core.SensitiveStrategy; import org.dromara.common.sensitive.core.SensitiveStrategy;
import org.dromara.common.sensitive.handler.SensitiveHandler; import org.dromara.common.sensitive.handler.SensitiveHandler;

View File

@ -62,13 +62,13 @@ public class TestSensitiveController extends BaseController {
/** /**
* 邮箱 * 邮箱
*/ */
@Sensitive(strategy = SensitiveStrategy.EMAIL) @Sensitive(strategy = SensitiveStrategy.EMAIL, roleKey = "common", perms = "system:user:query1")
private String email; private String email;
/** /**
* 银行卡 * 银行卡
*/ */
@Sensitive(strategy = SensitiveStrategy.BANK_CARD) @Sensitive(strategy = SensitiveStrategy.BANK_CARD, roleKey = "common1", perms = "system:user:query")
private String bankCard; private String bankCard;
} }

View File

@ -1,8 +1,7 @@
package org.dromara.system.service.impl; package org.dromara.system.service.impl;
import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.util.ObjectUtil; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.core.domain.model.LoginUser;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.sensitive.core.SensitiveService; import org.dromara.common.sensitive.core.SensitiveService;
import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.common.tenant.helper.TenantHelper;
@ -27,9 +26,21 @@ public class SysSensitiveServiceImpl implements SensitiveService {
if (!StpUtil.isLogin()){ if (!StpUtil.isLogin()){
return true; return true;
} }
if (StpUtil.hasRole(roleKey) || StpUtil.hasPermission(perms)){
if (StringUtils.isNotEmpty(roleKey) && StringUtils.isNotEmpty(perms)){
if (StpUtil.hasRole(roleKey) && StpUtil.hasPermission(perms)){
return false; return false;
} }
}else if (StringUtils.isNotEmpty(roleKey)){
if (StpUtil.hasRole(roleKey)){
return false;
}
}else if (StringUtils.isNotEmpty(perms)){
if (StpUtil.hasPermission(perms)){
return false;
}
}
if (TenantHelper.isEnable()) { if (TenantHelper.isEnable()) {
return !LoginHelper.isSuperAdmin() && !LoginHelper.isTenantAdmin(); return !LoginHelper.isSuperAdmin() && !LoginHelper.isTenantAdmin();
} }