text: var mongoose = require('mongoose');
  var Schema = mongoose.Schema;
  var bcrypt = require('bcrypt');
  
  // set up a mongoose model
  var UserSchema = new Schema({
      name: {
          type: String,
          unique: false,
          required: true
      },
      firstname: {
          type: String,
          unique: false,
          required: true
      },
      lastname: {
          type: String,
          unique: false,
          required: true
      },
      email: {
          type: String,
          unique: true,
          required: true
      },
      password: {
          type: String,
          required: true
      },
      role: {
          type: String,
          required: true
      }
  });
  
  UserSchema.pre('save', function (next) {
      var user = this;
      if (this.isModified('password') || this.isNew) {
          bcrypt.genSalt(10, function (err, salt) {
              if (err) {
                  return next(err);
              }
              bcrypt.hash(user.password, salt, function (err, hash) {
                  if (err) {
                      return next(err);
                  }
                  user.password = hash;
                  next();
              });
          });
      } else {
          return next();
      }
  });
  
  UserSchema.methods.comparePassword = function (passw, cb) {
      bcrypt.compare(passw, this.password, function (err, isMatch) {
          if (err) {
              return cb(err);
          }
          cb(null, isMatch);
      });
  };
  
  module.exports = mongoose.model('User', UserSchema);