EnergyCalculatorProvider::boot()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
dl 0
loc 3
c 1
b 1
f 0
rs 10
cc 1
eloc 1
nc 1
nop 1
1
<?php
2
3
namespace Dominikzogg\EnergyCalculator;
4
5
use Dominikzogg\EnergyCalculator\Command\UserCreateCommand;
6
use Dominikzogg\EnergyCalculator\Entity\User;
7
use Dominikzogg\EnergyCalculator\Form\AjaxEntityType;
8
use Dominikzogg\EnergyCalculator\Form\EntityType;
9
use Dominikzogg\EnergyCalculator\Form\SimpleDateType;
10
use Dominikzogg\EnergyCalculator\Provider\MenuProvider;
11
use Dominikzogg\EnergyCalculator\Voter\RelatedObjectVoter;
12
use Saxulum\BundleProvider\Provider\AbstractBundleProvider;
13
use Saxulum\Crud\Listing\ListingFactory;
14
use Saxulum\Crud\Twig\FormLabelExtension;
15
use Saxulum\UserProvider\Model\AbstractUser;
16
use Saxulum\UserProvider\Silex\Provider\SaxulumUserProvider;
17
use Silex\Application;
18
use Symfony\Component\Security\Core\Role\RoleHierarchy;
19
20
class EnergyCalculatorProvider extends AbstractBundleProvider
21
{
22
    public function register(Application $app)
23
    {
24
        $app->register(new MenuProvider());
25
26
        $app->register(new SaxulumUserProvider(), array(
27
            'saxulum.userprovider.userclass' => User::class,
28
        ));
29
30
        $app['twig'] = $app->share($app->extend('twig', function (\Twig_Environment $twig) {
31
            $twig->addExtension(new FormLabelExtension());
32
33
            return $twig;
34
        }));
35
36
        $app['form.types'] = $app->share($app->extend('form.types', function ($types) use ($app) {
37
            $types[] = new SimpleDateType();
38
            $types[] = new EntityType($app['doctrine']);
39
            $types[] = new AjaxEntityType($app['doctrine']);
40
41
            return $types;
42
        }));
43
44
        $app['security.voters'] = $app->share($app->extend('security.voters', function ($voters) use ($app) {
45
            $voters[] = new RelatedObjectVoter(
46
                new RoleHierarchy($app['security.role_hierarchy']),
47
                $app['logger']
48
            );
49
50
            return $voters;
51
        }));
52
53
        $app['security.role_hierarchy'] = $app->share($app->extend('security.role_hierarchy', function ($roleHierarchy) use ($app) {
54
55
            // comestible
56
            $roleHierarchy['ROLE_COMESTIBLE_LIST'] = array();
57
            $roleHierarchy['ROLE_COMESTIBLE_CREATE'] = array('ROLE_COMESTIBLE_LIST');
58
            $roleHierarchy['RELATED_COMESTIBLE_EDIT'] = array('ROLE_COMESTIBLE_LIST');
59
            $roleHierarchy['RELATED_COMESTIBLE_VIEW'] = array('ROLE_COMESTIBLE_LIST');
60
            $roleHierarchy['RELATED_COMESTIBLE_DELETE'] = array('ROLE_COMESTIBLE_LIST');
61
62
            // day
63
            $roleHierarchy['ROLE_DAY_LIST'] = array();
64
            $roleHierarchy['ROLE_DAY_CREATE'] = array('ROLE_DAY_LIST');
65
            $roleHierarchy['RELATED_DAY_EDIT'] = array('ROLE_DAY_LIST');
66
            $roleHierarchy['RELATED_DAY_VIEW'] = array('ROLE_DAY_LIST');
67
            $roleHierarchy['RELATED_DAY_DELETE'] = array('ROLE_DAY_LIST');
68
69
            $roleHierarchy[AbstractUser::ROLE_USER][] = 'ROLE_COMESTIBLE_CREATE';
70
            $roleHierarchy[AbstractUser::ROLE_USER][] = 'RELATED_COMESTIBLE_EDIT';
71
            $roleHierarchy[AbstractUser::ROLE_USER][] = 'RELATED_COMESTIBLE_VIEW';
72
            $roleHierarchy[AbstractUser::ROLE_USER][] = 'RELATED_COMESTIBLE_DELETE';
73
74
            $roleHierarchy[AbstractUser::ROLE_USER][] = 'ROLE_DAY_CREATE';
75
            $roleHierarchy[AbstractUser::ROLE_USER][] = 'RELATED_DAY_EDIT';
76
            $roleHierarchy[AbstractUser::ROLE_USER][] = 'RELATED_DAY_VIEW';
77
            $roleHierarchy[AbstractUser::ROLE_USER][] = 'RELATED_DAY_DELETE';
78
79
            return $roleHierarchy;
80
        }));
81
82
        $app['security.access_rules'] = $app->share($app->extend('security.access_rules', function ($rules) use ($app) {
83
            $rules[] = array('^/_profiler*', 'IS_AUTHENTICATED_ANONYMOUSLY');
84
            $rules[] = array('^/[^/]+/login*', 'IS_AUTHENTICATED_ANONYMOUSLY');
85
            $rules[] = array('^/[^/]+/logout*', 'IS_AUTHENTICATED_ANONYMOUSLY');
86
            $rules[] = array('^/[^/]+/admin', 'ROLE_ADMIN');
87
            $rules[] = array('^/[^/]+', 'ROLE_USER');
88
89
            return $rules;
90
        }));
91
92
        $app['console.commands'] = $app->share(
93
            $app->extend('console.commands', function (array $commands) use ($app) {
94
                $commands[] = new UserCreateCommand(null, $app['saxulum.userprovider.userclass']);
95
96
                return $commands;
97
            })
98
        );
99
100
        $app['saxulum.crud.listing.types'] = $app->share(function(){
101
            return array();
102
        });
103
104
        $app['saxulum.crud.listing.factory'] = $app->share(function() use ($app) {
105
            return new ListingFactory($app['saxulum.crud.listing.types']);
106
        });
107
108
        $this->addControllers($app);
109
        $this->addDoctrineOrmMappings($app);
110
        $this->addTranslatorRessources($app);
0 ignored issues
show
Deprecated Code introduced by
The method Saxulum\BundleProvider\P...dTranslatorRessources() has been deprecated.

This method has been deprecated.

Loading history...
111
        $this->addTwigLoaderFilesystemPath($app);
112
    }
113
114
    public function boot(Application $app)
115
    {
116
    }
117
}
118