55 lines
1.2 KiB
JavaScript
55 lines
1.2 KiB
JavaScript
'use strict';
|
|
|
|
var mongoose = require('mongoose');
|
|
var bcrypt = require('bcrypt');
|
|
var Schema = mongoose.Schema;
|
|
|
|
var MerchantSchema = new Schema({
|
|
name: String,
|
|
password: String,
|
|
merchant_email: {
|
|
type: String,
|
|
index: { unique: true }
|
|
},
|
|
merchant_name: String,
|
|
language: String,
|
|
street: String,
|
|
street_2: String,
|
|
city: String,
|
|
province: String,
|
|
postal_code: String,
|
|
country: String,
|
|
telephone: String,
|
|
cellular: String,
|
|
telephone_other: String,
|
|
number: Number
|
|
}, {timestamps: true});
|
|
|
|
MerchantSchema.methods.comparePassword = function comparePassword(password, callback) {
|
|
bcrypt.compare(password, this.password, callback);
|
|
};
|
|
|
|
MerchantSchema.pre('save', function saveHook(next) {
|
|
let user = this;
|
|
|
|
// proceed only if password is modified or the user is new
|
|
if (!user.isModified('password')) {
|
|
return next();
|
|
}
|
|
|
|
return bcrypt.genSalt((saltError, salt) => {
|
|
if (saltError) {
|
|
return next(saltError);
|
|
}
|
|
return bcrypt.hash(user.password, salt, (hashError, hash) => {
|
|
if (hashError) {
|
|
return next(hashError);
|
|
}
|
|
// Replace password string with hash value
|
|
user.password = hash;
|
|
return next();
|
|
});
|
|
});
|
|
});
|
|
|
|
module.exports = mongoose.model('Merchant', MerchantSchema);
|