3 const logger
= require('../helpers/logger')
5 // ---------------------------------------------------------------------------
7 module
.exports = function (sequelize
, DataTypes
) {
8 const OAuthToken
= sequelize
.define('OAuthToken',
11 type: DataTypes
.STRING
,
14 accessTokenExpiresAt: {
19 type: DataTypes
.STRING
,
22 refreshTokenExpiresAt: {
30 fields: [ 'refreshToken' ],
34 fields: [ 'accessToken' ],
41 fields: [ 'oAuthClientId' ]
47 getByRefreshTokenAndPopulateClient
,
48 getByTokenAndPopulateUser
,
49 getByRefreshTokenAndPopulateUser
,
58 // ---------------------------------------------------------------------------
60 function associate (models
) {
61 this.belongsTo(models
.User
, {
69 this.belongsTo(models
.OAuthClient
, {
71 name: 'oAuthClientId',
78 function getByRefreshTokenAndPopulateClient (refreshToken
) {
81 refreshToken: refreshToken
83 include: [ this.associations
.OAuthClient
]
86 return this.findOne(query
).then(function (token
) {
87 if (!token
) return token
90 refreshToken: token
.refreshToken
,
91 refreshTokenExpiresAt: token
.refreshTokenExpiresAt
,
101 }).catch(function (err
) {
102 logger
.info('getRefreshToken error.', { error: err
})
106 function getByTokenAndPopulateUser (bearerToken
) {
109 accessToken: bearerToken
111 include: [ this.sequelize
.models
.User
]
114 return this.findOne(query
).then(function (token
) {
115 if (token
) token
.user
= token
.User
121 function getByRefreshTokenAndPopulateUser (refreshToken
) {
124 refreshToken: refreshToken
126 include: [ this.sequelize
.models
.User
]
129 return this.findOne(query
).then(function (token
) {
130 token
.user
= token
.User
136 function removeByUserId (userId
, callback
) {
143 return this.destroy(query
).asCallback(callback
)