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