|
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; |
|
|