Dynamically display Organization Tab

This commit is contained in:
Charles 2026-02-11 14:39:15 +01:00
parent f8ba879cc9
commit 252fc775bb
2 changed files with 45 additions and 4 deletions

View File

@ -0,0 +1,41 @@
<?php
namespace App\Twig;
use App\Service\UserService;
use Symfony\Bundle\SecurityBundle\Security;
use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;
class MenuExtension extends AbstractExtension
{
public function __construct(
private readonly UserService $userService,
private readonly Security $security
) {}
public function getFunctions(): array
{
return [
// We create a new Twig function called 'can_view_org_menu'
new TwigFunction('can_view_org_menu', [$this, 'canViewOrgMenu']),
];
}
public function canViewOrgMenu(): bool
{
$user = $this->security->getUser();
if (!$user) {
return false;
}
// 1. If Super Admin, they see it
if ($this->security->isGranted('ROLE_ADMIN')) {
return true;
}
return $this->userService->isAdminInAnyOrganization($user);
}
}

View File

@ -30,13 +30,13 @@
</li>
{% endif %}
<li class="nav-item {{ current_route starts with 'organization_' ? 'active' : '' }}">
{% if is_granted('ROLE_ADMIN') %}
{% if can_view_org_menu() %}
<li class="nav-item {{ current_route starts with 'organization_' ? 'active' : '' }}">
<a class="nav-link" href="{{ path('organization_index') }}">
<i class="icon-grid menu-icon"> {{ ux_icon('bi:buildings', {height: '15px', width: '15px'}) }}</i>
<span class="menu-title">Organizations</span>
</a>
{% endif %}
</li>
</li>
{% endif %}
</ul>
</nav>