diff --git a/wfc-common/ruoyi-common-sensitive/pom.xml b/wfc-common/ruoyi-common-sensitive/pom.xml deleted file mode 100644 index ef8f04c..0000000 --- a/wfc-common/ruoyi-common-sensitive/pom.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - org.wfc - wfc-common - 3.6.5 - - 4.0.0 - - wfc-common-sensitive - - - wfc-common-sensitive数据脱敏 - - - - - - - org.wfc - wfc-common-security - - - - \ No newline at end of file diff --git a/wfc-common/ruoyi-common-sensitive/src/main/java/com/ruoyi/common/sensitive/annotation/Sensitive.java b/wfc-common/ruoyi-common-sensitive/src/main/java/com/ruoyi/common/sensitive/annotation/Sensitive.java deleted file mode 100644 index 491a82d..0000000 --- a/wfc-common/ruoyi-common-sensitive/src/main/java/com/ruoyi/common/sensitive/annotation/Sensitive.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.wfc.common.sensitive.annotation; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import org.wfc.common.sensitive.config.SensitiveJsonSerializer; -import org.wfc.common.sensitive.enums.DesensitizedType; - -/** - * 数据脱敏注解 - * - * @author ruoyi - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.FIELD) -@JacksonAnnotationsInside -@JsonSerialize(using = SensitiveJsonSerializer.class) -public @interface Sensitive -{ - DesensitizedType desensitizedType(); -} diff --git a/wfc-common/ruoyi-common-sensitive/src/main/java/com/ruoyi/common/sensitive/config/SensitiveJsonSerializer.java b/wfc-common/ruoyi-common-sensitive/src/main/java/com/ruoyi/common/sensitive/config/SensitiveJsonSerializer.java deleted file mode 100644 index 85380b7..0000000 --- a/wfc-common/ruoyi-common-sensitive/src/main/java/com/ruoyi/common/sensitive/config/SensitiveJsonSerializer.java +++ /dev/null @@ -1,67 +0,0 @@ -package org.wfc.common.sensitive.config; - -import java.io.IOException; -import java.util.Objects; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.BeanProperty; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.ser.ContextualSerializer; -import org.wfc.common.security.utils.SecurityUtils; -import org.wfc.common.sensitive.annotation.Sensitive; -import org.wfc.common.sensitive.enums.DesensitizedType; -import org.wfc.system.api.model.LoginUser; - -/** - * 数据脱敏序列化过滤 - * - * @author ruoyi - */ -public class SensitiveJsonSerializer extends JsonSerializer implements ContextualSerializer -{ - private DesensitizedType desensitizedType; - - @Override - public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException - { - if (desensitization()) - { - gen.writeString(desensitizedType.desensitizer().apply(value)); - } - else - { - gen.writeString(value); - } - } - - @Override - public JsonSerializer createContextual(SerializerProvider prov, BeanProperty property) - throws JsonMappingException - { - Sensitive annotation = property.getAnnotation(Sensitive.class); - if (Objects.nonNull(annotation) && Objects.equals(String.class, property.getType().getRawClass())) - { - this.desensitizedType = annotation.desensitizedType(); - return this; - } - return prov.findValueSerializer(property.getType(), property); - } - - /** - * 是否需要脱敏处理 - */ - private boolean desensitization() - { - try - { - LoginUser securityUser = SecurityUtils.getLoginUser(); - // 管理员不脱敏 - return !securityUser.getSysUser().isAdmin(); - } - catch (Exception e) - { - return true; - } - } -} diff --git a/wfc-common/ruoyi-common-sensitive/src/main/java/com/ruoyi/common/sensitive/enums/DesensitizedType.java b/wfc-common/ruoyi-common-sensitive/src/main/java/com/ruoyi/common/sensitive/enums/DesensitizedType.java deleted file mode 100644 index 2aa7257..0000000 --- a/wfc-common/ruoyi-common-sensitive/src/main/java/com/ruoyi/common/sensitive/enums/DesensitizedType.java +++ /dev/null @@ -1,59 +0,0 @@ -package org.wfc.common.sensitive.enums; - -import java.util.function.Function; -import org.wfc.common.sensitive.utils.DesensitizedUtil; - -/** - * 脱敏类型 - * - * @author ruoyi - */ -public enum DesensitizedType -{ - /** - * 姓名,第2位星号替换 - */ - USERNAME(s -> s.replaceAll("(\\S)\\S(\\S*)", "$1*$2")), - - /** - * 密码,全部字符都用*代替 - */ - PASSWORD(DesensitizedUtil::password), - - /** - * 身份证,中间10位星号替换 - */ - ID_CARD(s -> s.replaceAll("(\\d{4})\\d{10}(\\d{3}[Xx]|\\d{4})", "$1** **** ****$2")), - - /** - * 手机号,中间4位星号替换 - */ - PHONE(s -> s.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2")), - - /** - * 电子邮箱,仅显示第一个字母和@后面的地址显示,其他星号替换 - */ - EMAIL(s -> s.replaceAll("(^.)[^@]*(@.*$)", "$1****$2")), - - /** - * 银行卡号,保留最后4位,其他星号替换 - */ - BANK_CARD(s -> s.replaceAll("\\d{15}(\\d{3})", "**** **** **** **** $1")), - - /** - * 车牌号码,包含普通车辆、新能源车辆 - */ - CAR_LICENSE(DesensitizedUtil::carLicense); - - private final Function desensitizer; - - DesensitizedType(Function desensitizer) - { - this.desensitizer = desensitizer; - } - - public Function desensitizer() - { - return desensitizer; - } -} diff --git a/wfc-common/ruoyi-common-sensitive/src/main/java/com/ruoyi/common/sensitive/utils/DesensitizedUtil.java b/wfc-common/ruoyi-common-sensitive/src/main/java/com/ruoyi/common/sensitive/utils/DesensitizedUtil.java deleted file mode 100644 index ca3b6df..0000000 --- a/wfc-common/ruoyi-common-sensitive/src/main/java/com/ruoyi/common/sensitive/utils/DesensitizedUtil.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.wfc.common.sensitive.utils; - -import org.wfc.common.core.utils.StringUtils; - -/** - * 脱敏工具类 - * - * @author ruoyi - */ -public class DesensitizedUtil -{ - /** - * 密码的全部字符都用*代替,比如:****** - * - * @param password 密码 - * @return 脱敏后的密码 - */ - public static String password(String password) - { - if (StringUtils.isBlank(password)) - { - return StringUtils.EMPTY; - } - return StringUtils.repeat('*', password.length()); - } - - /** - * 车牌中间用*代替,如果是错误的车牌,不处理 - * - * @param carLicense 完整的车牌号 - * @return 脱敏后的车牌 - */ - public static String carLicense(String carLicense) - { - if (StringUtils.isBlank(carLicense)) - { - return StringUtils.EMPTY; - } - // 普通车牌 - if (carLicense.length() == 7) - { - carLicense = StringUtils.hide(carLicense, 3, 6); - } - else if (carLicense.length() == 8) - { - // 新能源车牌 - carLicense = StringUtils.hide(carLicense, 3, 7); - } - return carLicense; - } -}