From 738cb84ed85c3e542199919f683140cfa6a2da7e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rapha=C3=ABl=20Gertz?= Date: Fri, 8 Mar 2024 16:57:01 +0100 Subject: [PATCH 1/1] Remove constructor range argument Protect constructor from unset range Cleanup --- Resources/config/packages/rapsyspack.yaml | 2 +- Util/SluggerUtil.php | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/Resources/config/packages/rapsyspack.yaml b/Resources/config/packages/rapsyspack.yaml index 1bb195a..f57cf74 100644 --- a/Resources/config/packages/rapsyspack.yaml +++ b/Resources/config/packages/rapsyspack.yaml @@ -53,7 +53,7 @@ services: # Register slugger util service rapsyspack.slugger_util: class: 'Rapsys\PackBundle\Util\SluggerUtil' - arguments: [ '%env(string:RAPSYSPACK_RANGE)%', '%kernel.secret%' ] + arguments: [ '%kernel.secret%' ] public: true # Register range command Rapsys\PackBundle\Command\RangeCommand: diff --git a/Util/SluggerUtil.php b/Util/SluggerUtil.php index 3b1e6b5..eb6041e 100644 --- a/Util/SluggerUtil.php +++ b/Util/SluggerUtil.php @@ -38,20 +38,25 @@ class SluggerUtil { /** * Construct slugger util * - * @description Run "php bin/console rapsyspack:range" to generate RAPSYSPACK_RANGE="ayl[...]z9w" range in .env.local + * Run "bin/console rapsyspack:range" to generate RAPSYSPACK_RANGE="ayl[...]z9w" range in .env.local * * @todo Use Cache like in calendar controller through FilesystemAdapter ? * - * @param string $range The shuffled range string * @param string $secret The secret string */ - public function __construct(protected string $range, protected string $secret) { + public function __construct(protected string $secret) { + //Without range + if (empty($range = $_ENV['RAPSYSPACK_RANGE']) || $range === 'Ch4ng3m3!') { + //Protect member variable setup + return; + } + /** * Get pseuto-random alphabet by splitting range string * TODO: see required range by json_encode result and short input (0->255 ???) * XXX: The key count mismatch, count(alpha)>count(rev), resulted in a data corruption due to duplicate numeric values */ - $this->alpha = str_split($this->range); + $this->alpha = str_split($range); //Init rev array $this->count = count($rev = $this->rev = array_flip($this->alpha)); @@ -60,6 +65,7 @@ class SluggerUtil { $split = str_split($this->secret); //Set offset + //TODO: protect undefined index ? $this->offset = array_reduce($split, function ($res, $a) use ($rev) { return $res += $rev[$a]; }, count($split)) % $this->count; } -- 2.41.1