klnodekb/models/user.js

138 lines
2.2 KiB
JavaScript

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: String,
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);