UNPKG

@iredium/butterfly

Version:
44 lines (43 loc) 1.42 kB
"use strict"; 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);