simplified form_field property deletion logic in form_submission model

This commit is contained in:
David Baldwynn 2017-11-20 21:21:32 -08:00
parent 632d2b409d
commit 88299a2b27
3 changed files with 69 additions and 72 deletions

View File

@ -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;
}

View File

@ -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'],

View File

@ -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;
}