Skip to content

Instantly share code, notes, and snippets.

@timstermatic
Created May 20, 2013 17:29
Show Gist options
  • Save timstermatic/5613771 to your computer and use it in GitHub Desktop.
Save timstermatic/5613771 to your computer and use it in GitHub Desktop.
Example of using bcrypt with mongoose middleware to enforce password hashing with bcrypt on save.
var mongoose = require('mongoose'),
Schema = mongoose.Schema
var bcrypt = require('bcrypt')
var UserSchema = new Schema( {
email: String,
password: String
} )
// pre
UserSchema.pre('save', function(next) {
if(this.password) {
var salt = bcrypt.genSaltSync(10)
this.password = bcrypt.hashSync(this.password, salt)
}
next()
})
mongoose.model('User', UserSchema);
@Smartfab
Copy link

Smartfab commented Jul 19, 2024

For anybody who might need this for readability and clarity, better to use "isModified" so that when the password is updated, we don't have to re-hash again multiple times.

userSchema.pre("save", async function(next){
if(this.isModified("password")){
this.password = await bcrypt.hash(this.password, 8)
}
next();
});

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment