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

DashboardController   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 13
c 1
b 0
f 0
dl 0
loc 38
rs 10
wmc 5

5 Methods

Rating   Name   Duplication   Size   Complexity  
A configureDashboard() 0 3 1
A configureUserMenu() 0 3 1
A configureMenuItems() 0 11 1
A configureCrud() 0 3 1
A index() 0 5 1
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