Split types and typings
[oweals/peertube.git] / server / models / oauth / oauth-token.ts
index e73c4be7d54a8496e09350448bb665cad639f306..7f2313dad169588ca1f8a875acf438e7c3f729b9 100644 (file)
@@ -19,7 +19,7 @@ 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 { MOAuthTokenUser } from '@server/types/models/oauth/oauth-token'
 
 export type OAuthTokenInfo = {
   refreshToken: string
@@ -30,6 +30,7 @@ export type OAuthTokenInfo = {
   user: {
     id: number
   }
+  token: MOAuthTokenUser
 }
 
 enum ScopeNames {
@@ -136,33 +137,41 @@ export class OAuthTokenModel extends Model<OAuthTokenModel> {
     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> {
@@ -184,14 +193,14 @@ export class OAuthTokenModel extends Model<OAuthTokenModel> {
   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 })
       })