1+ const UserModel = require ( "../models/UserModel" ) ;
2+ const { body, validationResult } = require ( 'express-validator/check' ) ;
3+ const { sanitizeBody } = require ( 'express-validator/filter' ) ;
4+ var apiResponse = require ( '../helpers/apiResponse' ) ;
5+
6+ exports . register = [
7+ // Validate fields.
8+ body ( 'firstName' ) . isLength ( { min : 1 } ) . trim ( ) . withMessage ( 'First name must be specified.' )
9+ . isAlphanumeric ( ) . withMessage ( 'First name has non-alphanumeric characters.' ) ,
10+ body ( 'lastName' ) . isLength ( { min : 1 } ) . trim ( ) . withMessage ( 'Last name must be specified.' )
11+ . isAlphanumeric ( ) . withMessage ( 'Last name has non-alphanumeric characters.' ) ,
12+ body ( 'email' ) . isLength ( { min : 1 } ) . trim ( ) . withMessage ( 'Email must be specified.' )
13+ . isEmail ( ) . withMessage ( 'Email must be a valid email address.' ) ,
14+ body ( 'password' ) . isLength ( { min : 6 } ) . trim ( ) . withMessage ( 'Password must be 6 characters or greater.' ) ,
15+ // Sanitize fields.
16+ sanitizeBody ( 'firstName' ) . escape ( ) ,
17+ sanitizeBody ( 'lastName' ) . escape ( ) ,
18+ sanitizeBody ( 'email' ) . escape ( ) ,
19+ sanitizeBody ( 'password' ) . escape ( ) ,
20+ // Process request after validation and sanitization.
21+ ( req , res , next ) => {
22+ try {
23+ // Extract the validation errors from a request.
24+ const errors = validationResult ( req ) ;
25+ // Create User object with escaped and trimmed data
26+ var user = new UserModel (
27+ {
28+ firstName : req . body . firstName ,
29+ lastName : req . body . lastName ,
30+ email : req . body . email ,
31+ password : req . body . password ,
32+ }
33+ ) ;
34+ if ( ! errors . isEmpty ( ) ) {
35+ // Display sanitized values/errors messages.
36+ return apiResponse . validationErrorWithData ( res , 'Validation Error.' , errors . array ( ) ) ;
37+ } else {
38+ // Save user.
39+ user . save ( function ( err ) {
40+ if ( err ) { return apiResponse . ErrorResponse ( res , err ) ; }
41+ return apiResponse . successResponseWithData ( res , 'Registration Success.' , user ) ;
42+ } ) ;
43+ return ;
44+ }
45+ } catch ( err ) {
46+ return apiResponse . ErrorResponse ( res , err ) ;
47+ }
48+ } ] ;
0 commit comments