import { ActorModel } from '../activitypub/actor'
import { clearCacheByToken } from '../../lib/oauth-model'
import * as Bluebird from 'bluebird'
-import { MOAuthTokenUser } from '@server/typings/models/oauth/oauth-token'
+import { MOAuthTokenUser } from '@server/types/models/oauth/oauth-token'
export type OAuthTokenInfo = {
refreshToken: string
- refreshTokenExpiresAt: Date,
+ refreshTokenExpiresAt: Date
client: {
id: number
- },
+ }
user: {
id: number
}
+ token: MOAuthTokenUser
}
enum ScopeNames {
@Column
refreshTokenExpiresAt: Date
+ @Column
+ authName: string
+
@CreatedAt
createdAt: Date
return clearCacheByToken(token.accessToken)
}
+ static loadByRefreshToken (refreshToken: string) {
+ const query = {
+ where: { refreshToken }
+ }
+
+ return OAuthTokenModel.findOne(query)
+ }
+
static getByRefreshTokenAndPopulateClient (refreshToken: string) {
const query = {
where: {
- refreshToken: refreshToken
+ refreshToken
},
include: [ OAuthClientModel ]
}
- return OAuthTokenModel.findOne(query)
- .then(token => {
- if (!token) return null
-
- return {
- refreshToken: token.refreshToken,
- refreshTokenExpiresAt: token.refreshTokenExpiresAt,
- client: {
- id: token.oAuthClientId
- },
- user: {
- id: token.userId
- }
- } as OAuthTokenInfo
- })
- .catch(err => {
- logger.error('getRefreshToken error.', { err })
- throw err
- })
+ return OAuthTokenModel.scope(ScopeNames.WITH_USER)
+ .findOne(query)
+ .then(token => {
+ if (!token) return null
+
+ return {
+ refreshToken: token.refreshToken,
+ refreshTokenExpiresAt: token.refreshTokenExpiresAt,
+ client: {
+ id: token.oAuthClientId
+ },
+ user: token.User,
+ token
+ } as OAuthTokenInfo
+ })
+ .catch(err => {
+ logger.error('getRefreshToken error.', { err })
+ throw err
+ })
}
static getByTokenAndPopulateUser (bearerToken: string): Bluebird<MOAuthTokenUser> {
static getByRefreshTokenAndPopulateUser (refreshToken: string): Bluebird<MOAuthTokenUser> {
const query = {
where: {
- refreshToken: refreshToken
+ refreshToken
}
}
return OAuthTokenModel.scope(ScopeNames.WITH_USER)
.findOne(query)
.then(token => {
- if (!token) return new OAuthTokenModel()
+ if (!token) return undefined
return Object.assign(token, { user: token.User })
})