strapi-plugin-content-manager
Version:
A powerful UI to easily manage your data.
55 lines (43 loc) • 1.59 kB
JavaScript
import { get } from 'lodash';
import { getType, getOtherInfos } from 'strapi-helper-plugin';
const removePasswordFieldsFromData = (data, contentTypeSchema, componentSchema) => {
const recursiveCleanData = (data, schema) => {
return Object.keys(data).reduce((acc, current) => {
const attrType = getType(schema, current);
const value = get(data, current);
const component = getOtherInfos(schema, [current, 'component']);
const isRepeatable = getOtherInfos(schema, [current, 'repeatable']);
if (attrType === 'dynamiczone') {
acc[current] = value.map(componentValue => {
const subCleanedData = recursiveCleanData(
componentValue,
componentSchema[componentValue.__component]
);
return subCleanedData;
});
return acc;
}
if (attrType === 'component') {
if (isRepeatable) {
/* eslint-disable indent */
acc[current] = value
? value.map(compoData => {
const subCleanedData = recursiveCleanData(compoData, componentSchema[component]);
return subCleanedData;
})
: value;
/* eslint-enable indent */
} else {
acc[current] = value ? recursiveCleanData(value, componentSchema[component]) : value;
}
return acc;
}
if (attrType !== 'password') {
acc[current] = value;
}
return acc;
}, {});
};
return recursiveCleanData(data, contentTypeSchema);
};
export default removePasswordFieldsFromData;