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() : '';