src/Controller/Admin/DashboardController.php line 39

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Controller\Admin\Project\RequestLabeledProjectCrudController;
  4. use App\Controller\Admin\Project\RequestPublishedProjectCrudController;
  5. use App\Entity\Page;
  6. use App\Entity\User;
  7. use App\Entity\Theme;
  8. use App\Entity\Statut;
  9. use App\Entity\Project;
  10. use App\Entity\University;
  11. use App\Entity\FeatureAccess;
  12. use App\Entity\FeatureAccessAudit;
  13. use App\Entity\ReportTemplate;
  14. use App\Entity\SecurityAuditLog;
  15. use Symfony\Component\HttpFoundation\Response;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
  18. use App\Controller\Admin\User\UserCrudController;
  19. use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
  20. use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
  21. use App\Controller\Admin\Project\ProjectCrudController;
  22. use App\Controller\Admin\User\InactiveUserCrudController;
  23. use App\Controller\Admin\AdminUser\AdminUserCrudController;
  24. use App\Controller\Admin\Project\ArchivedProjectCrudController;
  25. use App\Controller\Admin\Project\InactiveProjectCrudController;
  26. use App\Controller\Admin\AdminUser\ScientificAdminUserCrudController;
  27. use App\Controller\Admin\User\DisabledUserCrudController;
  28. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
  29. /**
  30.  * Class DashboardController
  31.  * @package App\Controller\Admin
  32.  */
  33. class DashboardController extends AbstractDashboardController
  34. {
  35.     #[Route(path'/admin'name'admin')]
  36.     public function index(): Response
  37.     {
  38.         return $this->render('admin/dashboard.html.twig');
  39.     }
  40.     public function configureDashboard(): Dashboard
  41.     {
  42.         return Dashboard::new()
  43.             ->setTitle('LaboMega');
  44.     }
  45.     public function configureMenuItems(): iterable
  46.     {
  47.         return [
  48.             MenuItem::linkToDashboard('admin.dashboard''fa fa-home'),
  49.             MenuItem::section('admin.section.admins')->setPermission('ROLE_ADMIN'),
  50.             MenuItem::linkToCrud('admin.label.admins''fa fa-asterisk'User::class)->setController(AdminUserCrudController::class)->setPermission('ROLE_ADMIN'),
  51.             MenuItem::linkToCrud('admin.label.scientific_admins''fa fa-asterisk'User::class)->setController(ScientificAdminUserCrudController::class)->setPermission('ROLE_ADMIN'),
  52.             MenuItem::section('admin.section.users'),
  53.             MenuItem::linkToCrud('admin.label.users''fa fa-user'User::class)->setController(UserCrudController::class),
  54.             MenuItem::linkToCrud('admin.label.inactive_users''fa fa-bookmark'User::class)->setController(InactiveUserCrudController::class),
  55.             MenuItem::linkToCrud('admin.label.disable_user''fa fa-door-open'User::class)->setController(DisabledUserCrudController::class),
  56.             MenuItem::section('admin.section.projects'),
  57.             MenuItem::linkToCrud('admin.label.projects''fa fa-archive'Project::class)->setController(ProjectCrudController::class),
  58.             MenuItem::linkToCrud('admin.label.inactive_projects''fa fa-bookmark'Project::class)->setController(InactiveProjectCrudController::class),
  59.             MenuItem::linkToCrud('admin.label.request_labeled_projects''fa fa-archive'Project::class)->setController(RequestLabeledProjectCrudController::class),
  60.             MenuItem::linkToCrud('admin.label.request_published_projects''fa fa-archive'Project::class)->setController(RequestPublishedProjectCrudController::class),
  61.             MenuItem::linkToCrud('admin.label.archived_projects''fa fa-box'Project::class)->setController(ArchivedProjectCrudController::class),
  62.             MenuItem::section('admin.section.organizations'),
  63.             MenuItem::linkToCrud('admin.label.organizations''fa fa-archive'Project::class)->setController(OrganizationCrudController::class),
  64.             MenuItem::section('IA — Templates''fa fa-robot')->setPermission('ROLE_ADMIN'),
  65.             // "Templates de prompts d'évaluation" retiré (mai 2026) — plugin
  66.             // "Rapport d'évaluation" désactivé via FeatureAccess `plugin.evaluation`.
  67.             // L'entité `EvaluationPromptTemplate` et son CRUD restent en code
  68.             // (pas de breaking change DB) ; on retire juste le lien du menu.
  69.             MenuItem::linkToCrud('Trames de rapport (plugin Rapports)''fa fa-file-alt'ReportTemplate::class)
  70.                 ->setController(ReportTemplateCrudController::class)
  71.                 ->setPermission('ROLE_ADMIN'),
  72.             MenuItem::section('Euro-Office — Accès''fa fa-key')->setPermission('ROLE_ADMIN'),
  73.             MenuItem::linkToCrud('Plugins & menus par utilisateur/rôle''fa fa-key'FeatureAccess::class)
  74.                 ->setController(FeatureAccessCrudController::class)
  75.                 ->setPermission('ROLE_ADMIN'),
  76.             MenuItem::linkToCrud('Audit log (modifs accès)''fa fa-history'FeatureAccessAudit::class)
  77.                 ->setController(FeatureAccessAuditCrudController::class)
  78.                 ->setPermission('ROLE_ADMIN'),
  79.             MenuItem::section('Monitoring''fa fa-chart-line')->setPermission('ROLE_ADMIN'),
  80.             MenuItem::linkToRoute('Dashboard temps réel''fa fa-chart-line''admin_monitoring_dashboard')
  81.                 ->setPermission('ROLE_ADMIN'),
  82.             MenuItem::linkToCrud('Audit log — Sécurité IA''fa fa-shield-alt'SecurityAuditLog::class)
  83.                 ->setController(SecurityAuditLogCrudController::class)
  84.                 ->setPermission('ROLE_ADMIN'),
  85.             MenuItem::section('admin.section.others')->setPermission('ROLE_ADMIN'),
  86.             MenuItem::linkToCrud('admin.label.cms_pages''fa fa-pager'Page::class)->setPermission('ROLE_ADMIN'),
  87.             MenuItem::linkToCrud('admin.label.themes''fa fa-certificate'Theme::class)->setPermission('ROLE_ADMIN'),
  88.             MenuItem::linkToCrud('admin.label.works''fa fa-check'Statut::class)->setPermission('ROLE_ADMIN'),
  89.             MenuItem::linkToCrud('admin.label.universities''fa fa-university'University::class)->setPermission('ROLE_ADMIN'),
  90.             MenuItem::linkToCrud('admin.label.mail''fa fa-envelope-square'Letter::class)->setController(LetterCrudController::class),
  91.             MenuItem::linkToRoute('admin.label.translation''fa fa-flag''lexik_translation_grid')->setPermission('ROLE_ADMIN'),
  92.         ];
  93.     }
  94.     public function configureCrud(): Crud
  95.     {
  96.         return Crud::new()
  97.             ->setPageTitle('new''admin.title.new')
  98.             ->setPageTitle('edit''admin.title.edit')
  99.             ->setPageTitle('detail''admin.title.detail');
  100.     }
  101. }