<?php declare(strict_types=1);

namespace App\Engine\Admin\Auth;

final readonly class AdministratorUserEntityGuesser implements \Webauthn\Bundle\Security\Guesser\UserEntityGuesser
{

    public function __construct(
        private WebauthnCredentialAdministratorUserEntityRepository $webauthnCredentialAdministratorUserEntityRepository,
    ) {
    }

    public function findUserEntity(\Symfony\Component\HttpFoundation\Request $request): \Webauthn\PublicKeyCredentialUserEntity
    {
        $uuid = $request->getPayload()->get("uuid");
        $administratorUser = $this->webauthnCredentialAdministratorUserEntityRepository->findOneByUserHandle($uuid);
        $administratorUser !== null || throw \Webauthn\Bundle\Exception\MissingUserEntityException::create('Unable to find the user entity');

        return $administratorUser;
    }

}