From 3192fb6c831d629491b7f9bc9b5f6718712fde03 Mon Sep 17 00:00:00 2001 From: Marijn Doeve Date: Wed, 2 Apr 2025 21:20:44 +0200 Subject: [PATCH] Refactor Base64 encoding/decoding methods and enhance candidate not found flash message --- src/Controller/QuizController.php | 7 +++++-- src/Helpers/Base64.php | 19 ++++++++++++++----- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/Controller/QuizController.php b/src/Controller/QuizController.php index 4edebed..2470a3d 100644 --- a/src/Controller/QuizController.php +++ b/src/Controller/QuizController.php @@ -72,8 +72,11 @@ class QuizController extends AbstractController $candidate = $candidateRepository->getCandidateByHash($season, $nameHash); if (!$candidate instanceof Candidate) { - // Add option to add new candidate when preregister is disabled - $this->addFlash(FlashType::Danger->value, 'Candidate not found'); + if ($season->isPreregisterCandidates() === false) { + // create candidate + } + + $this->addFlash(FlashType::Danger->value, "Candidate {${Base64::base64_url_decode($nameHash)}} not found"); return $this->redirectToRoute('enter_name', ['seasonCode' => $season->getSeasonCode()]); } diff --git a/src/Helpers/Base64.php b/src/Helpers/Base64.php index c2e72ef..7cb4f02 100644 --- a/src/Helpers/Base64.php +++ b/src/Helpers/Base64.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace App\Helpers; use Safe\Exceptions\UrlException; +use function rtrim; class Base64 { @@ -12,14 +13,22 @@ class Base64 { } - public static function base64_url_encode(string $input): string + /** + * @param string $name name to hash + * @return string hashed name + */ + public static function base64_url_encode(string $name): string { - return strtr(base64_encode($input), '+/', '-_'); + return rtrim(strtr(base64_encode($name), '+/', '-_'), '='); } - /** @throws UrlException */ - public static function base64_url_decode(string $input): string + /** + * @param string $hash hashed name + * @return string plaintext name + * @throws UrlException + */ + public static function base64_url_decode(string $hash): string { - return \Safe\base64_decode(strtr($input, '-_', '+/'), true); + return \Safe\base64_decode(strtr($hash, '-_', '+/'), true); } }