public function before(ServiceEvent $event) { $currentUser = ServiceKernel::instance()->getCurrentUser(); if ($currentUser->isAdmin() || $currentUser->isSuperAdmin() || $currentUser->isTeacher()) { return; } $currentIp = $currentUser->currentIp; if (!($this->getTokenBucketService()->hasToken($currentIp, 'thread') && $this->getTokenBucketService()->hasToken($currentUser['id'], 'threadLoginedUser'))) { $event->stopPropagation(); } }