You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.2 KiB
82 lines
2.2 KiB
|
8 months ago
|
export const sensitive = {
|
||
|
|
/**
|
||
|
|
* 初始化敏感数据管理器
|
||
|
|
* @param {Object} config 配置项
|
||
|
|
* @param {Array} config.fields 需要脱敏的字段列表
|
||
|
|
* @returns {Object} 敏感数据管理器实例
|
||
|
|
*/
|
||
|
|
create(config = {}) {
|
||
|
|
const sensitiveFields = config.fields || [];
|
||
|
|
let initialMaskedData = {};
|
||
|
|
|
||
|
|
return {
|
||
|
|
/**
|
||
|
|
* 保存初始的脱敏数据
|
||
|
|
* @param {Object} data 包含脱敏数据的对象
|
||
|
|
*/
|
||
|
|
saveInitialData(data) {
|
||
|
|
initialMaskedData = {};
|
||
|
|
sensitiveFields.forEach(field => {
|
||
|
|
if (data[field]) {
|
||
|
|
initialMaskedData[field] = data[field];
|
||
|
|
}
|
||
|
|
});
|
||
|
|
},
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 获取要提交的数据,过滤掉未修改的敏感字段
|
||
|
|
* @param {Object} formData 表单数据
|
||
|
|
* @returns {Object} 过滤后的提交数据
|
||
|
|
*/
|
||
|
|
getSubmitData(formData) {
|
||
|
|
const submitData = { ...formData };
|
||
|
|
|
||
|
|
sensitiveFields.forEach(field => {
|
||
|
|
// 如果敏感字段的值与初始值相同,删除该字段
|
||
|
|
if (submitData[field] === initialMaskedData[field]) {
|
||
|
|
delete submitData[field];
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
return submitData;
|
||
|
|
},
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 更新脱敏数据
|
||
|
|
* @param {Object} newMaskedData 新的脱敏数据
|
||
|
|
*/
|
||
|
|
updateMaskedData(newMaskedData) {
|
||
|
|
Object.assign(initialMaskedData, newMaskedData);
|
||
|
|
},
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 判断敏感数据是否被修改
|
||
|
|
* @returns {boolean}
|
||
|
|
*/
|
||
|
|
isModified(formData) {
|
||
|
|
return sensitiveFields.some(field => formData[field] !== initialMaskedData[field]);
|
||
|
|
},
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 获取已修改的敏感字段列表
|
||
|
|
* @returns {Array}
|
||
|
|
*/
|
||
|
|
getModifiedFields(formData) {
|
||
|
|
return sensitiveFields.filter(field => formData[field] !== initialMaskedData[field]);
|
||
|
|
},
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 重置为初始状态
|
||
|
|
* @param {Object} formData 表单数据对象
|
||
|
|
*/
|
||
|
|
reset(formData) {
|
||
|
|
sensitiveFields.forEach(field => {
|
||
|
|
if (initialMaskedData[field]) {
|
||
|
|
formData[field] = initialMaskedData[field];
|
||
|
|
}
|
||
|
|
});
|
||
|
|
},
|
||
|
|
};
|
||
|
|
},
|
||
|
|
};
|