]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/models/oauth/oauth-token.ts
Merge branch 'release/2.1.0' into develop
[github/Chocobozzz/PeerTube.git] / server / models / oauth / oauth-token.ts
index ef9592c04fc50d9dfbcdf59ce8036c034c41c044..d2101ce86f9cb4ddfa668890537cc7ac313357f3 100644 (file)
@@ -1,5 +1,5 @@
 import {
-  AfterDelete,
+  AfterDestroy,
   AfterUpdate,
   AllowNull,
   BelongsTo,
@@ -18,13 +18,15 @@ 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'
 
 export type OAuthTokenInfo = {
   refreshToken: string
-  refreshTokenExpiresAt: Date,
+  refreshTokenExpiresAt: Date
   client: {
     id: number
-  },
+  }
   user: {
     id: number
   }
@@ -34,21 +36,21 @@ enum ScopeNames {
   WITH_USER = 'WITH_USER'
 }
 
-@Scopes({
+@Scopes(() => ({
   [ScopeNames.WITH_USER]: {
     include: [
       {
-        model: () => UserModel.unscoped(),
+        model: UserModel.unscoped(),
         required: true,
         include: [
           {
             attributes: [ 'id' ],
-            model: () => AccountModel.unscoped(),
+            model: AccountModel.unscoped(),
             required: true,
             include: [
               {
-                attributes: [ 'id' ],
-                model: () => ActorModel.unscoped(),
+                attributes: [ 'id', 'url' ],
+                model: ActorModel.unscoped(),
                 required: true
               }
             ]
@@ -57,7 +59,7 @@ enum ScopeNames {
       }
     ]
   }
-})
+}))
 @Table({
   tableName: 'oAuthToken',
   indexes: [
@@ -126,7 +128,7 @@ export class OAuthTokenModel extends Model<OAuthTokenModel> {
   OAuthClients: OAuthClientModel[]
 
   @AfterUpdate
-  @AfterDelete
+  @AfterDestroy
   static removeTokenCache (token: OAuthTokenModel) {
     return clearCacheByToken(token.accessToken)
   }
@@ -160,21 +162,23 @@ export class OAuthTokenModel extends Model<OAuthTokenModel> {
       })
   }
 
-  static getByTokenAndPopulateUser (bearerToken: string) {
+  static getByTokenAndPopulateUser (bearerToken: string): Bluebird<MOAuthTokenUser> {
     const query = {
       where: {
         accessToken: bearerToken
       }
     }
 
-    return OAuthTokenModel.scope(ScopeNames.WITH_USER).findOne(query).then(token => {
-      if (token) token['user'] = token.User
+    return OAuthTokenModel.scope(ScopeNames.WITH_USER)
+                          .findOne(query)
+                          .then(token => {
+                            if (!token) return null
 
-      return token
-    })
+                            return Object.assign(token, { user: token.User })
+                          })
   }
 
-  static getByRefreshTokenAndPopulateUser (refreshToken: string) {
+  static getByRefreshTokenAndPopulateUser (refreshToken: string): Bluebird<MOAuthTokenUser> {
     const query = {
       where: {
         refreshToken: refreshToken
@@ -184,12 +188,9 @@ export class OAuthTokenModel extends Model<OAuthTokenModel> {
     return OAuthTokenModel.scope(ScopeNames.WITH_USER)
       .findOne(query)
       .then(token => {
-        if (token) {
-          token['user'] = token.User
-          return token
-        } else {
-          return new OAuthTokenModel()
-        }
+        if (!token) return new OAuthTokenModel()
+
+        return Object.assign(token, { user: token.User })
       })
   }