]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/models/oauth/oauth-token.ts
Use ISO 639 for languages
[github/Chocobozzz/PeerTube.git] / server / models / oauth / oauth-token.ts
index 0d21c42fd26a31f02cca7718fdd73d27af5d0b87..759aa27797aa16efb555a1d7b7fa85c1299dbf55 100644 (file)
@@ -1,5 +1,5 @@
-import { AllowNull, BelongsTo, Column, CreatedAt, ForeignKey, Model, Table, UpdatedAt } from 'sequelize-typescript'
-import { logger } from '../../helpers'
+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'
@@ -15,6 +15,25 @@ export type OAuthTokenInfo = {
   }
 }
 
+enum ScopeNames {
+  WITH_ACCOUNT = 'WITH_ACCOUNT'
+}
+
+@Scopes({
+  [ScopeNames.WITH_ACCOUNT]: {
+    include: [
+      {
+        model: () => UserModel,
+        include: [
+          {
+            model: () => AccountModel,
+            required: true
+          }
+        ]
+      }
+    ]
+  }
+})
 @Table({
   tableName: 'oAuthToken',
   indexes: [
@@ -106,7 +125,7 @@ export class OAuthTokenModel extends Model<OAuthTokenModel> {
         } as OAuthTokenInfo
       })
       .catch(err => {
-        logger.info('getRefreshToken error.', err)
+        logger.info('getRefreshToken error.', { err })
         throw err
       })
   }
@@ -115,21 +134,10 @@ export class OAuthTokenModel extends Model<OAuthTokenModel> {
     const query = {
       where: {
         accessToken: bearerToken
-      },
-      include: [
-        {
-          model: UserModel,
-          include: [
-            {
-              model: AccountModel,
-              required: true
-            }
-          ]
-        }
-      ]
+      }
     }
 
-    return OAuthTokenModel.findOne(query).then(token => {
+    return OAuthTokenModel.scope(ScopeNames.WITH_ACCOUNT).findOne(query).then(token => {
       if (token) token['user'] = token.User
 
       return token
@@ -140,24 +148,25 @@ export class OAuthTokenModel extends Model<OAuthTokenModel> {
     const query = {
       where: {
         refreshToken: refreshToken
-      },
-      include: [
-        {
-          model: UserModel,
-          include: [
-            {
-              model: AccountModel,
-              required: true
-            }
-          ]
-        }
-      ]
+      }
     }
 
-    return OAuthTokenModel.findOne(query).then(token => {
-      token['user'] = token.User
+    return OAuthTokenModel.scope(ScopeNames.WITH_ACCOUNT)
+      .findOne(query)
+      .then(token => {
+        token['user'] = token.User
 
-      return token
-    })
+        return token
+      })
+  }
+
+  static deleteUserToken (userId: number) {
+    const query = {
+      where: {
+        userId
+      }
+    }
+
+    return OAuthTokenModel.destroy(query)
   }
 }