@@ -5,7 +5,8 @@ let formidable = require('formidable'),
55 fs = require ( 'fs' ) ,
66 crypto = require ( 'crypto' ) ,
77 resize = require ( './resize' ) ,
8- mailer = require ( './mailer' ) ;
8+ mailer = require ( './mailer' ) ,
9+ validator = require ( 'validator' ) ;
910
1011exports . getAll = function ( req , res ) {
1112 const ORDER_BY_DATE_ASC = 'asc' ,
@@ -191,7 +192,7 @@ exports.createEntry = function (req, res) {
191192 files = [ ] ,
192193 errorFields = [ ] ,
193194 out = { } ,
194- requiredFields = [ 'email' , 'firstname' , 'anon' , 'message ' ] ,
195+ requiredFields = [ 'email' , 'firstname' , 'anon' , 'country ' ] ,
195196 allowedFields = [ 'email' , 'firstname' , 'lastname' , 'anon' , 'message' , 'country' , 'beta' , 'newsletter' , 'pax' ] ;
196197
197198 form . uploadDir = __dirname + '/../uploads/' ;
@@ -221,6 +222,46 @@ exports.createEntry = function (req, res) {
221222
222223 fields [ [ field ] ] = value ;
223224 }
225+ if ( field === 'firstname' ) {
226+ fields [ [ field ] ] = validator . escape ( validator . trim ( value ) ) ;
227+ if ( ! validator . isLength ( value , { min : 1 , max : 200 } ) ) {
228+ errorFields . push ( 'firstname' ) ;
229+ out [ 'firstname' ] = 'This field needs to have between 1 and 200 characters' ;
230+ }
231+ }
232+ if ( field === 'lastname' ) {
233+ fields [ [ field ] ] = validator . escape ( validator . trim ( value ) ) ;
234+ if ( ! validator . isLength ( value , { max : 200 } ) ) {
235+ errorFields . push ( 'lastname' ) ;
236+ out [ 'lastname' ] = 'Limit of 200 characters for this field exceeded' ;
237+ }
238+ }
239+ if ( field === 'email' ) {
240+ fields [ [ field ] ] = validator . escape ( validator . trim ( value ) ) ;
241+ if ( ! validator . isEmail ( value ) ) {
242+ errorFields . push ( 'email' ) ;
243+ out [ 'email' ] = 'No valid email address' ;
244+ }
245+ if ( ! validator . isLength ( value , { max : 200 } ) ) {
246+ errorFields . push ( 'email' ) ;
247+ out [ 'message' ] = 'Limit of 200 characters for this field exceeded' ;
248+ }
249+ }
250+ if ( field === 'country' ) {
251+ fields [ [ field ] ] = validator . escape ( validator . trim ( value ) ) ;
252+ if ( ! validator . isISO31661Alpha2 ( value ) ) {
253+ errorFields . push ( 'country' ) ;
254+ out [ 'country' ] = 'No valid country code' ;
255+ }
256+ }
257+ if ( field === 'message' ) {
258+ fields [ [ field ] ] = validator . escape ( validator . trim ( value ) ) ;
259+ if ( ! validator . isLength ( value , { max : 500 } ) ) {
260+ errorFields . push ( 'message' ) ;
261+ out [ 'message' ] = 'Limit of 500 characters for this field exceeded' ;
262+ }
263+ }
264+
224265 } ) . on ( 'file' , function ( field , file ) {
225266 files . push ( {
226267 size : file . size ,
0 commit comments