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) <noreply@anthropic.com>
30 lines
917 B
PHP
30 lines
917 B
PHP
<?php
|
|
|
|
namespace MintyPHP\Module\HelpCenter\Providers;
|
|
|
|
use MintyPHP\App\AppContainer;
|
|
use MintyPHP\App\Module\Contracts\LayoutContextProvider;
|
|
use MintyPHP\Service\Access\AuthorizationService;
|
|
|
|
final class HelpCenterLayoutProvider implements LayoutContextProvider
|
|
{
|
|
public function provide(array $session, AppContainer $container): array
|
|
{
|
|
$userId = (int) ($session['user']['id'] ?? 0);
|
|
if ($userId <= 0) {
|
|
return ['help-center.nav' => ['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]];
|
|
}
|
|
}
|