diff --git a/typo3/sysext/backend/Classes/Http/BackendModuleRequestHandler.php b/typo3/sysext/backend/Classes/Http/BackendModuleRequestHandler.php index 27f2ea28169f5281b54290afa88d691436dae87e..ed8f97c997ae8764128fce33fd94e5afb7b43abe 100644 --- a/typo3/sysext/backend/Classes/Http/BackendModuleRequestHandler.php +++ b/typo3/sysext/backend/Classes/Http/BackendModuleRequestHandler.php @@ -142,21 +142,26 @@ class BackendModuleRequestHandler implements RequestHandlerInterface { $moduleConfiguration = $this->getModuleConfiguration($moduleName); + /** @var Response $response */ + $response = GeneralUtility::makeInstance(Response::class); + // Check permissions and exit if the user has no permission for entry $this->backendUserAuthentication->modAccess($moduleConfiguration, true); $id = isset($this->request->getQueryParams()['id']) ? $this->request->getQueryParams()['id'] : $this->request->getParsedBody()['id']; if ($id && MathUtility::canBeInterpretedAsInteger($id)) { - // Check page access $permClause = $this->backendUserAuthentication->getPagePermsClause(true); + // Check page access $access = is_array(BackendUtility::readPageAccess((int)$id, $permClause)); if (!$access) { - throw new \RuntimeException('You don\'t have access to this page', 1289917924); + // Check if page has been deleted + $deleteField = $GLOBALS['TCA']['pages']['ctrl']['delete']; + $pageInfo = BackendUtility::getRecord('pages', (int)$id, $deleteField, $permClause ? ' AND ' . $permClause : '', false); + if (!$pageInfo[$deleteField]) { + throw new \RuntimeException('You don\'t have access to this page', 1289917924); + } } } - /** @var Response $response */ - $response = GeneralUtility::makeInstance(Response::class); - // Use Core Dispatching if (isset($moduleConfiguration['routeTarget'])) { $dispatcher = GeneralUtility::makeInstance(Dispatcher::class); diff --git a/typo3/sysext/indexed_search/Classes/Controller/AdministrationController.php b/typo3/sysext/indexed_search/Classes/Controller/AdministrationController.php index b132d7a95f5daba2d311310f38277c95577a576a..033050573e6b537794b0431fccbe36557dcca369 100644 --- a/typo3/sysext/indexed_search/Classes/Controller/AdministrationController.php +++ b/typo3/sysext/indexed_search/Classes/Controller/AdministrationController.php @@ -90,7 +90,9 @@ class AdministrationController extends ActionController parent::initializeView($view); $permissionClause = $this->getBackendUserAuthentication()->getPagePermsClause(1); $pageRecord = BackendUtility::readPageAccess($this->pageUid, $permissionClause); - $view->getModuleTemplate()->getDocHeaderComponent()->setMetaInformation($pageRecord); + if ($pageRecord) { + $view->getModuleTemplate()->getDocHeaderComponent()->setMetaInformation($pageRecord); + } $this->generateMenu(); $this->view->getModuleTemplate()->setFlashMessageQueue($this->controllerContext->getFlashMessageQueue()); } diff --git a/typo3/sysext/workspaces/Classes/Controller/ReviewController.php b/typo3/sysext/workspaces/Classes/Controller/ReviewController.php index 0e59ff7be88190f6408ded590c070d754c5ccb27..3b6c3cb1b6d4b7e39eeb968a6ad97366c273743d 100644 --- a/typo3/sysext/workspaces/Classes/Controller/ReviewController.php +++ b/typo3/sysext/workspaces/Classes/Controller/ReviewController.php @@ -73,8 +73,10 @@ class ReviewController extends AbstractController $this->view->assign('pageUid', GeneralUtility::_GP('id')); if (GeneralUtility::_GP('id')) { $pageRecord = BackendUtility::getRecord('pages', GeneralUtility::_GP('id')); - $this->view->getModuleTemplate()->getDocHeaderComponent()->setMetaInformation($pageRecord); - $this->view->assign('pageTitle', BackendUtility::getRecordTitle('pages', $pageRecord)); + if ($pageRecord) { + $this->view->getModuleTemplate()->getDocHeaderComponent()->setMetaInformation($pageRecord); + $this->view->assign('pageTitle', BackendUtility::getRecordTitle('pages', $pageRecord)); + } } $this->view->assign('showLegend', !($GLOBALS['BE_USER']->workspace === 0 && !$GLOBALS['BE_USER']->isAdmin())); $wsList = $wsService->getAvailableWorkspaces();