Skip to content
New issue

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

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

Already on GitHub? Sign in 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