Skip to content

Conversation

RemyNovactive
Copy link
Contributor

#114419 - [MIG-IBEXA] Message de validation formulaire de contact

Récupération de l'email par le EmailProvided et création du cookie

@RemyNovactive RemyNovactive self-assigned this Dec 21, 2023
Comment on lines +114 to +149

// ÉTAPE 3 - L'internaute a cliqué sur le lien dans le mail généré à l'étape 2
// On retrouve le token et on crée un cookie
// On redirige l'internaute vers la page demandée.
if ($request->query->has('mail')
&& $request->query->has('token')
&& !$request->query->has('waiting_validation')
) {
$token = $request->get('token');
$mail = $request->get('mail');

/** @var ProtectedTokenStorageRepository $protectedTokenStorageRepository */
$protectedTokenStorageRepository = $this->entityManager->getRepository(ProtectedTokenStorage::class);
$unexpiredTokenList = $protectedTokenStorageRepository->findUnexpiredBy([
//'content_id' => $content->id, // TODO, On a pas le contentID ... est ce que on le met dans le line du mail ? On en a pas forcément besoin ... ?
'token' => $token,
'mail' => $mail
]);

if (count($unexpiredTokenList) > 0 ) {
$uri = $request->getRequestUri();
$path = parse_url($uri, PHP_URL_PATH);
$response = new RedirectResponse($path);
$response->setPrivate();

foreach ($unexpiredTokenList as $unexpiredToken) {
$hash = self::hash($unexpiredToken->getContentId());
$cookie = new Cookie(PasswordProvided::COOKIE_PREFIX.$hash, $hash, strtotime('now + 24 hours')); // TODO réflexion sur la durées
$response->headers->setCookie($cookie);
// TODO Supprimer/invalider le token ?
}

$event->setResponse($response);
}
}
}
Copy link
Contributor Author

@RemyNovactive RemyNovactive Dec 21, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

La récupération du lien présent dans le mail avec le token et le mail se fait maintenant ici et on créer un cookie

// C'est donc le même COOKIE_PREFIX
// Règle 1 = Le nom du cookie doit commencer par COOKIE_PREFIX
if (PasswordProvided::COOKIE_PREFIX !== substr($name, 0, \strlen(PasswordProvided::COOKIE_PREFIX))) {
continue;
}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

La récupération du lien présent dans le mail avec le token et le mail ne se fait plus ici !
Voir : bundle/Listener/EmailProvided.php

@RemyNovactive RemyNovactive marked this pull request as draft January 3, 2024 09:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant