-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathDashboardController.php
More file actions
87 lines (77 loc) · 3.93 KB
/
Copy pathDashboardController.php
File metadata and controls
87 lines (77 loc) · 3.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?php
declare(strict_types=1);
namespace App\Controller\Admin;
use App\Repository\AdvisoryRepository;
use EasyCorp\Bundle\EasyAdminBundle\Attribute\AdminDashboard;
use EasyCorp\Bundle\EasyAdminBundle\Config\Assets;
use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
use Symfony\Component\HttpFoundation\Response;
#[AdminDashboard(routePath: '/admin', routeName: 'admin')]
class DashboardController extends AbstractDashboardController
{
public function __construct(
private readonly AdminUrlGenerator $adminUrlGenerator,
private readonly AdvisoryRepository $advisoryRepository,
) {
}
#[\Override]
public function index(): Response
{
$d = $this->adminUrlGenerator
->setController(ServerCrudController::class)->setAction(Crud::PAGE_INDEX)
->generateUrl();
return $this->redirect($d);
}
#[\Override]
public function configureDashboard(): Dashboard
{
return Dashboard::new()
->setTitle('<img src="/img/itk-sites-logo.png" width="170px" alt="ITK sites logo">')
->setFaviconPath('img/favicon.ico')
->renderContentMaximized();
}
#[\Override]
public function configureMenuItems(): iterable
{
yield MenuItem::linkToDashboard('Dashboard', 'fa fa-home');
yield MenuItem::linkTo(ServerCrudController::class, 'Servers', 'fas fa-server');
yield MenuItem::linkTo(InstallationCrudController::class, 'Installations', 'fas fa-folder');
yield MenuItem::linkTo(SiteCrudController::class, 'Sites', 'fas fa-bookmark');
yield MenuItem::linkTo(DomainCrudController::class, 'Domains', 'fas fa-link');
yield MenuItem::linkTo(OIDCCrudController::class, 'OIDC', 'fas fa-key');
yield MenuItem::linkTo(ServiceCertificateCrudController::class, 'Service certificates', 'fas fa-lock');
yield MenuItem::linkTo(SecurityContractCrudController::class, 'Service Agreements', 'fas fa-file-contract');
yield MenuItem::section('Dependencies');
yield MenuItem::linkTo(PackageCrudController::class, 'Packages', 'fas fa-cube');
yield MenuItem::linkTo(PackageVersionCrudController::class, 'Package Versions', 'fas fa-cubes');
yield MenuItem::linkTo(AdvisoryCrudController::class, 'Advisories', 'fas fa-skull-crossbones')->setBadge($this->advisoryRepository->count([]), 'dark');
yield MenuItem::linkToRoute('Repo advisories', 'fas fa-shield-virus', 'admin_repo_advisories');
yield MenuItem::linkTo(ModuleCrudController::class, 'Modules', 'fas fa-cube');
yield MenuItem::linkTo(ModuleVersionCrudController::class, 'Modules Versions', 'fas fa-cubes');
yield MenuItem::linkTo(DockerImageCrudController::class, 'Docker Images', 'fas fa-cube');
yield MenuItem::linkTo(DockerImageTagCrudController::class, 'Docker Image Tags', 'fas fa-cubes');
yield MenuItem::linkTo(GitRepoCrudController::class, 'Git Repositories', 'fa-brands fa-github');
yield MenuItem::linkTo(GitTagCrudController::class, 'Git Tags', 'fa-brands fa-git-alt');
yield MenuItem::section('Results');
yield MenuItem::linkTo(DetectionResultCrudController::class, 'Detection Results', 'fas fa-upload');
}
#[\Override]
public function configureCrud(): Crud
{
return Crud::new()
// this defines the pagination size for all CRUD controllers
// (each CRUD controller can override this value if needed)
->setDateTimeFormat('yyyy-MM-dd HH:mm:ss')
->setPageTitle('detail', '%entity_label_singular%: %entity_as_string%')
;
}
#[\Override]
public function configureAssets(): Assets
{
return Assets::new()->addCssFile('css/admin.css');
}
}