feat: list administrative users for admins
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace App\Controller\Admin\System\User;
|
||||
|
||||
use App\Repository\UserRepository;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
|
||||
class IndexController extends AbstractController
|
||||
{
|
||||
public function __construct(private readonly UserRepository $userRepository)
|
||||
{}
|
||||
|
||||
#[Route('/admin/system/user', name: 'app_admin_system_user_index')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
public function index(): Response
|
||||
{
|
||||
$users = $this->userRepository->getAdministrativeUsers();
|
||||
|
||||
return $this->render('admin/system/user/index.html.twig', [
|
||||
'users' => $users,
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -147,9 +147,30 @@ class User implements UserInterface, TimestampableEntityInterface
|
||||
{
|
||||
$roles = ['ROLE_USER', ...$this->roles];
|
||||
|
||||
if (true === $this->isSuperAdmin()) {
|
||||
$roles[] = 'ROLE_SUPER_ADMIN';
|
||||
}
|
||||
|
||||
return array_unique($roles);
|
||||
}
|
||||
|
||||
public function getRolesLabels(): array
|
||||
{
|
||||
$labels = [];
|
||||
|
||||
foreach ($this->roles as $role) {
|
||||
$labels[] = match($role) {
|
||||
'ROLE_ADMIN' => 'Admin',
|
||||
'ROLE_MANAGER' => 'Reisemanager',
|
||||
'ROLE_HOUSE_MANAGER' => 'Hausleitung',
|
||||
'ROLE_TEAMER' => 'Teamer',
|
||||
default => $role,
|
||||
};
|
||||
}
|
||||
|
||||
return $labels;
|
||||
}
|
||||
|
||||
public function setRoles(array $roles): static
|
||||
{
|
||||
$this->roles = $roles;
|
||||
|
||||
@@ -170,6 +170,12 @@ class AdminMenuBuilder extends AbstractMenuBuilder
|
||||
],
|
||||
],
|
||||
]);
|
||||
$settingsMenu->addChild('Administrative Benutzer', [
|
||||
'route' => 'app_admin_system_user_index',
|
||||
'linkAttributes' => [
|
||||
'title' => 'Administrative Benutzer',
|
||||
],
|
||||
]);
|
||||
|
||||
$menu->addChild('Logs', [
|
||||
'route' => 'app_admin_log_index',
|
||||
|
||||
@@ -21,6 +21,27 @@ class UserRepository extends ServiceEntityRepository
|
||||
parent::__construct($registry, User::class);
|
||||
}
|
||||
|
||||
public function getAdministrativeUsers(): array
|
||||
{
|
||||
$qb = $this->createQueryBuilder('u');
|
||||
|
||||
return $qb
|
||||
->where($qb->expr()->orX(
|
||||
$qb->expr()->like('u.roles', ':role_admin'),
|
||||
$qb->expr()->like('u.roles', ':role_manager'),
|
||||
$qb->expr()->like('u.roles', ':role_house_manager')
|
||||
))
|
||||
->orderBy('u.lastName', 'ASC')
|
||||
->setParameters([
|
||||
'role_admin' => '%"ROLE_ADMIN"%',
|
||||
'role_manager' => '%"ROLE_MANAGER"%',
|
||||
'role_house_manager' => '%"ROLE_HOUSE_MANAGER"%',
|
||||
])
|
||||
->getQuery()
|
||||
->getResult()
|
||||
;
|
||||
}
|
||||
|
||||
public function getUsersByRoleAndHotelCode(string $role, string $hotelCode): array
|
||||
{
|
||||
$hotelCodeBase = substr($hotelCode, 0, 3);
|
||||
|
||||
Reference in New Issue
Block a user