]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/lib/oauth-model.ts
Add state and moderationComment for abuses on server side
[github/Chocobozzz/PeerTube.git] / server / lib / oauth-model.ts
index dce71e83bb4e4677b2ec042b6284911b93f0af72..f159ad6a90c4b8d7bd2a47880a346124df8d4d0b 100644 (file)
@@ -1,4 +1,5 @@
-import { logger } from '../helpers'
+import { AccessDeniedError } from 'oauth2-server'
+import { logger } from '../helpers/logger'
 import { UserModel } from '../models/account/user'
 import { OAuthClientModel } from '../models/oauth/oauth-client'
 import { OAuthTokenModel } from '../models/oauth/oauth-token'
@@ -25,15 +26,17 @@ function getRefreshToken (refreshToken: string) {
   return OAuthTokenModel.getByRefreshTokenAndPopulateClient(refreshToken)
 }
 
-async function getUser (username: string, password: string) {
-  logger.debug('Getting User (username: ' + username + ', password: ******).')
+async function getUser (usernameOrEmail: string, password: string) {
+  logger.debug('Getting User (username/email: ' + usernameOrEmail + ', password: ******).')
 
-  const user = await UserModel.getByUsername(username)
+  const user = await UserModel.loadByUsernameOrEmail(usernameOrEmail)
   if (!user) return null
 
   const passwordMatch = await user.isPasswordMatch(password)
   if (passwordMatch === false) return null
 
+  if (user.blocked) throw new AccessDeniedError('User is blocked.')
+
   return user
 }
 
@@ -67,9 +70,7 @@ async function saveToken (token: TokenInfo, client: OAuthClientModel, user: User
   }
 
   const tokenCreated = await OAuthTokenModel.create(tokenToCreate)
-  const tokenToReturn = Object.assign(tokenCreated, { client, user })
-
-  return tokenToReturn
+  return Object.assign(tokenCreated, { client, user })
 }
 
 // ---------------------------------------------------------------------------