49 lines
1022 B
JavaScript
49 lines
1022 B
JavaScript
var mongoose = require('mongoose');
|
|
var Schema = mongoose.Schema;
|
|
var bcrypt = require('bcrypt-nodejs');
|
|
|
|
var UserSchema = new Schema({
|
|
username: {
|
|
type: String,
|
|
unique: true,
|
|
required: true
|
|
},
|
|
password: {
|
|
type: String,
|
|
required: true
|
|
}
|
|
});
|
|
|
|
UserSchema.statics.findOrCreate = require("find-or-create");
|
|
|
|
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, null, 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);
|