/** * @inheritdoc */ public function beforeAction($action) { $user = $this->user; if ($this->separateRates) { $user = $user ?: (Yii::$app->getUser() ? Yii::$app->getUser()->getIdentity(false) : null); } $user = $user ?: User::findByIp(Yii::$app->request->userIP, $this->rateLimit, $this->timePeriod); if ($user instanceof RateLimitInterface) { return parent::beforeAction($action); } else { Yii::trace('Check rate limit', __METHOD__); $this->checkRateLimit($user, $this->request ?: Yii::$app->getRequest(), $this->response ?: Yii::$app->getResponse(), $action); return true; } return parent::beforeAction($action); }