]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/models/oauth/oauth-token.ts
Limit associations fetch when loading token
[github/Chocobozzz/PeerTube.git] / server / models / oauth / oauth-token.ts
index 026c301359d9b47e1b477bac2c97013aeb623627..1dd5e02891ebedd98d3da04f2287cf967d5777f7 100644 (file)
@@ -1,8 +1,10 @@
 import { AllowNull, BelongsTo, Column, CreatedAt, ForeignKey, Model, Scopes, Table, UpdatedAt } from 'sequelize-typescript'
 import { logger } from '../../helpers/logger'
-import { AccountModel } from '../account/account'
 import { UserModel } from '../account/user'
 import { OAuthClientModel } from './oauth-client'
+import { Transaction } from 'sequelize'
+import { AccountModel } from '../account/account'
+import { ActorModel } from '../activitypub/actor'
 
 export type OAuthTokenInfo = {
   refreshToken: string
@@ -16,18 +18,27 @@ export type OAuthTokenInfo = {
 }
 
 enum ScopeNames {
-  WITH_ACCOUNT = 'WITH_ACCOUNT'
+  WITH_USER = 'WITH_USER'
 }
 
 @Scopes({
-  [ScopeNames.WITH_ACCOUNT]: {
+  [ScopeNames.WITH_USER]: {
     include: [
       {
-        model: () => UserModel,
+        model: () => UserModel.unscoped(),
+        required: true,
         include: [
           {
-            model: () => AccountModel,
-            required: true
+            attributes: [ 'id' ],
+            model: () => AccountModel.unscoped(),
+            required: true,
+            include: [
+              {
+                attributes: [ 'id' ],
+                model: () => ActorModel.unscoped(),
+                required: true
+              }
+            ]
           }
         ]
       }
@@ -125,7 +136,7 @@ export class OAuthTokenModel extends Model<OAuthTokenModel> {
         } as OAuthTokenInfo
       })
       .catch(err => {
-        logger.info('getRefreshToken error.', { err })
+        logger.error('getRefreshToken error.', { err })
         throw err
       })
   }
@@ -137,7 +148,7 @@ export class OAuthTokenModel extends Model<OAuthTokenModel> {
       }
     }
 
-    return OAuthTokenModel.scope(ScopeNames.WITH_ACCOUNT).findOne(query).then(token => {
+    return OAuthTokenModel.scope(ScopeNames.WITH_USER).findOne(query).then(token => {
       if (token) token['user'] = token.User
 
       return token
@@ -151,7 +162,7 @@ export class OAuthTokenModel extends Model<OAuthTokenModel> {
       }
     }
 
-    return OAuthTokenModel.scope(ScopeNames.WITH_ACCOUNT)
+    return OAuthTokenModel.scope(ScopeNames.WITH_USER)
       .findOne(query)
       .then(token => {
         if (token) {
@@ -163,11 +174,12 @@ export class OAuthTokenModel extends Model<OAuthTokenModel> {
       })
   }
 
-  static deleteUserToken (userId: number) {
+  static deleteUserToken (userId: number, t?: Transaction) {
     const query = {
       where: {
         userId
-      }
+      },
+      transaction: t
     }
 
     return OAuthTokenModel.destroy(query)