/** * @param ElectionInvitation $electionInvitation * @param string $hmac * @return string */ public function voteAction(ElectionInvitation $electionInvitation = null, $hmac = '') { if (null !== $electionInvitation && '' !== $hmac) { $saltedEmail = $electionInvitation->getSecret() . $electionInvitation->getElector()->getEmail(); if ($this->hashService->validateHmac($saltedEmail, $hmac)) { if ($electionInvitation->isVoted()) { $this->addFlashMessage(LocalizationUtility::translate('controller.fe.election.vote.already_voted', 'election'), LocalizationUtility::translate('controller.fe.election.vote.request_failed', 'election'), AbstractMessage::ERROR); $this->redirect(FeDashboardController::ACTION_INDEX, FeDashboardController::CONTROLLER_NAME); } elseif ($electionInvitation->getElectionEndDateAsTimestamp() < time()) { $this->addFlashMessage(LocalizationUtility::translate('controller.fe.election.vote.election_finished', 'election'), LocalizationUtility::translate('controller.fe.election.vote.request_failed', 'election'), AbstractMessage::ERROR); $this->redirect(FeDashboardController::ACTION_INDEX, FeDashboardController::CONTROLLER_NAME); } else { $this->view->assign('electionInvitation', $electionInvitation); $this->view->assign('electionVoting', new ElectionVoting()); } } else { $this->addFlashMessage(LocalizationUtility::translate('controller.fe.election.vote.hmac_invalid', 'election'), LocalizationUtility::translate('controller.fe.election.vote.request_failed', 'election'), AbstractMessage::ERROR); $this->redirect(FeDashboardController::ACTION_INDEX, FeDashboardController::CONTROLLER_NAME); } } else { $this->addFlashMessage(LocalizationUtility::translate('controller.fe.election.vote.no_election_or_hmac', 'election'), LocalizationUtility::translate('controller.fe.election.vote.request_failed', 'election'), AbstractMessage::ERROR); $this->redirect(FeDashboardController::ACTION_INDEX, FeDashboardController::CONTROLLER_NAME); } }