1 const mongoose
= require('mongoose')
3 const logger
= require('../helpers/logger')
5 // ---------------------------------------------------------------------------
7 const OAuthTokenSchema
= mongoose
.Schema({
9 accessTokenExpiresAt: Date
,
10 client: { type: mongoose
.Schema
.Types
.ObjectId
, ref: 'OAuthClient' },
12 refreshTokenExpiresAt: Date
,
13 user: { type: mongoose
.Schema
.Types
.ObjectId
, ref: 'User' }
16 OAuthTokenSchema
.path('accessToken').required(true)
17 OAuthTokenSchema
.path('client').required(true)
18 OAuthTokenSchema
.path('user').required(true)
20 OAuthTokenSchema
.statics
= {
21 getByRefreshTokenAndPopulateClient: getByRefreshTokenAndPopulateClient
,
22 getByTokenAndPopulateUser: getByTokenAndPopulateUser
,
23 getByRefreshToken: getByRefreshToken
,
24 removeByUserId: removeByUserId
27 mongoose
.model('OAuthToken', OAuthTokenSchema
)
29 // ---------------------------------------------------------------------------
31 function getByRefreshTokenAndPopulateClient (refreshToken
) {
32 return this.findOne({ refreshToken: refreshToken
}).populate('client').exec().then(function (token
) {
33 if (!token
) return token
36 refreshToken: token
.refreshToken
,
37 refreshTokenExpiresAt: token
.refreshTokenExpiresAt
,
39 id: token
.client
._id
.toString()
45 }).catch(function (err
) {
46 logger
.info('getRefreshToken error.', { error: err
})
50 function getByTokenAndPopulateUser (bearerToken
) {
51 return this.findOne({ accessToken: bearerToken
}).populate('user').exec()
54 function getByRefreshToken (refreshToken
) {
55 return this.findOne({ refreshToken: refreshToken
}).exec()
58 function removeByUserId (userId
, callback
) {
59 return this.remove({ user: userId
}, callback
)