class UserFloodControl implements UserFloodControlInterface (View source)

User Flood Control service.

Properties

protected FloodInterface $flood

The decorated flood service.

protected EventDispatcherInterface $eventDispatcher

Event dispatcher.

protected RequestStack $requestStack

The request stack.

Methods

__construct(FloodInterface $flood, EventDispatcherInterface $event_dispatcher, RequestStack $request_stack)

Construct the UserFloodControl.

true
isAllowed(string $name, int $threshold, int $window = 3600, string $identifier = NULL)

Checks whether a user is allowed to proceed with the specified event.

register(string $name, int $window = 3600, string $identifier = NULL)

Registers an event for the current visitor to the flood control mechanism.

clear(string $name, string $identifier = NULL)

Makes the flood control mechanism forget an event for the current visitor.

garbageCollection()

Cleans up expired flood events. This method is called automatically on cron run.

Details

__construct(FloodInterface $flood, EventDispatcherInterface $event_dispatcher, RequestStack $request_stack)

Construct the UserFloodControl.

Parameters

FloodInterface $flood

The flood service.

EventDispatcherInterface $event_dispatcher

The event dispatcher service.

RequestStack $request_stack

The request stack used to retrieve the current request.

true isAllowed(string $name, int $threshold, int $window = 3600, string $identifier = NULL)

Checks whether a user is allowed to proceed with the specified event.

Events can have thresholds saying that each user can only do that event a certain number of times in a time window. This function verifies that the current user has not exceeded this threshold.

Parameters

string $name

The name of an event.

int $threshold

The maximum number of times each user can do this event per time window.

int $window

(optional) Number of seconds in the time window for this event (default is 3600 seconds, or 1 hour).

string $identifier

(optional) Unique identifier of the current user. Defaults to the current user's IP address).

Return Value

true

if the user is allowed to proceed. FALSE if they have exceeded the threshold and should not be allowed to proceed.

register(string $name, int $window = 3600, string $identifier = NULL)

Registers an event for the current visitor to the flood control mechanism.

Parameters

string $name

The name of an event. To prevent unintended name clashes, it is recommended to use the module name first in the event name, optionally followed by a dot and the actual event name (e.g. "mymodule.my_event").

int $window

(optional) Number of seconds before this event expires. Defaults to 3600 (1 hour). Typically uses the same value as the isAllowed() $window parameter. Expired events are purged on cron run to prevent the flood table from growing indefinitely.

string $identifier

(optional) Unique identifier of the current user. Defaults to the current user's IP address).

clear(string $name, string $identifier = NULL)

Makes the flood control mechanism forget an event for the current visitor.

Parameters

string $name

The name of an event.

string $identifier

(optional) Unique identifier of the current user. Defaults to the current user's IP address).

garbageCollection()

Cleans up expired flood events. This method is called automatically on cron run.