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)