UNPKG

umpack-express

Version:

user management pack for express framework app

69 lines (55 loc) 1.7 kB
var mongoose = require('mongoose'); var Promise = require('bluebird'); var Password = require('../domain/password'); var UserName = require('../domain/userName'); mongoose.Promise = require('bluebird'); var defaultUserName = 'root'; var UserSchema = new mongoose.Schema({ userName: String, password: String, firstName: String, lastName: String, email: String, phone: String, address: String, additionalInfo: String, isActivated: Boolean, roles: [String], metaData: {}, lastPasswordResetDate: Date }, { usePushEach: true }); UserSchema.statics.findByUserName = function(userName) { return this.findOne({ 'userName': userName.toString() }).exec(); }; UserSchema.statics.createDefaultUser = function(password) { return new this({ userName: defaultUserName, password: password.hash, isActivated: true, roles: ['admin'] }); }; UserSchema.statics.initAndSaveDefaultUser = function(passwordText) { return this.findByUserName(defaultUserName) .then(function(user) { if (user) return; var password = new Password(passwordText); return this.createDefaultUser(password).save() .then(function() { return password; }); }.bind(this)); }; UserSchema.methods.setNewPassword = function(password) { this.password = password.hash; }; UserSchema.methods.hasSamePassword = function(password) { return this.password === password.hash; }; UserSchema.methods.resetNewPassword = function(password) { this.password = password.hash; this.lastPasswordResetDate = new Date(); }; module.exports = mongoose.model('user', UserSchema);