frontendUserRepository = $frontendUserRepository; } /** * @var \WapplerSystems\BookmarksLikesRatings\Domain\Repository\VoterRepository $voterRepository */ protected $voterRepository; /** * @param \WapplerSystems\BookmarksLikesRatings\Domain\Repository\VoterRepository $voterRepository */ public function injectVoterRepository(\WapplerSystems\BookmarksLikesRatings\Domain\Repository\VoterRepository $voterRepository): void { $this->voterRepository = $voterRepository; } /** * @var \TYPO3\CMS\Core\Context\Context $context */ protected $context; /** * @param \TYPO3\CMS\Core\Context\Context $context */ public function injectContext(\TYPO3\CMS\Core\Context\Context $context): void { $this->context = $context; } /** * Tests, if the given person is logged into the frontend * * @param \TYPO3\CMS\Extbase\Domain\Model\FrontendUser|null $person The person * @return bool The result; true if the given person is logged in; otherwise false * @throws \TYPO3\CMS\Core\Context\Exception\AspectNotFoundException */ public function isLoggedIn(\TYPO3\CMS\Extbase\Domain\Model\FrontendUser $person = null): bool { if (is_object($person)) { if ($person->getUid() && ($person->getUid() === $this->getFrontendUserUid())) { return true; //treat anonymous user also as logged in } } return false; } /** * @return bool * @throws \TYPO3\CMS\Core\Context\Exception\AspectNotFoundException */ public function backendAdminIsLoggedIn(): bool { return $this->context->getPropertyFromAspect('backend.user', 'isLoggedIn'); } /** * @return bool * @throws \TYPO3\CMS\Core\Context\Exception\AspectNotFoundException */ public function hasLoggedInFrontendUser(): bool { return $this->context->getPropertyFromAspect('frontend.user', 'isLoggedIn'); } /** * @return array * @throws \TYPO3\CMS\Core\Context\Exception\AspectNotFoundException */ public function getFrontendUserGroups(): array { if ($this->hasLoggedInFrontendUser()) { return $this->context->getPropertyFromAspect('frontend.user', 'groupIds'); } return []; } /** * @return int|null * @throws \TYPO3\CMS\Core\Context\Exception\AspectNotFoundException */ public function getFrontendUserUid(): ?int { if ($this->hasLoggedInFrontendUser()) { return $this->context->getPropertyFromAspect('frontend.user', 'id'); } return null; } /** * Loads objects from repositories * * @param mixed $voter * @return \TYPO3\CMS\Extbase\Domain\Model\FrontendUser * @throws \TYPO3\CMS\Core\Context\Exception\AspectNotFoundException */ public function getFrontendUser($voter = null): ?\TYPO3\CMS\Extbase\Domain\Model\FrontendUser { //set userobject if (!$voter instanceof \TYPO3\CMS\Extbase\Domain\Model\FrontendUser) { //TODO Errorhandling if no user is logged in if ((int)$voter === 0) { //get logged in fe-user $voter = $this->frontendUserRepository->findByUid($this->getFrontendUserUid()); } else { $voter = $this->frontendUserRepository->findByUid((int)$voter); } } return $voter; } /** * Loads objects from repositories * * @param int|null $voter * @return \WapplerSystems\BookmarksLikesRatings\Domain\Model\Voter * @throws FeUserNotFoundException * @throws \TYPO3\CMS\Core\Context\Exception\AspectNotFoundException */ public function getFrontendVoter(?int $voter = 0): Voter { $exceptionMessageArray = []; /** @var Voter $voterObject */ $voterObject = null; //TODO Errorhandling if no user is logged in if ((int)$voter === 0) { //get logged in fe-user $voterObject = $this->voterRepository->findByUid($this->getFrontendUserUid()); $exceptionMessageArray = [$this->getFrontendUserUid()]; $exceptionMessageType = 'feUser'; } else { $voterObject = $this->voterRepository->findByUid((int)$voter); $exceptionMessageArray = [(int)$voter]; $exceptionMessageType = 'anonymousUser'; } if (empty($voterObject)) { throw new FeUserNotFoundException( LocalizationUtility::translate( 'flash.pluginConfiguration.missing.' . $exceptionMessageType, 'ThRating', $exceptionMessageArray ), 1602095329 ); } return $voterObject; } }