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>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if can_view_org_menu() %}
|
||||||
<li class="nav-item {{ current_route starts with 'organization_' ? 'active' : '' }}">
|
<li class="nav-item {{ current_route starts with 'organization_' ? 'active' : '' }}">
|
||||||
{% if is_granted('ROLE_ADMIN') %}
|
|
||||||
<a class="nav-link" href="{{ path('organization_index') }}">
|
<a class="nav-link" href="{{ path('organization_index') }}">
|
||||||
<i class="icon-grid menu-icon"> {{ ux_icon('bi:buildings', {height: '15px', width: '15px'}) }}</i>
|
<i class="icon-grid menu-icon"> {{ ux_icon('bi:buildings', {height: '15px', width: '15px'}) }}</i>
|
||||||
<span class="menu-title">Organizations</span>
|
<span class="menu-title">Organizations</span>
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
|
||||||
</li>
|
</li>
|
||||||
|
{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
Loading…
Reference in New Issue