From f4ea838f07b0d49bc1f32281649a11e2cae0d64f Mon Sep 17 00:00:00 2001 From: Schranz PHP Recipes Bot Date: Tue, 19 Sep 2023 13:18:19 +0000 Subject: [PATCH] Update recipes 2023-09-19 --- .../packages/alex_geno_phone_verification.php | 37 +++++++++++++++++++ .../routes/alex_geno_phone_verification.php | 15 ++++++++ .../1.0/manifest.json | 27 ++++++++++++++ 3 files changed, 79 insertions(+) create mode 100644 alexgeno/phone-verification-bundle/1.0/config/packages/alex_geno_phone_verification.php create mode 100644 alexgeno/phone-verification-bundle/1.0/config/routes/alex_geno_phone_verification.php create mode 100644 alexgeno/phone-verification-bundle/1.0/manifest.json diff --git a/alexgeno/phone-verification-bundle/1.0/config/packages/alex_geno_phone_verification.php b/alexgeno/phone-verification-bundle/1.0/config/packages/alex_geno_phone_verification.php new file mode 100644 index 00000000..8d116c41 --- /dev/null +++ b/alexgeno/phone-verification-bundle/1.0/config/packages/alex_geno_phone_verification.php @@ -0,0 +1,37 @@ +extension('alex_geno_phone_verification', [ + 'storage' => [ + 'driver' => 'redis', + 'redis' => [ + 'connection' => 'default', + ], + 'mongodb' => [ + 'connection' => 'default', + ], + ], + 'sender' => [ + 'transport' => 'vonage', + ], + 'manager' => [ + 'otp' => [ + 'length' => '%env(int:PHONE_VERIFICATION_OTP_LENGTH)%', + ], + 'rate_limits' => [ + 'initiate' => [ + 'period_secs' => '%env(int:PHONE_VERIFICATION_RATE_LIMIT_INITIATE_PERIOD_SECS)%', + 'count' => '%env(int:PHONE_VERIFICATION_RATE_LIMIT_INITIATE_COUNT)%', + ], + 'complete' => [ + 'period_secs' => '%env(int:PHONE_VERIFICATION_RATE_LIMIT_COMPLETE_PERIOD_SECS)%', + 'count' => '%env(int:PHONE_VERIFICATION_RATE_LIMIT_COMPLETE_COUNT)%', + ], + ], + ], + ]); +}; diff --git a/alexgeno/phone-verification-bundle/1.0/config/routes/alex_geno_phone_verification.php b/alexgeno/phone-verification-bundle/1.0/config/routes/alex_geno_phone_verification.php new file mode 100644 index 00000000..dd3f5afd --- /dev/null +++ b/alexgeno/phone-verification-bundle/1.0/config/routes/alex_geno_phone_verification.php @@ -0,0 +1,15 @@ +add('phone_verification_initiate', '/phone-verification/initiate/{to}') + ->controller('AlexGeno\PhoneVerificationBundle\Controller\PhoneVerificationController::initiate') + ->methods(['POST']); + + $routingConfigurator->add('phone_verification_complete', '/phone-verification/complete/{to}/{otp}') + ->controller('AlexGeno\PhoneVerificationBundle\Controller\PhoneVerificationController::complete') + ->methods(['POST']); +}; diff --git a/alexgeno/phone-verification-bundle/1.0/manifest.json b/alexgeno/phone-verification-bundle/1.0/manifest.json new file mode 100644 index 00000000..de95a00b --- /dev/null +++ b/alexgeno/phone-verification-bundle/1.0/manifest.json @@ -0,0 +1,27 @@ +{ + "bundles": { + "AlexGeno\\PhoneVerificationBundle\\AlexGenoPhoneVerificationBundle": ["all"] + }, + "copy-from-recipe": { + "config/": "%CONFIG_DIR%/" + }, + "env": { + "#0": "1000..9999", + "PHONE_VERIFICATION_OTP_LENGTH": "4", + "#1": "for every 'to' no more than 10 initiations over 24 hours", + "PHONE_VERIFICATION_RATE_LIMIT_INITIATE_PERIOD_SECS": "86400", + "PHONE_VERIFICATION_RATE_LIMIT_INITIATE_COUNT": "10", + "#2": "for every 'to' no more than 5 failed completions over 5 minutes", + "PHONE_VERIFICATION_RATE_LIMIT_COMPLETE_PERIOD_SECS": "300", + "PHONE_VERIFICATION_RATE_LIMIT_COMPLETE_COUNT": "5" + }, + "add-lines": [ + { + "file": "config/packages/snc_redis.yaml", + "position": "after_target", + "warn_if_missing": true, + "target": " clients:", + "content": " default:\n type: predis\n alias: default\n dsn: \"%env(REDIS_URL)%\"" + } + ] +}