Dynamically display Organization Tab
This commit is contained in:
parent
f8ba879cc9
commit
252fc775bb
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -30,13 +30,13 @@
|
|||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if can_view_org_menu() %}
|
||||
<li class="nav-item {{ current_route starts with 'organization_' ? 'active' : '' }}">
|
||||
{% if is_granted('ROLE_ADMIN') %}
|
||||
<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>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</nav>
|
||||
Loading…
Reference in New Issue