text: const mongoose = require('mongoose');
  const crypto = require('crypto');
  
  const userSchema = new mongoose.Schema({
    name: {
      type: String,
      trim: true,
      required: true,
      unique: false,
      index: true
    },
    email: {
      type: String,
      trim: true,
      required: true,
      unique: true,
      index: true,
      lowerCase: true
    },
  //   profile:{
  //       type:String,
  //       required: true
  //   },
    hashed_password:{
        type: String,
        required: true
    },
    salt: String,
  
  });
  
  userSchema.virtual('password')
     .set(function(password){
         //create a temp password
         this._password = password
         //generate salt
         this.salt = this.makeSalt();
         //encriptPassword
         this.hashed_password = this.encryptPassword(password);
  
  })
  .get(function(){
      return this._password;
  })
  
  userSchema.methods = {
          authenticate:function(plainText){
              return this.encryptPassword(plainText)=== this.hashed_password;
          },
  
  
      encryptPassword:function(password){
          if(!password)return'';
          try{
              return crypto
              .createHmac('sha1',this.salt)
              .update(password)
              .digest('hex');
          }catch(err){
              return '';
          }
      },
  
      makeSalt:function(){
          return Math.round(new Date().valueOf()*Math.random())+'';
      }
  }
  module.exports = mongoose.model('user',userSchema);