simplified form_field property deletion logic in form_submission model
This commit is contained in:
parent
632d2b409d
commit
88299a2b27
@ -3,34 +3,33 @@
|
||||
const constants = require('../libs/constants');
|
||||
|
||||
module.exports = {
|
||||
removeSensitiveModelData: function(type, object){
|
||||
function removeKeysFromDict(dict, keys){
|
||||
for(var i=0; i<keys.length; i++){
|
||||
var curr_key = keys[i];
|
||||
if( dict.hasOwnProperty(curr_key) ){
|
||||
delete dict[curr_key];
|
||||
}
|
||||
removeKeysFromDict: function(dict, keys){
|
||||
for(var i=0; i<keys.length; i++){
|
||||
var curr_key = keys[i];
|
||||
if( dict.hasOwnProperty(curr_key) ){
|
||||
delete dict[curr_key];
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
removeSensitiveModelData: function(type, object){
|
||||
switch(type){
|
||||
case 'private_form':
|
||||
removeKeysFromDict(object, constants.privateFields[type]);
|
||||
this.this.removeKeysFromDict(object, constants.privateFields[type]);
|
||||
if(object.admin){
|
||||
removeKeysFromDict(object.admin, constants.privateFields.private_user);
|
||||
this.removeKeysFromDict(object.admin, constants.privateFields.private_user);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'public_form':
|
||||
removeKeysFromDict(object, constants.privateFields[type]);
|
||||
this.removeKeysFromDict(object, constants.privateFields[type]);
|
||||
if(object.admin){
|
||||
removeKeysFromDict(object.admin, constants.privateFields.public_user);
|
||||
this.removeKeysFromDict(object.admin, constants.privateFields.public_user);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
if(constants.privateFields.hasOwnProperty(type)){
|
||||
removeKeysFromDict(object, constants.privateFields[type]);
|
||||
this.removeKeysFromDict(object, constants.privateFields[type]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1,40 +1,59 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = {
|
||||
fieldTypes: ['textfield',
|
||||
'date',
|
||||
'email',
|
||||
'legal',
|
||||
'url',
|
||||
'textarea',
|
||||
'statement',
|
||||
'welcome',
|
||||
'thankyou',
|
||||
'file',
|
||||
'dropdown',
|
||||
'scale',
|
||||
'rating',
|
||||
'radio',
|
||||
'checkbox',
|
||||
'hidden',
|
||||
'yes_no',
|
||||
'natural',
|
||||
'stripe',
|
||||
'number'],
|
||||
extraneousFormFieldProps: [
|
||||
'validFieldTypes'
|
||||
'disabled',
|
||||
'required',
|
||||
'isSubmission',
|
||||
'title',
|
||||
'fieldOptions',
|
||||
'ratingOptions',
|
||||
'logicJump',
|
||||
'description',
|
||||
'created',
|
||||
'lastModified',
|
||||
'deletePreserved'
|
||||
],
|
||||
|
||||
ratingShapeTypes: ['Heart',
|
||||
'Star',
|
||||
'thumbs-up',
|
||||
'thumbs-down',
|
||||
'Circle',
|
||||
'Square',
|
||||
'Check Circle',
|
||||
'Smile Outlined',
|
||||
'Hourglass',
|
||||
'bell',
|
||||
'Paper Plane',
|
||||
'Comment',
|
||||
'Trash'],
|
||||
fieldTypes: [
|
||||
'textfield',
|
||||
'date',
|
||||
'email',
|
||||
'legal',
|
||||
'url',
|
||||
'textarea',
|
||||
'statement',
|
||||
'welcome',
|
||||
'thankyou',
|
||||
'file',
|
||||
'dropdown',
|
||||
'scale',
|
||||
'rating',
|
||||
'radio',
|
||||
'checkbox',
|
||||
'hidden',
|
||||
'yes_no',
|
||||
'natural',
|
||||
'stripe',
|
||||
'number'
|
||||
],
|
||||
|
||||
ratingShapeTypes: [
|
||||
'Heart',
|
||||
'Star',
|
||||
'thumbs-up',
|
||||
'thumbs-down',
|
||||
'Circle',
|
||||
'Square',
|
||||
'Check Circle',
|
||||
'Smile Outlined',
|
||||
'Hourglass',
|
||||
'bell',
|
||||
'Paper Plane',
|
||||
'Comment',
|
||||
'Trash'
|
||||
],
|
||||
|
||||
deviceTypes: ['desktop', 'phone', 'tablet', 'other'],
|
||||
languageTypes: ['en', 'fr', 'es', 'it', 'de'],
|
||||
|
||||
@ -6,7 +6,9 @@
|
||||
var mongoose = require('mongoose'),
|
||||
Schema = mongoose.Schema,
|
||||
timeStampPlugin = require('../libs/timestamp.server.plugin'),
|
||||
FieldSchema = require('./form_field.server.model.js');
|
||||
FieldSchema = require('./form_field.server.model'),
|
||||
helpers = require('../controllers/helpers.server.controller'),
|
||||
constants = require('../libs/constants');
|
||||
|
||||
/**
|
||||
* Form Submission Schema
|
||||
@ -55,18 +57,7 @@ FormSubmissionSchema.pre('save', function (next) {
|
||||
this.form_fields[i].fieldValue = this.form_fields[i].fieldValue.option_value;
|
||||
}
|
||||
|
||||
delete this.form_fields[i].validFieldTypes;
|
||||
delete this.form_fields[i].disabled;
|
||||
delete this.form_fields[i].required;
|
||||
delete this.form_fields[i].isSubmission;
|
||||
delete this.form_fields[i].title;
|
||||
delete this.form_fields[i].fieldOptions;
|
||||
delete this.form_fields[i].ratingOptions;
|
||||
delete this.form_fields[i].logicJump;
|
||||
delete this.form_fields[i].description;
|
||||
delete this.form_fields[i].created;
|
||||
delete this.form_fields[i].lastModified;
|
||||
delete this.form_fields[i].deletePreserved;
|
||||
helpers.removeKeysFromDict(form_fields[i], constants.extraneousFormFieldProps);
|
||||
}
|
||||
next();
|
||||
});
|
||||
@ -77,19 +68,7 @@ FormSubmissionSchema.path('form_fields', {
|
||||
form_fields[i].isSubmission = true;
|
||||
form_fields[i]._id = new mongoose.mongo.ObjectID();
|
||||
|
||||
delete form_fields[i].validFieldTypes;
|
||||
delete form_fields[i].disabled;
|
||||
delete form_fields[i].required;
|
||||
delete form_fields[i].isSubmission;
|
||||
delete form_fields[i].title;
|
||||
delete form_fields[i].fieldOptions;
|
||||
delete form_fields[i].ratingOptions;
|
||||
delete form_fields[i].logicJump;
|
||||
delete form_fields[i].description;
|
||||
delete form_fields[i].created;
|
||||
delete form_fields[i].lastModified;
|
||||
delete form_fields[i].deletePreserved;
|
||||
|
||||
helpers.removeKeysFromDict(form_fields[i], constants.extraneousFormFieldProps);
|
||||
}
|
||||
return form_fields;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user