Guest User

Untitled

a guest
Feb 17th, 2018
307
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. {
  2. "_id": {
  3. "$oid": "5a880c0ca48be2060035cb97"
  4. },
  5. "email": «example@gmail.com",
  6. "name": «IV",
  7. "password": "$2a$10$bozaPRj2K7rcS8ZkmO9TkOUFKgCqKFD3C3nB7iB04JtYIkS8z1Kxe",
  8. "__v": 0
  9. }
  10.  
  11. var mongoose = require('mongoose');
  12.  
  13. var CounterSchema = new mongoose.Schema({
  14. _id: { type: String, required: true },
  15. seq: { type: Number, default: 0 }
  16. });
  17.  
  18. var userCounter = mongoose.model('userCounter', CounterSchema);
  19.  
  20. module.exports = userCounter;
  21.  
  22. var mongoose = require('mongoose');
  23. var bcrypt = require('bcrypt');
  24. var userCounter = require('../models/counter');
  25.  
  26. var UserSchema = new mongoose.Schema({
  27. email: {
  28. type: String,
  29. unique: true,
  30. required: true,
  31. trim: true
  32. },
  33. name: {
  34. type: String,
  35. required: true,
  36. trim: true
  37. },
  38. password: {
  39. type: String,
  40. required: true,
  41. }
  42.  
  43. });
  44.  
  45. //authenticate input against database documents
  46. UserSchema.statics.authenticate = function(email, password, callback) {
  47. User.findOne({ email: email })
  48. .exec(function(error, user) {
  49. if (error) {
  50. return callback(error);
  51. } else if (!user) {
  52. var err = new Error('User not found.')
  53. err.status = 401;
  54. return callback(err);
  55. }
  56. bcrypt.compare(password, user.password, function(error, result) {
  57. if (result === true) {
  58. return callback(null, user);
  59. } else {
  60. return callback();
  61. }
  62. })
  63. });
  64. }
  65.  
  66. //hash password before saving to database
  67. UserSchema.pre('save', function(next) {
  68. var user = this;
  69. bcrypt.hash(user.password, 10, function(err, hash) {
  70. if (err) {
  71. next(err);
  72. }
  73. user.password = hash;
  74. next();
  75. });
  76. }, function(next) {
  77. var user = this;
  78. userCounter.findByIdAndUpdate({ _id: 'entityId' }, { $inc: { seq: 1 } }, function(error, counter) {
  79. if (error)
  80. return next(error);
  81. user._id = userCounter.seq;
  82. next();
  83. });
  84. });
  85.  
  86.  
  87.  
  88. var User = mongoose.model('User', UserSchema);
  89.  
  90. module.exports = User;
  91.  
  92. var express = require('express');
  93. var User = require('../models/user’);
  94. // POST /register
  95. router.post('/register', function(req, res, next) {
  96. if (req.body.email &&
  97. req.body.name &&
  98. req.body.password &&
  99. req.body.confirmPassword) {
  100.  
  101. // confirm that user typed same password twice
  102. if (req.body.password !== req.body.confirmPassword) {
  103. var err = new Error('Passwords do not match.')
  104. err.status = 400;
  105. return next(err);
  106. }
  107.  
  108. // create object with form input
  109. var userData = {
  110. email: req.body.email,
  111. name: req.body.name,
  112. password: req.body.password
  113. };
  114.  
  115. //use schema's 'create' method to insert document into Mongo
  116. User.create(userData, function(error, user) {
  117. if (error) {
  118. return next(error);
  119. } else {
  120. return res.redirect('/login');
  121. }
  122. });
  123.  
  124. } else {
  125. var err = new Error('All fields required.')
  126. err.status = 400;
  127. return next(err);
  128. }
  129. });
Add Comment
Please, Sign In to add comment