context = $context; $this->teaRepository = $teaRepository; } public function indexAction(): ResponseInterface { $userUid = $this->getUidOfLoggedInUser(); if ($userUid > 0) { $this->view->assign('teas', $this->teaRepository->findByOwnerUid($userUid)); } return $this->htmlResponse(); } /** * @return int<0, max> */ private function getUidOfLoggedInUser(): int { $userUid = $this->context->getPropertyFromAspect('frontend.user', 'id'); \assert(\is_int($userUid) && $userUid >= 0); return $userUid; } /** * @Extbase\IgnoreValidation("tea") */ public function editAction(Tea $tea): ResponseInterface { $this->checkIfUserIsOwner($tea); $this->view->assign('tea', $tea); return $this->htmlResponse(); } /** * @throws \RuntimeException */ private function checkIfUserIsOwner(Tea $tea): void { if ($tea->getOwnerUid() !== $this->getUidOfLoggedInUser()) { throw new \RuntimeException('You do not have the permissions to edit this tea.', 1687363749); } } public function updateAction(Tea $tea): ResponseInterface { $this->checkIfUserIsOwner($tea); $this->teaRepository->update($tea); return $this->redirect('index'); } /** * @Extbase\IgnoreValidation("tea") */ public function newAction(?Tea $tea = null): ResponseInterface { // Note: We are using `makeInstance` here instead of `new` to allow for XCLASSing. $teaToAssign = $tea ?? GeneralUtility::makeInstance(Tea::class); $this->view->assign('tea', $teaToAssign); return $this->htmlResponse(); } public function createAction(Tea $tea): ResponseInterface { $tea->setOwnerUid($this->getUidOfLoggedInUser()); $this->teaRepository->add($tea); return $this->redirect('index'); } /** * @Extbase\IgnoreValidation("tea") */ public function deleteAction(Tea $tea): ResponseInterface { $this->checkIfUserIsOwner($tea); $this->teaRepository->remove($tea); return $this->redirect('index'); } }