const mongoose = require('mongoose'); const bcrypt = require('bcryptjs'); // User Schema const UserSchema = mongoose.Schema({ chatId:{ type: String, required: true }, name:{ type: String, required: true }, email:{ type: String, required: true }, username:{ type: String, required: true }, auth:{ type: String, required: true }, password:{ type: String, required: true }, isBanned:{ type: Boolean, default: false, required: true }, isAdmin:{ type: Boolean, default: false, required: true }, isEmployee:{ type: Boolean, default: false, required: true }, canAdd:{ user:{ type: Boolean, default: false, required: true }, work:{ type: Boolean, default: false, required: true }, device:{ type: Boolean, default: false, required: true }, files:{ type: Boolean, default: false, required: true } }, canModify:{ user:{ type: Boolean, default: false, required: true }, work:{ type: Boolean, default: false, required: true }, device:{ type: Boolean, default: false, required: true } }, canDelete:{ user:{ type: Boolean, default: false, required: true }, work:{ type: Boolean, default: false, required: true }, device:{ type: Boolean, default: false, required: true }, files:{ type: Boolean, default: false, required: true } }, canDownload:{ type: Boolean, default: false, required: true }, notifyInvoices:{ type: Boolean, default: false, required: true }, canAccess:{ invoices:{ type: Boolean, default: false, required: true }, clients:{ type: Boolean, default: false, required: true } } }); UserSchema.methods.comparePassword = function(candidatePassword, cb) { bcrypt.compare(candidatePassword, this.password, function(err, isMatch) { if (err) return cb(err); cb(null, isMatch); }); }; const User = module.exports = mongoose.model('User', UserSchema);