30 lines
1.1 KiB
TypeScript
30 lines
1.1 KiB
TypeScript
import { IAuthenticationService } from '../ports/IAuthenticationService';
|
|
import { Result } from '../../shared/result/Result';
|
|
import { BrowserAuthenticationState } from '@gridpilot/automation/domain/value-objects/BrowserAuthenticationState';
|
|
|
|
/**
|
|
* Use case for verifying browser shows authenticated page state.
|
|
* Combines cookie validation with page content verification.
|
|
*/
|
|
export class VerifyAuthenticatedPageUseCase {
|
|
constructor(
|
|
private readonly authService: IAuthenticationService
|
|
) {}
|
|
|
|
async execute(): Promise<Result<BrowserAuthenticationState>> {
|
|
try {
|
|
const result = await this.authService.verifyPageAuthentication();
|
|
|
|
if (result.isErr()) {
|
|
const error = result.error ?? new Error('Page verification failed');
|
|
return Result.err<BrowserAuthenticationState>(error);
|
|
}
|
|
|
|
const browserState = result.unwrap();
|
|
return Result.ok<BrowserAuthenticationState>(browserState);
|
|
} catch (error) {
|
|
const message = error instanceof Error ? error.message : String(error);
|
|
return Result.err<BrowserAuthenticationState>(new Error(`Page verification failed: ${message}`));
|
|
}
|
|
}
|
|
} |