+import { Transaction } from 'sequelize'
import {
AfterDestroy,
AfterUpdate,
Table,
UpdatedAt
} from 'sequelize-typescript'
+import { TokensCache } from '@server/lib/auth/tokens-cache'
+import { MUserAccountId } from '@server/types/models'
+import { MOAuthTokenUser } from '@server/types/models/oauth/oauth-token'
+import { AttributesOnly } from '@shared/typescript-utils'
import { logger } from '../../helpers/logger'
-import { UserModel } from '../account/user'
-import { OAuthClientModel } from './oauth-client'
-import { Transaction } from 'sequelize'
import { AccountModel } from '../account/account'
-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 { ActorModel } from '../actor/actor'
+import { UserModel } from '../user/user'
+import { OAuthClientModel } from './oauth-client'
export type OAuthTokenInfo = {
refreshToken: string
client: {
id: number
}
- user: {
- id: number
- }
+ user: MUserAccountId
token: MOAuthTokenUser
}
}
]
})
-export class OAuthTokenModel extends Model<OAuthTokenModel> {
+export class OAuthTokenModel extends Model<Partial<AttributesOnly<OAuthTokenModel>>> {
@AllowNull(false)
@Column
@AfterUpdate
@AfterDestroy
static removeTokenCache (token: OAuthTokenModel) {
- return clearCacheByToken(token.accessToken)
+ return TokensCache.Instance.clearCacheByToken(token.accessToken)
}
static loadByRefreshToken (refreshToken: string) {
client: {
id: token.oAuthClientId
},
- user: {
- id: token.userId
- },
+ user: token.User,
token
} as OAuthTokenInfo
})
})
}
- static getByTokenAndPopulateUser (bearerToken: string): Bluebird<MOAuthTokenUser> {
+ static getByTokenAndPopulateUser (bearerToken: string): Promise<MOAuthTokenUser> {
const query = {
where: {
accessToken: bearerToken
})
}
- static getByRefreshTokenAndPopulateUser (refreshToken: string): Bluebird<MOAuthTokenUser> {
+ static getByRefreshTokenAndPopulateUser (refreshToken: string): Promise<MOAuthTokenUser> {
const query = {
where: {
refreshToken
}
static deleteUserToken (userId: number, t?: Transaction) {
+ TokensCache.Instance.deleteUserToken(userId)
+
const query = {
where: {
userId