1 import { AllowNull, BelongsTo, Column, CreatedAt, ForeignKey, Model, Table, UpdatedAt } from 'sequelize-typescript'
2 import { logger } from '../../helpers'
3 import { AccountModel } from '../account/account'
4 import { UserModel } from '../account/user'
5 import { OAuthClientModel } from './oauth-client'
7 export type OAuthTokenInfo = {
9 refreshTokenExpiresAt: Date,
19 tableName: 'oAuthToken',
22 fields: [ 'refreshToken' ],
26 fields: [ 'accessToken' ],
33 fields: [ 'oAuthClientId' ]
37 export class OAuthTokenModel extends Model<OAuthTokenModel> {
45 accessTokenExpiresAt: Date
53 refreshTokenExpiresAt: Date
61 @ForeignKey(() => UserModel)
65 @BelongsTo(() => UserModel, {
73 @ForeignKey(() => OAuthClientModel)
77 @BelongsTo(() => OAuthClientModel, {
83 OAuthClients: OAuthClientModel[]
85 static getByRefreshTokenAndPopulateClient (refreshToken: string) {
88 refreshToken: refreshToken
90 include: [ OAuthClientModel ]
93 return OAuthTokenModel.findOne(query)
95 if (!token) return null
98 refreshToken: token.refreshToken,
99 refreshTokenExpiresAt: token.refreshTokenExpiresAt,
101 id: token.oAuthClientId
109 logger.info('getRefreshToken error.', err)
114 static getByTokenAndPopulateUser (bearerToken: string) {
117 accessToken: bearerToken
132 return OAuthTokenModel.findOne(query).then(token => {
133 if (token) token['user'] = token.User
139 static getByRefreshTokenAndPopulateUser (refreshToken: string) {
142 refreshToken: refreshToken
157 return OAuthTokenModel.findOne(query).then(token => {
158 token['user'] = token.User