1 const mongoose = require('mongoose')
3 // ---------------------------------------------------------------------------
5 const OAuthTokenSchema = mongoose.Schema({
7 accessTokenExpiresOn: Date,
8 client: { type: mongoose.Schema.Types.ObjectId, ref: 'OAuthClient' },
10 refreshTokenExpiresOn: Date,
11 user: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }
14 OAuthTokenSchema.path('accessToken').required(true)
15 OAuthTokenSchema.path('client').required(true)
16 OAuthTokenSchema.path('user').required(true)
18 OAuthTokenSchema.statics = {
19 loadByRefreshToken: loadByRefreshToken,
20 loadByTokenAndPopulateUser: loadByTokenAndPopulateUser
23 mongoose.model('OAuthToken', OAuthTokenSchema)
25 // ---------------------------------------------------------------------------
27 function loadByRefreshToken (refreshToken, callback) {
28 return this.findOne({ refreshToken: refreshToken }, callback)
31 function loadByTokenAndPopulateUser (bearerToken, callback) {
32 // FIXME: allow to use callback
33 return this.findOne({ accessToken: bearerToken }).populate('user')