| | |
| | | public class SensitiveHandler extends JsonSerializer<String> implements ContextualSerializer { |
| | | |
| | | private SensitiveStrategy strategy; |
| | | private String[] roleKey; |
| | | private String[] perms; |
| | | |
| | | @Override |
| | | public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException { |
| | | try { |
| | | SensitiveService sensitiveService = SpringUtils.getBean(SensitiveService.class); |
| | | if (ObjectUtil.isNotNull(sensitiveService) && sensitiveService.isSensitive()) { |
| | | if (ObjectUtil.isNotNull(sensitiveService) && sensitiveService.isSensitive(roleKey, perms)) { |
| | | gen.writeString(strategy.desensitizer().apply(value)); |
| | | } else { |
| | | gen.writeString(value); |
| | |
| | | Sensitive annotation = property.getAnnotation(Sensitive.class); |
| | | if (Objects.nonNull(annotation) && Objects.equals(String.class, property.getType().getRawClass())) { |
| | | this.strategy = annotation.strategy(); |
| | | this.roleKey = annotation.roleKey(); |
| | | this.perms = annotation.perms(); |
| | | return this; |
| | | } |
| | | return prov.findValueSerializer(property.getType(), property); |