From d54560bac32a695cdb67287be43769b4d3b1c6f3 Mon Sep 17 00:00:00 2001
From: Oliver Bartsch <bo@cedev.de>
Date: Mon, 18 Dec 2023 08:55:59 +0100
Subject: [PATCH] [BUGFIX] Display inherited module workspace access
 restriction

Workspace access permissions of backend modules
are inherited. This is now poperly reflected in
the configuration module and also documented in
the changelog.

Resolves: #102688
Releases: main, 12.4
Change-Id: I83a81713653c1e0dee3c79ba0762b459179a504a
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/82130
Tested-by: core-ci <typo3@b13.com>
Tested-by: Oliver Bartsch <bo@cedev.de>
Reviewed-by: Oliver Bartsch <bo@cedev.de>
---
 .../12.0/Feature-96733-NewBackendModuleRegistrationAPI.rst     | 3 ++-
 .../ConfigurationModuleProvider/BackendModuleProvider.php      | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/typo3/sysext/core/Documentation/Changelog/12.0/Feature-96733-NewBackendModuleRegistrationAPI.rst b/typo3/sysext/core/Documentation/Changelog/12.0/Feature-96733-NewBackendModuleRegistrationAPI.rst
index 01f1bdc08383..156fd937a348 100644
--- a/typo3/sysext/core/Documentation/Changelog/12.0/Feature-96733-NewBackendModuleRegistrationAPI.rst
+++ b/typo3/sysext/core/Documentation/Changelog/12.0/Feature-96733-NewBackendModuleRegistrationAPI.rst
@@ -130,7 +130,8 @@ Module configuration options
 | access (:php:`string`)                                   | Can be `user` (editor permissions), `admin`, or                  |
 |                                                          | `systemMaintainer`.                                              |
 +----------------------------------------------------------+------------------------------------------------------------------+
-| workspaces (:php:`string`)                               | Can be `*` (= always), `live` or `offline`                       |
+| workspaces (:php:`string`)                               | Can be `*` (= always), `live` or `offline`. If not set, the      |
+|                                                          | value of the parent module - if any - is used.                   |
 +----------------------------------------------------------+------------------------------------------------------------------+
 | position (:php:`array`)                                  | The module position. Allowed values are `before => <identifier>` |
 |                                                          | and `after => <identifier>`. To define modules on top or at the  |
diff --git a/typo3/sysext/lowlevel/Classes/ConfigurationModuleProvider/BackendModuleProvider.php b/typo3/sysext/lowlevel/Classes/ConfigurationModuleProvider/BackendModuleProvider.php
index 240dc0bde903..ab5061488bc9 100644
--- a/typo3/sysext/lowlevel/Classes/ConfigurationModuleProvider/BackendModuleProvider.php
+++ b/typo3/sysext/lowlevel/Classes/ConfigurationModuleProvider/BackendModuleProvider.php
@@ -38,7 +38,7 @@ class BackendModuleProvider extends AbstractProvider
                 'access' => $module->getAccess(),
                 'aliases' => $module->getAliases(),
                 'position' => $module->getPosition(),
-                'workspaces' => $module->getWorkspaceAccess(),
+                'workspaces' => $module->getWorkspaceAccess() ?: $module->getParentModule()?->getWorkspaceAccess(),
                 'isStandalone' => $module->isStandalone() ? 'true' : 'false',
                 'submodules' => $module->hasSubModules() ? implode(',', array_keys($module->getSubModules())) : '',
                 'path' => $module->getPath(),
-- 
GitLab