logger = $logger; $this->dispatcher = $dispatcher; } public function process(LoginData $loginData): LoginResult { if ($loginData->getUser() === false) { $loginName = $loginData->getUsername(); $password = $loginData->getPassword(); $ip = $loginData->getRequest()->getRemoteAddress(); $this->logger->warning("Login failed: $loginName (Remote IP: $ip)"); $this->dispatcher->dispatchTyped(new LoginFailed($loginName, $password)); return LoginResult::failure($loginData, LoginController::LOGIN_MSG_INVALIDPASSWORD); } return $this->processNextOrFinishSuccessfully($loginData); } }