Pārlūkot izejas kodu

fix(auth): add debug logs for authentication method resolver

Karol Sójko 2 gadi atpakaļ
vecāks
revīzija
d220ec5bf7

+ 6 - 1
packages/auth/src/Domain/Auth/AuthenticationMethodResolver.spec.ts

@@ -9,6 +9,7 @@ import { User } from '../User/User'
 import { UserRepositoryInterface } from '../User/UserRepositoryInterface'
 
 import { AuthenticationMethodResolver } from './AuthenticationMethodResolver'
+import { Logger } from 'winston'
 
 describe('AuthenticationMethodResolver', () => {
   let userRepository: UserRepositoryInterface
@@ -18,11 +19,15 @@ describe('AuthenticationMethodResolver', () => {
   let user: User
   let session: Session
   let revokedSession: RevokedSession
+  let logger: Logger
 
   const createResolver = () =>
-    new AuthenticationMethodResolver(userRepository, sessionService, sessionTokenDecoder, fallbackTokenDecoder)
+    new AuthenticationMethodResolver(userRepository, sessionService, sessionTokenDecoder, fallbackTokenDecoder, logger)
 
   beforeEach(() => {
+    logger = {} as jest.Mocked<Logger>
+    logger.debug = jest.fn()
+
     user = {} as jest.Mocked<User>
 
     session = {} as jest.Mocked<Session>

+ 12 - 0
packages/auth/src/Domain/Auth/AuthenticationMethodResolver.ts

@@ -5,6 +5,7 @@ import { SessionServiceInterface } from '../Session/SessionServiceInterface'
 import { UserRepositoryInterface } from '../User/UserRepositoryInterface'
 import { AuthenticationMethod } from './AuthenticationMethod'
 import { AuthenticationMethodResolverInterface } from './AuthenticationMethodResolverInterface'
+import { Logger } from 'winston'
 
 @injectable()
 export class AuthenticationMethodResolver implements AuthenticationMethodResolverInterface {
@@ -14,15 +15,20 @@ export class AuthenticationMethodResolver implements AuthenticationMethodResolve
     @inject(TYPES.Auth_SessionTokenDecoder) private sessionTokenDecoder: TokenDecoderInterface<SessionTokenData>,
     @inject(TYPES.Auth_FallbackSessionTokenDecoder)
     private fallbackSessionTokenDecoder: TokenDecoderInterface<SessionTokenData>,
+    @inject(TYPES.Auth_Logger) private logger: Logger,
   ) {}
 
   async resolve(token: string): Promise<AuthenticationMethod | undefined> {
     let decodedToken: SessionTokenData | undefined = this.sessionTokenDecoder.decodeToken(token)
     if (decodedToken === undefined) {
+      this.logger.debug('Could not decode token with primary decoder, trying fallback decoder.')
+
       decodedToken = this.fallbackSessionTokenDecoder.decodeToken(token)
     }
 
     if (decodedToken) {
+      this.logger.debug('Token decoded successfully. User found.')
+
       return {
         type: 'jwt',
         user: await this.userRepository.findOneByUuid(<string>decodedToken.user_uuid),
@@ -32,6 +38,8 @@ export class AuthenticationMethodResolver implements AuthenticationMethodResolve
 
     const session = await this.sessionService.getSessionFromToken(token)
     if (session) {
+      this.logger.debug('Token decoded successfully. Session found.')
+
       return {
         type: 'session_token',
         user: await this.userRepository.findOneByUuid(session.userUuid),
@@ -41,6 +49,8 @@ export class AuthenticationMethodResolver implements AuthenticationMethodResolve
 
     const revokedSession = await this.sessionService.getRevokedSessionFromToken(token)
     if (revokedSession) {
+      this.logger.debug('Token decoded successfully. Revoked session found.')
+
       return {
         type: 'revoked',
         revokedSession: await this.sessionService.markRevokedSessionAsReceived(revokedSession),
@@ -48,6 +58,8 @@ export class AuthenticationMethodResolver implements AuthenticationMethodResolve
       }
     }
 
+    this.logger.debug('Could not decode token.')
+
     return undefined
   }
 }