1 import { logger } from '../helpers'
3 // ---------------------------------------------------------------------------
5 module.exports = function (sequelize, DataTypes) {
6 const OAuthToken = sequelize.define('OAuthToken',
9 type: DataTypes.STRING,
12 accessTokenExpiresAt: {
17 type: DataTypes.STRING,
20 refreshTokenExpiresAt: {
28 fields: [ 'refreshToken' ],
32 fields: [ 'accessToken' ],
39 fields: [ 'oAuthClientId' ]
45 getByRefreshTokenAndPopulateClient,
46 getByTokenAndPopulateUser,
47 getByRefreshTokenAndPopulateUser,
56 // ---------------------------------------------------------------------------
58 function associate (models) {
59 this.belongsTo(models.User, {
67 this.belongsTo(models.OAuthClient, {
69 name: 'oAuthClientId',
76 function getByRefreshTokenAndPopulateClient (refreshToken) {
79 refreshToken: refreshToken
81 include: [ this.associations.OAuthClient ]
84 return this.findOne(query).then(function (token) {
85 if (!token) return token
88 refreshToken: token.refreshToken,
89 refreshTokenExpiresAt: token.refreshTokenExpiresAt,
99 }).catch(function (err) {
100 logger.info('getRefreshToken error.', { error: err })
104 function getByTokenAndPopulateUser (bearerToken) {
107 accessToken: bearerToken
109 include: [ this.sequelize.models.User ]
112 return this.findOne(query).then(function (token) {
113 if (token) token.user = token.User
119 function getByRefreshTokenAndPopulateUser (refreshToken) {
122 refreshToken: refreshToken
124 include: [ this.sequelize.models.User ]
127 return this.findOne(query).then(function (token) {
128 token.user = token.User
134 function removeByUserId (userId, callback) {
141 return this.destroy(query).asCallback(callback)