diff --git a/typo3/sysext/install/Classes/Service/SessionService.php b/typo3/sysext/install/Classes/Service/SessionService.php index a85342c0209928a251178a718ae7314820e59b47..dbe391967376ce27adcd9a8cca5617f87e529237 100644 --- a/typo3/sysext/install/Classes/Service/SessionService.php +++ b/typo3/sysext/install/Classes/Service/SessionService.php @@ -286,8 +286,12 @@ class SessionService implements SingletonInterface } $isAdmin = (($backendUserRecord['admin'] ?? 0) & 1) === 1; $systemMaintainers = array_map('intval', $GLOBALS['TYPO3_CONF_VARS']['SYS']['systemMaintainers'] ?? []); + // in case no system maintainers are configured, all admin users are considered to be system maintainers + $isSystemMaintainer = empty($systemMaintainers) || in_array((int)$backendUserRecord['uid'], $systemMaintainers, true); + // in development context, all admin users are considered to be system maintainers + $hasDevelopmentContext = Environment::getContext()->isDevelopment(); // stop here, in case the current admin tool session does not belong to a backend user having admin & maintainer privileges - if (!$isAdmin || !in_array((int)$backendUserRecord['uid'], $systemMaintainers, true)) { + if (!$isAdmin || !$hasDevelopmentContext && !$isSystemMaintainer) { return false; }