import axios from 'axios';
|
|
export class SensitiveManage {
|
static sensitiveFilePath = `https://parkmanagement.oss-cn-hangzhou.aliyuncs.com/12333/sensitive.txt?${new Date().getTime()}`;
|
|
static sensitiveList = '';
|
|
static async getSensitiveList() {
|
try {
|
if (!this.sensitiveList) {
|
const res = await axios.get(this.sensitiveFilePath);
|
this.sensitiveList = res.data;
|
}
|
return this.sensitiveList;
|
} catch (error) {}
|
}
|
|
static filterSensitiveWord(data: any, needFilter = true) {
|
if (needFilter && this.sensitiveList && data) {
|
if (typeof data === 'string') {
|
const regex = new RegExp(this.sensitiveList, 'gi');
|
return data.replace(regex, (match) => match.replace(/./g, '*'));
|
} else if (Array.isArray(data)) {
|
return data.map((item) => this.filterSensitiveWord(item));
|
} else if (typeof data === 'object') {
|
const dataKeys = Object.keys(data);
|
const newData: any = Object.create(Object.getPrototypeOf(data));
|
dataKeys.forEach((value) => {
|
newData[value] = this.filterSensitiveWord(data[value]);
|
});
|
return newData;
|
}
|
}
|
return data;
|
}
|
}
|
|
SensitiveManage.getSensitiveList();
|