PSR-14 events
Target group: Developers
Have a look into the event dispatcher documentation, if you are not familiar with PSR-14 events.
RateLimitExceededEvent
New in version 1.2.0
This event is dispatched when the rate limit for a form has been exceeded. This way you can create an event listener which notifies you about the exceeded limit: add a log entry, send an email, inform a third-party system, etc.
The event \Brotkrueml\
provides the following methods:
->get
Form Identifier (): string - Returns the form identifier.
->get
Interval (): string - Returns the configured interval.
->get
Limit (): int - Returns the configured limit.
->get
Policy (): string - Returns the configured policy.
->get
Request (): \ Psr\ Http\ Message\ Server Request Interface New in version 1.3.0
Returns the PSR-7 request object.
Example
This example adds an entry to the TYPO3 log:
EXT:your_extension/Classes/EventListener/FormRateLimitExceededLogger.php
<?php
declare(strict_types=1);
namespace YourVendor\YourExtension\EventListener;
use Brotkrueml\FormRateLimit\Event\RateLimitExceededEvent;
use Psr\Log\LoggerInterface;
final class FormRateLimitExceededLogger
{
private LoggerInterface $logger;
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}
public function __invoke(RateLimitExceededEvent $event): void
{
$this->logger->warning(
'The form with identifier "{formIdentifier}" was sent more than {limit} times within {interval}',
[
'formIdentifier' => $event->getFormIdentifier(),
'limit' => $event->getLimit(),
'interval' => $event->getInterval()
]
);
}
}
Copied!
Registration of the event listener:
EXT:your_extension/Configuration/Services.yaml
services:
# Place here the default dependency injection configuration
YourVendor\YourExtension\EventListener\FormRateLimitExceededLogger:
tags:
- name: event.listener
identifier: 'yourFormRateLimitExceededLogger'
Copied!