From 376cf67c31965d340cf4a413d35bbe6e6d9d4b52 Mon Sep 17 00:00:00 2001 From: fs Date: Thu, 26 Mar 2026 14:41:17 +0100 Subject: [PATCH] fix(help-center): resolve API docs visibility via layout provider The api_docs.view ability was missing from layoutAuth after removing the sidebar.admin_nav_item slot from the api-docs module. Add a HelpCenterLayoutProvider that checks the ability via AuthorizationService and provides the result in layout nav context (help-center.nav). Panel template now reads can_view_api_docs from the provider instead of layoutAuth. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../Providers/HelpCenterLayoutProvider.php | 29 +++++++++++++++++++ modules/help-center/module.php | 4 ++- .../templates/aside-help-panel.phtml | 4 ++- 3 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 modules/help-center/lib/Module/HelpCenter/Providers/HelpCenterLayoutProvider.php diff --git a/modules/help-center/lib/Module/HelpCenter/Providers/HelpCenterLayoutProvider.php b/modules/help-center/lib/Module/HelpCenter/Providers/HelpCenterLayoutProvider.php new file mode 100644 index 0000000..79e8b2b --- /dev/null +++ b/modules/help-center/lib/Module/HelpCenter/Providers/HelpCenterLayoutProvider.php @@ -0,0 +1,29 @@ + ['can_view_api_docs' => false]]; + } + + try { + $authService = $container->get(AuthorizationService::class); + $canViewApiDocs = $authService->authorize('api_docs.view', [ + 'actor_user_id' => $userId, + ])->isAllowed(); + } catch (\Throwable) { + $canViewApiDocs = false; + } + + return ['help-center.nav' => ['can_view_api_docs' => $canViewApiDocs]]; + } +} diff --git a/modules/help-center/module.php b/modules/help-center/module.php index 41aac04..591c8d1 100644 --- a/modules/help-center/module.php +++ b/modules/help-center/module.php @@ -39,7 +39,9 @@ return [ 'search_resources' => [], 'asset_groups' => [], 'scheduler_jobs' => [], - 'layout_context_providers' => [], + 'layout_context_providers' => [ + \MintyPHP\Module\HelpCenter\Providers\HelpCenterLayoutProvider::class, + ], 'session_providers' => [], 'permissions' => [], 'event_listeners' => [], diff --git a/modules/help-center/templates/aside-help-panel.phtml b/modules/help-center/templates/aside-help-panel.phtml index 1910c20..0de435f 100644 --- a/modules/help-center/templates/aside-help-panel.phtml +++ b/modules/help-center/templates/aside-help-panel.phtml @@ -3,8 +3,10 @@ use MintyPHP\Service\Docs\DocsCatalogService; $layoutAuth = is_array($viewAuth['layout'] ?? null) ? $viewAuth['layout'] : []; +$layoutNav = is_array($layoutNav ?? null) ? $layoutNav : []; +$helpNav = is_array($layoutNav['help-center.nav'] ?? null) ? $layoutNav['help-center.nav'] : []; $canViewDocs = !empty($layoutAuth['can_view_docs']); -$canViewApiDocs = !empty($layoutAuth['api_docs.view']); +$canViewApiDocs = !empty($helpNav['can_view_api_docs']); $canViewSystemInfo = !empty($layoutAuth['can_view_system_info']); $docsDefaultSlug = $canViewDocs ? DocsCatalogService::defaultSlug() : '';