const mongoose = require('mongoose'); const Session = mongoose.Schema({ refreshToken: { type: String, default: '', }, }); const userSchema = mongoose.Schema( { name: { type: String, }, username: { type: String, lowercase: true, default: '', }, email: { type: String, required: [true, 'can\'t be blank'], lowercase: true, unique: true, match: [/\S+@\S+\.\S+/, 'is invalid'], index: true, }, emailVerified: { type: Boolean, required: true, default: false, }, password: { type: String, trim: true, minlength: 8, maxlength: 128, }, avatar: { type: String, required: false, }, provider: { type: String, required: true, default: 'local', }, role: { type: String, default: 'USER', }, googleId: { type: String, unique: true, sparse: true, }, facebookId: { type: String, unique: true, sparse: true, }, openidId: { type: String, unique: true, sparse: true, }, githubId: { type: String, unique: true, sparse: true, }, discordId: { type: String, unique: true, sparse: true, }, plugins: { type: Array, default: [], }, refreshToken: { type: [Session], }, }, { timestamps: true }, ); module.exports = userSchema;