flood = $flood; $this->eventDispatcher = $event_dispatcher; $this->requestStack = $request_stack; } /** * {@inheritdoc} */ public function isAllowed($name, $threshold, $window = 3600, $identifier = NULL) { if ($this->flood->isAllowed($name, $threshold, $window, $identifier)) { return TRUE; } // Register flood control blocked login event. $event_map['user.failed_login_ip'] = UserEvents::FLOOD_BLOCKED_IP; $event_map['user.failed_login_user'] = UserEvents::FLOOD_BLOCKED_USER; $event_map['user.http_login'] = UserEvents::FLOOD_BLOCKED_USER; if (isset($event_map[$name])) { if (empty($identifier)) { $identifier = $this->requestStack->getCurrentRequest()->getClientIp(); } $event = new UserFloodEvent($name, $threshold, $window, $identifier); $this->eventDispatcher->dispatch($event, $event_map[$name]); } return FALSE; } /** * {@inheritdoc} */ public function register($name, $window = 3600, $identifier = NULL) { return $this->flood->register($name, $window, $identifier); } /** * {@inheritdoc} */ public function clear($name, $identifier = NULL) { return $this->flood->clear($name, $identifier); } /** * {@inheritdoc} */ public function garbageCollection() { return $this->flood->garbageCollection(); } }