More supports SHOW_ADVDESENSITIZED/SHOW_ADVPATTERN

This commit is contained in:
RB 2022-04-13 13:03:28 +08:00
parent d8114b6468
commit 8f9c374a79
6 changed files with 25 additions and 21 deletions

View file

@ -12,8 +12,10 @@ import cn.devezhao.persist4j.Field;
import cn.devezhao.persist4j.dialect.FieldType;
import com.alibaba.fastjson.JSON;
import com.rebuild.core.metadata.MetadataHelper;
import com.rebuild.core.metadata.impl.EasyFieldConfigProps;
import com.rebuild.utils.JSONUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang3.BooleanUtils;
import org.springframework.util.Assert;
/**
@ -154,4 +156,14 @@ public abstract class EasyField extends BaseEasyMeta<Field> {
// * @return
// */
// abstract T checkoutValue(Object rawValue);
/**
* 信息脱敏
*
* @return
* @see com.rebuild.core.support.general.FieldValueHelper#desensitized(EasyField, Object)
*/
public boolean isDesensitized() {
return BooleanUtils.toBoolean(getExtraAttr(EasyFieldConfigProps.ADV_DESENSITIZED));
}
}

View file

@ -11,7 +11,6 @@ import cn.devezhao.persist4j.Field;
import com.rebuild.core.metadata.impl.EasyFieldConfigProps;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang3.BooleanUtils;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
@ -44,13 +43,4 @@ public class EasyText extends EasyField {
}
return null;
}
/**
* 信息脱敏
*
* @return
*/
public boolean isDesensitized() {
return BooleanUtils.toBoolean(getExtraAttr(EasyFieldConfigProps.ADV_DESENSITIZED));
}
}

View file

@ -17,7 +17,6 @@ import com.rebuild.core.Application;
import com.rebuild.core.metadata.easymeta.DisplayType;
import com.rebuild.core.metadata.easymeta.EasyField;
import com.rebuild.core.metadata.easymeta.EasyMetaFactory;
import com.rebuild.core.metadata.easymeta.EasyText;
import com.rebuild.core.privileges.UserHelper;
import com.rebuild.core.privileges.bizz.ZeroEntry;
import com.rebuild.utils.JSONUtils;
@ -169,8 +168,7 @@ public class DataListWrapper {
* @see FieldValueHelper#isUseDesensitized(EasyField, ID)
*/
private boolean isUseDesensitized(EasyField easyField) {
return this.useDesensitized
&& easyField instanceof EasyText && ((EasyText) easyField).isDesensitized();
return this.useDesensitized && easyField.isDesensitized();
}
/**

View file

@ -20,7 +20,10 @@ import com.rebuild.core.configuration.general.ClassificationManager;
import com.rebuild.core.configuration.general.PickListManager;
import com.rebuild.core.metadata.EntityHelper;
import com.rebuild.core.metadata.MetadataHelper;
import com.rebuild.core.metadata.easymeta.*;
import com.rebuild.core.metadata.easymeta.DisplayType;
import com.rebuild.core.metadata.easymeta.EasyField;
import com.rebuild.core.metadata.easymeta.EasyMetaFactory;
import com.rebuild.core.metadata.easymeta.MixValue;
import com.rebuild.core.privileges.bizz.ZeroEntry;
import com.rebuild.core.service.NoRecordFoundException;
import com.rebuild.core.service.approval.ApprovalState;
@ -259,18 +262,17 @@ public class FieldValueHelper {
* @return
*/
public static boolean isUseDesensitized(EasyField field, ID user) {
if (!(field instanceof EasyText)) return false;
if (user == null) {
log.warn("No [user] spec! Cannot check desensitized");
return false;
}
return ((EasyText) field).isDesensitized()
return field.isDesensitized()
&& !Application.getPrivilegesManager().allow(user, ZeroEntry.AllowNoDesensitized);
}
/**
* 字段值脱敏仅适用文本邮箱电话字段
* 字段值脱敏仅适用文本/邮箱/电话/数字字段
*
* @param field
* @param value
@ -286,6 +288,8 @@ public class FieldValueHelper {
return DataDesensitized.phone((String) value);
} else if (dt == DisplayType.TEXT) {
return DataDesensitized.any((String) value);
} else if (dt == DisplayType.DECIMAL || dt == DisplayType.NUMBER) {
return DataDesensitized.SECURE_TEXT;
} else {
return value;
}

View file

@ -338,7 +338,7 @@
</span>
</label>
<div>
<input type="text" class="form-control form-control-sm" id="advPattern" th:placeholder="${bundle.L('正则表达式')}" data-toggle="dropdown" autocomplete="off" />
<input type="text" class="form-control form-control-sm" id="advPattern" th:placeholder="${bundle.L('格式验证 (支持 Java 正则表达式)')}" data-toggle="dropdown" autocomplete="off" />
<div class="dropdown-menu common-patt">
<h5>[[${bundle.L('常用')}]]</h5>
<a class="badge" data-patt="^([0-9A-Z]{15}|[0-9A-Z]{17}|[0-9A-Z]{18}|[0-9A-Z]{20})$">[[${bundle.L('税号')}]]</a>

View file

@ -11,8 +11,8 @@ const __gExtConfig = {}
const SHOW_REPEATABLE = ['TEXT', 'DATE', 'EMAIL', 'URL', 'PHONE', 'REFERENCE', 'CLASSIFICATION']
const SHOW_DEFAULTVALUE = ['TEXT', 'NTEXT', 'EMAIL', 'PHONE', 'URL', 'NUMBER', 'DECIMAL', 'DATE', 'DATETIME', 'BOOL', 'CLASSIFICATION', 'REFERENCE', 'N2NREFERENCE']
const SHOW_ADVDESENSITIZED = ['TEXT', 'PHONE', 'EMAIL']
const SHOW_ADVPATTERN = ['TEXT']
const SHOW_ADVDESENSITIZED = ['TEXT', 'PHONE', 'EMAIL', 'NUMBER', 'DECIMAL']
const SHOW_ADVPATTERN = ['TEXT', 'PHONE', 'EMAIL']
$(document).ready(function () {
const dt = wpc.fieldType