@iredium/butterfly
Version:
Express API Framework
44 lines (43 loc) • 1.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.User = void 0;
var created_1 = require("../../events/users/created");
var schema_1 = require("./schema");
var hash_password_1 = require("../../helpers/hash_password");
var mongoose = require("mongoose");
var helpers_1 = require("../../helpers");
var events_1 = require("../../events");
schema_1.Schema.methods.fullName = function () {
return (this.firstName.trim() + ' ' + this.lastName.trim());
};
schema_1.Schema.methods.isAdmin = function () {
var roles = ['admin', 'root'];
return roles.includes(this.role);
};
schema_1.Schema.methods.isRoot = function () {
return this.role === 'root';
};
schema_1.Schema.methods.comparePassword = function (candidatePassword) {
return helpers_1.compareHash(candidatePassword, this.password);
};
schema_1.Schema.pre('save', function (next) {
var user = this;
var password = user['password'];
if (!user.isModified('password'))
return next();
hash_password_1.hashPassword(password)
.then(function (hash) {
user['password'] = hash;
next();
})
.catch(function (err) {
next(err);
});
});
schema_1.Schema.post('save', function () {
var user = this;
if (user.wasNew) {
events_1.Event.emit(new created_1.UserCreatedEvent(user));
}
});
exports.User = mongoose.model('_User', schema_1.Schema);