Advertisement
Guest User

Untitled

a guest
Mar 24th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.75 KB | None | 0 0
  1. var express = require('express');
  2. var router = express.Router();
  3. var mongoose = require('mongoose');
  4.  
  5. var User = mongoose.model('Users');
  6.  
  7. var crypto = require('crypto'), hmac, signature;
  8.  
  9. const { check, validationResult } = require('express-validator/check');
  10.  
  11. const { matchedData, sanitize } = require('express-validator/filter');
  12. /* GET home page. */
  13. router.get('/', function(req, res, next) {
  14. res.render('index', { title: 'Express' });
  15. });
  16.  
  17. /* POST user registration page. */
  18. router.post('/register',[
  19.  
  20. check('full_name','Name cannot be left blank')
  21. .isLength({ min: 1 }),
  22.  
  23. check('email')
  24. .isEmail().withMessage('Please enter a valid email address')
  25. .trim()
  26. .normalizeEmail()
  27. .custom(value => {
  28. return findUserByEmail(value).then(User => {
  29. //if user email already exists throw an error
  30. })
  31. }),
  32.  
  33. check('password')
  34. .isLength({ min: 5 }).withMessage('Password must be at least 5 chars long')
  35. .matches(/\d/).withMessage('Password must contain one number')
  36. .custom((value,{req, loc, path}) => {
  37. if (value !== req.body.cpassword) {
  38. // throw error if passwords do not match
  39. throw new Error("Passwords don't match");
  40. } else {
  41. return value;
  42. }
  43. }),
  44.  
  45. check('gender','Please select gender')
  46. .isLength({ min: 1 }),
  47.  
  48. check('dob','Date of birth cannot be left blank')
  49. .isLength({ min: 1 }),
  50.  
  51. check('country','Country cannot be left blank')
  52. .isLength({ min: 1 }),
  53.  
  54. check('terms','Please accept our terms and conditions').equals('yes'),
  55.  
  56. ], function(req, res, next) {
  57.  
  58. const errors = validationResult(req);
  59.  
  60. if (!errors.isEmpty()) {
  61.  
  62. res.json({status : "error", message : errors.array()});
  63.  
  64. } else {
  65.  
  66. hmac = crypto.createHmac("sha1", 'auth secret');
  67. var encpassword = '';
  68.  
  69. if(req.body.password){
  70. hmac.update(req.body.password);
  71. encpassword = hmac.digest("hex");
  72. }
  73. var document = {
  74. full_name: req.body.full_name,
  75. email: req.body.email,
  76. password: encpassword,
  77. dob: req.body.dob,
  78. country: req.body.country,
  79. gender: req.body.gender,
  80. calorie: req.body.calorie,
  81. salt: req.body.salt
  82. };
  83.  
  84. var user = new User(document);
  85. user.save(function(error){
  86. console.log(user);
  87. if(error){
  88. throw error;
  89. }
  90. res.json({message : "Data saved successfully.", status : "success"});
  91. });
  92. }
  93. });
  94.  
  95. function findUserByEmail(email){
  96.  
  97. if(email){
  98. return new Promise((resolve, reject) => {
  99. User.findOne({ email: email })
  100. .exec((err, doc) => {
  101. if (err) return reject(err)
  102. if (doc) return reject(new Error('This email already exists. Please enter another email.'))
  103. else return resolve(email)
  104. })
  105. })
  106. }
  107. }
  108.  
  109.  
  110. module.exports = router;
  111.  
  112.  
  113. var document = {
  114. full_name: req.body.full_name,
  115. email: req.body.email,
  116. password: encpassword,
  117. dob: req.body.dob,
  118. country: req.body.country,
  119. gender: req.body.gender,
  120. calorie: req.body.calorie,
  121. salt: req.body.salt
  122. };
  123.  
  124. var user = new User(document);
  125.  
  126. user.save(function(error){
  127. console.log(user);
  128. if(error){
  129. throw error;
  130. }
  131. res.json({message : "Data saved successfully.", status : "success"});
  132. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement