UNPKG

eyght-models

Version:

Models for eyght

62 lines (54 loc) 3.04 kB
let mongoose = require('mongoose'), Bcrypt = require('bcrypt-nodejs'); let eygUserSchema = new mongoose.Schema({ name: { first: {type: 'String', required: true, meta: {writableBy: ['5a6f719e4c4be84b52c1ecc3']}}, middle: {type: 'String', meta: {writableBy: ['5a6f719e4c4be84b52c1ecc3']}}, last: {type: 'String', required: true, meta: {writableBy: ['5a6f719e4c4be84b52c1ecc3']}} }, password: {type: 'String', required: true, meta: {writableBy: ['5a6f719e4c4be84b52c1ecc3']}}, token: {type: 'String'}, addr1: {type: 'String', meta: {writableBy: ['5a6f719e4c4be84b52c1ecc3']}}, addr2: {type: 'String', meta: {writableBy: ['5a6f719e4c4be84b52c1ecc3']}}, addr3: {type: 'String', meta: {writableBy: ['5a6f719e4c4be84b52c1ecc3']}}, city: {type: 'String', meta: {writableBy: ['5a6f719e4c4be84b52c1ecc3']}}, stProv: {type: 'String', meta: {writableBy: ['5a6f719e4c4be84b52c1ecc3']}}, zip: {type: 'String', meta: {writableBy: ['5a6f719e4c4be84b52c1ecc3']}}, ctryID: {type: mongoose.Schema.Types.ObjectId, ref: 'genCtry', meta: {writableBy: ['5a6f719e4c4be84b52c1ecc3']}}, langID: {type: mongoose.Schema.Types.ObjectId, ref: 'genLang', meta: {writableBy: ['5a6f719e4c4be84b52c1ecc3']}}, phone: {type: 'String', meta: {writableBy: ['5a6f719e4c4be84b52c1ecc3']}}, email: {type: 'String', required: true, unique: true, match: [/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/, 'server.errors.match.email'], meta: {writableBy: ['5a6f719e4c4be84b52c1ecc3']}}, emailTypeID: {type: mongoose.Schema.Types.ObjectId, ref: 'genEmailType', required: true, meta: {writableBy: ['5a6f719e4c4be84b52c1ecc3']}}, clientInfo: [{ clientID: {type: mongoose.Schema.Types.ObjectId, ref: 'eygClient'}, clientUserID: {type: 'String'} }], roles: [{type: mongoose.Schema.Types.ObjectId, ref: 'eygRole', required: true}], lastClientViewedID: {type: mongoose.Schema.Types.ObjectId, ref: 'eygClient', meta: {writableBy: ['5a6f719e4c4be84b52c1ecc3']}}, lastPgViewed: {type: 'String'}, lastLoginDt: {type: 'Date'}, active: {type: 'Boolean', required: true}, inactDt: {type: 'Date'}, //store all dates in utc inactRsnID: {type: mongoose.Schema.Types.ObjectId, ref: 'genInactRsn'} }, {timestamps: true}); eygUserSchema.methods.generateHash = (password) => { return new Promise((resolve, reject) => { Bcrypt.genSalt(10, function (err, salt) { if (err) return reject(err); Bcrypt.hash(password, salt, null, (err, hash) => { if (err) return reject(err); password = hash; return resolve(password); }); }); }); }; eygUserSchema.methods.validatePassword = (password, passwordToCompare) => { return new Promise((resolve, reject) => { Bcrypt.compare(password, passwordToCompare, (err, isMatch) => { if (err) return reject(err); else return resolve(isMatch); }); }); }; module.exports = mongoose.model('eygUser', eygUserSchema, 'eygUser');