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)