Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Add recipe for Phone Verification Bundle #1541

Merged
merged 10 commits into from
Sep 16, 2023
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
alex_geno_phone_verification:
storage:
driver: redis # redis || mongodb
redis:
connection: default
mongodb:
connection: default
sender:
transport: vonage
manager:
otp:
length: '%env(int:PHONE_VERIFICATION_OTP_LENGTH)%'
rate_limits:
initiate: #for every 'to' no more than 'count' initiations over 'period_secs' seconds
period_secs: '%env(int:PHONE_VERIFICATION_RATE_LIMIT_INITIATE_PERIOD_SECS)%'
count: '%env(int:PHONE_VERIFICATION_RATE_LIMIT_INITIATE_COUNT)%'
complete: #for every 'to' no more than 'count' failed completions over 'period_secs' seconds
period_secs: '%env(int:PHONE_VERIFICATION_RATE_LIMIT_COMPLETE_PERIOD_SECS)%' # this is also the expiration period for OTP
count: '%env(int:PHONE_VERIFICATION_RATE_LIMIT_COMPLETE_COUNT)%'
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
phone_verification_initiate:
path: /phone-verification/initiate/{to}
controller: AlexGeno\PhoneVerificationBundle\Controller\PhoneVerificationController::initiate
methods: POST
phone_verification_complete:
path: /phone-verification/complete/{to}/{otp}
controller: AlexGeno\PhoneVerificationBundle\Controller\PhoneVerificationController::complete
methods: POST
27 changes: 27 additions & 0 deletions alexgeno/phone-verification-bundle/1.0/manifest.json
Original file line number Diff line number Diff line change
@@ -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)%\""
}
]
}
Loading