Passed
Push — master ( 955e4f...05df7e )
by Jeff
02:10
created

DashboardController::configureMenuItems()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 7
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 11
rs 10
1
<?php
2
3
declare(strict_types=1);
4
/**
5
 * This file is part of the mailserver-admin package.
6
 * (c) Jeffrey Boehm <https://github.com/jeboehm/mailserver-admin>
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 */
10
11
namespace App\Controller\Admin;
12
13
use App\Entity\Alias;
14
use App\Entity\Domain;
15
use App\Entity\User;
16
use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
17
use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
18
use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
19
use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
20
use EasyCorp\Bundle\EasyAdminBundle\Config\UserMenu;
21
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
22
use EasyCorp\Bundle\EasyAdminBundle\Router\CrudUrlGenerator;
23
use Symfony\Component\HttpFoundation\Response;
24
use Symfony\Component\Routing\Annotation\Route;
25
use Symfony\Component\Security\Core\User\UserInterface;
26
27
class DashboardController extends AbstractDashboardController
28
{
29
    /**
30
     * @Route("/", name="admin_index")
31
     */
32
    public function index(): Response
33
    {
34
        $routeBuilder = $this->get(CrudUrlGenerator::class)->build();
35
36
        return $this->redirect($routeBuilder->setController(DomainCrudController::class)->generateUrl());
37
    }
38
39
    public function configureDashboard(): Dashboard
40
    {
41
        return Dashboard::new()->setTitle('mailserver-admin');
42
    }
43
44
    public function configureCrud(): Crud
45
    {
46
        return Crud::new();
47
    }
48
49
    public function configureUserMenu(UserInterface $user): UserMenu
50
    {
51
        return parent::configureUserMenu($user)->displayUserAvatar(false);
52
    }
53
54
    public function configureMenuItems(): iterable
55
    {
56
        $routeBuilder = $this->get(CrudUrlGenerator::class)->build();
57
58
        yield MenuItem::linkToCrud('Domain', 'fas fa-globe', Domain::class);
59
        yield MenuItem::linkToCrud('User', 'fas fa-user', User::class);
60
        yield MenuItem::linkToCrud('Alias', 'far fa-list-alt', Alias::class);
61
62
        yield MenuItem::section('Other', 'fas fa-folder-open');
63
        yield MenuItem::linkToUrl('DKIM', 'fas fa-shield-alt', $routeBuilder->setController(DKIMCrudController::class)->setAction(Action::INDEX)->generateUrl());
64
        yield MenuItem::linkToUrl('Webmail', 'fas fa-folder-open', '/webmail')->setLinkRel('noreferrer');
65
    }
66
}
67