import type { AuthenticationServicePort } from '../ports/AuthenticationServicePort'; import { Result } from '../../../shared/result/Result'; import { BrowserAuthenticationState } from '../../domain/value-objects/BrowserAuthenticationState'; import type { ILogger } from '../../../shared/src/logging/ILogger'; /** * Use case for verifying browser shows authenticated page state. * Combines cookie validation with page content verification. */ export class VerifyAuthenticatedPageUseCase { constructor( private readonly authService: AuthenticationServicePort, private readonly logger: ILogger, ) {} async execute(): Promise> { this.logger.debug('Executing VerifyAuthenticatedPageUseCase'); try { const result = await this.authService.verifyPageAuthentication(); if (result.isErr()) { const error = result.error ?? new Error('Page verification failed'); this.logger.error(`Page verification failed: ${error.message}`, error); return Result.err(error); } const browserState = result.unwrap(); this.logger.info('Successfully verified authenticated page state.'); return Result.ok(browserState); } catch (error) { const message = error instanceof Error ? error.message : String(error); this.logger.error(`Page verification failed unexpectedly: ${message}`, error); return Result.err(new Error(`Page verification failed: ${message}`)); } } }