50 lines
1.2 KiB
JavaScript
50 lines
1.2 KiB
JavaScript
const mongoose = require('mongoose')
|
|
const ObjectID = mongoose.Schema.Types.ObjectId
|
|
const validator = require('validator')
|
|
|
|
const userSchema = new mongoose.Schema(
|
|
{
|
|
name: String,
|
|
email: {
|
|
type: String,
|
|
lowercase: true,
|
|
required: true,
|
|
validate: [validator.isEmail, 'Please provide a valid email'],
|
|
},
|
|
emailUnique: {
|
|
type: String,
|
|
default: function () {
|
|
return this.email || `no-email-${this._id}`
|
|
},
|
|
},
|
|
password: {
|
|
type: String,
|
|
required: true,
|
|
trim: true,
|
|
min: 8,
|
|
select: false,
|
|
},
|
|
passwordChangedAt: Date,
|
|
passwordResetToken: String,
|
|
passwordResetExpires: Date,
|
|
isActive: {
|
|
type: Boolean,
|
|
default: true,
|
|
},
|
|
role: {
|
|
type: ObjectID,
|
|
ref: 'Role',
|
|
required: true
|
|
},
|
|
isAdmin: {
|
|
type: Boolean,
|
|
default: false,
|
|
},
|
|
},
|
|
{ toJSON: { virtuals: true }, toObject: { virtuals: true }, timestamps: true }
|
|
)
|
|
|
|
const User = mongoose.model('User', userSchema)
|
|
|
|
module.exports = User
|