Implement ALTCHA captcha service with challenge generation and solution verification
- Added AltchaService class for managing ALTCHA captcha challenges and solutions. - Created CaptchaController to handle API requests for generating challenges. - Introduced CaptchaGuard for validating captcha solutions on public endpoints. - Developed unit tests for AltchaService to ensure challenge creation and solution verification functionality. - Implemented integration tests for the Captcha API endpoint and captcha bypass behavior when disabled. - Added documentation for the Captcha API in the corresponding markdown file.
This commit is contained in:
@@ -2,3 +2,7 @@ framework:
|
||||
cache:
|
||||
app: cache.adapter.redis
|
||||
default_redis_provider: '%env(REDIS_URL)%'
|
||||
pools:
|
||||
altcha.pool:
|
||||
adapter: cache.adapter.redis
|
||||
default_lifetime: 600
|
||||
|
||||
@@ -33,7 +33,7 @@ security:
|
||||
provider: api_doc_provider
|
||||
|
||||
public_endpoints:
|
||||
pattern: ^/(api/v1/user/(send-code|verify-code|register|otp-login|reset-password)|oauth/token$|session/token|api/v1/categorys/|api/v1/doctors$|api/v1/clinics$|api/v1/clinic/doctor-list/|api/v1/clinic/[^/]+/addresses$|api/v1/clinic-pro/doctor-addresses/|api/v1/appointment-slots|api/v1/appointment-settings/month-availability/|api/v1/comments/|api/v1/rate/[^/]+$|api/v1/specialties|api/v1/blogs$|api/v1/tags$|api/v1/clinic-invitation/|api/v1/pre-registration$)
|
||||
pattern: ^/(api/v1/altcha/challenge$|api/v1/user/(send-code|verify-code|register|otp-login|reset-password)|oauth/token$|session/token|api/v1/categorys/|api/v1/doctors$|api/v1/clinics$|api/v1/clinic/doctor-list/|api/v1/clinic/[^/]+/addresses$|api/v1/clinic-pro/doctor-addresses/|api/v1/appointment-slots|api/v1/appointment-settings/month-availability/|api/v1/comments/|api/v1/rate/[^/]+$|api/v1/specialties|api/v1/blogs$|api/v1/tags$|api/v1/clinic-invitation/|api/v1/pre-registration$)
|
||||
stateless: true
|
||||
security: false
|
||||
|
||||
|
||||
@@ -49,6 +49,14 @@ services:
|
||||
$baseUrl: '%env(default:default_api_ir_base_url:API_IR_BASE_URL)%'
|
||||
$token: '%env(default::API_IR_TOKEN)%'
|
||||
|
||||
App\Shared\Captcha\AltchaService:
|
||||
arguments:
|
||||
$hmacKey: '%env(ALTCHA_HMAC_KEY)%'
|
||||
$enabled: '%env(bool:ALTCHA_ENABLED)%'
|
||||
$maxNumber: '%env(int:ALTCHA_MAX_NUMBER)%'
|
||||
$expireSeconds: '%env(int:ALTCHA_EXPIRE_SECONDS)%'
|
||||
$altchaPool: '@altcha.pool'
|
||||
|
||||
# Persist warning+ logs to the app_log table while keeping stderr output.
|
||||
App\Shared\Logging\DbLogger:
|
||||
decorates: 'logger'
|
||||
|
||||
Reference in New Issue
Block a user