1 const logger
= require('../helpers/logger')
3 // ---------------------------------------------------------------------------
5 module
.exports = function (sequelize
, DataTypes
) {
6 const OAuthToken
= sequelize
.define('OAuthToken',
11 accessTokenExpiresAt: {
15 type: DataTypes
.STRING
17 refreshTokenExpiresAt: {
25 getByRefreshTokenAndPopulateClient
,
26 getByTokenAndPopulateUser
,
27 getByRefreshTokenAndPopulateUser
,
37 // OAuthTokenSchema.path('accessToken').required(true)
38 // OAuthTokenSchema.path('client').required(true)
39 // OAuthTokenSchema.path('user').required(true)
41 // ---------------------------------------------------------------------------
43 function associate (models
) {
44 this.belongsTo(models
.User
, {
53 function getByRefreshTokenAndPopulateClient (refreshToken
) {
56 refreshToken: refreshToken
58 include: [ this.associations
.OAuthClient
]
61 return this.findOne(query
).then(function (token
) {
62 if (!token
) return token
65 refreshToken: token
.refreshToken
,
66 refreshTokenExpiresAt: token
.refreshTokenExpiresAt
,
76 }).catch(function (err
) {
77 logger
.info('getRefreshToken error.', { error: err
})
81 function getByTokenAndPopulateUser (bearerToken
) {
84 accessToken: bearerToken
86 include: [ this.sequelize
.models
.User
]
89 return this.findOne(query
).then(function (token
) {
90 if (token
) token
.user
= token
.User
96 function getByRefreshTokenAndPopulateUser (refreshToken
) {
99 refreshToken: refreshToken
101 include: [ this.sequelize
.models
.User
]
104 return this.findOne(query
).then(function (token
) {
105 token
.user
= token
.User
111 function removeByUserId (userId
, callback
) {
118 return this.destroy(query
).asCallback(callback
)