Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {
- "_id": {
- "$oid": "5a880c0ca48be2060035cb97"
- },
- "email": «example@gmail.com",
- "name": «IV",
- "password": "$2a$10$bozaPRj2K7rcS8ZkmO9TkOUFKgCqKFD3C3nB7iB04JtYIkS8z1Kxe",
- "__v": 0
- }
- var mongoose = require('mongoose');
- var CounterSchema = new mongoose.Schema({
- _id: { type: String, required: true },
- seq: { type: Number, default: 0 }
- });
- var userCounter = mongoose.model('userCounter', CounterSchema);
- module.exports = userCounter;
- var mongoose = require('mongoose');
- var bcrypt = require('bcrypt');
- var userCounter = require('../models/counter');
- var UserSchema = new mongoose.Schema({
- email: {
- type: String,
- unique: true,
- required: true,
- trim: true
- },
- name: {
- type: String,
- required: true,
- trim: true
- },
- password: {
- type: String,
- required: true,
- }
- });
- //authenticate input against database documents
- UserSchema.statics.authenticate = function(email, password, callback) {
- User.findOne({ email: email })
- .exec(function(error, user) {
- if (error) {
- return callback(error);
- } else if (!user) {
- var err = new Error('User not found.')
- err.status = 401;
- return callback(err);
- }
- bcrypt.compare(password, user.password, function(error, result) {
- if (result === true) {
- return callback(null, user);
- } else {
- return callback();
- }
- })
- });
- }
- //hash password before saving to database
- UserSchema.pre('save', function(next) {
- var user = this;
- bcrypt.hash(user.password, 10, function(err, hash) {
- if (err) {
- next(err);
- }
- user.password = hash;
- next();
- });
- }, function(next) {
- var user = this;
- userCounter.findByIdAndUpdate({ _id: 'entityId' }, { $inc: { seq: 1 } }, function(error, counter) {
- if (error)
- return next(error);
- user._id = userCounter.seq;
- next();
- });
- });
- var User = mongoose.model('User', UserSchema);
- module.exports = User;
- var express = require('express');
- var User = require('../models/user’);
- // POST /register
- router.post('/register', function(req, res, next) {
- if (req.body.email &&
- req.body.name &&
- req.body.password &&
- req.body.confirmPassword) {
- // confirm that user typed same password twice
- if (req.body.password !== req.body.confirmPassword) {
- var err = new Error('Passwords do not match.')
- err.status = 400;
- return next(err);
- }
- // create object with form input
- var userData = {
- email: req.body.email,
- name: req.body.name,
- password: req.body.password
- };
- //use schema's 'create' method to insert document into Mongo
- User.create(userData, function(error, user) {
- if (error) {
- return next(error);
- } else {
- return res.redirect('/login');
- }
- });
- } else {
- var err = new Error('All fields required.')
- err.status = 400;
- return next(err);
- }
- });
Add Comment
Please, Sign In to add comment