UserServiceProvider   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 106
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 6
Bugs 1 Features 0
Metric Value
wmc 9
lcom 1
cbo 2
dl 0
loc 106
rs 10
c 6
b 1
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A register() 0 8 1
A boot() 0 10 1
A provides() 0 4 1
A registerBindings() 0 18 1
A registerMiddleware() 0 10 3
A getUserPackageServiceProvider() 0 10 2
1
<?php namespace Modules\User\Providers;
2
3
use Illuminate\Support\ServiceProvider;
4
5
class UserServiceProvider extends ServiceProvider
6
{
7
    /**
8
     * Indicates if loading of the provider is deferred.
9
     *
10
     * @var bool
11
     */
12
    protected $defer = false;
13
14
    /**
15
     * @var array
16
     */
17
    protected $providers = [
18
        'Sentinel' => 'Cartalyst\\Sentinel\\Laravel\\SentinelServiceProvider',
19
        'Sentry'   => 'Cartalyst\\Sentry\\SentryServiceProvider',
20
        'Usher'    => 'Maatwebsite\\Usher\\UsherServiceProvider'
21
    ];
22
23
    /**
24
     * @var array
25
     */
26
    protected $middleware = [
27
        'User' => [
28
            'auth.guest' => 'GuestMiddleware',
29
            'logged.in' => 'LoggedInMiddleware'
30
        ],
31
    ];
32
33
    /**
34
     * Register the service provider.
35
     *
36
     * @return void
37
     */
38
    public function register()
39
    {
40
        $this->app->register(
41
            $this->getUserPackageServiceProvider()
42
        );
43
44
        $this->registerBindings();
45
    }
46
47
    /**
48
     */
49
    public function boot()
50
    {
51
        $this->registerMiddleware($this->app['router']);
52
53
        $this->publishes([
54
            __DIR__ . '/../Resources/views' => base_path('resources/views/asgard/user'),
55
        ]);
56
        $this->loadViewsFrom(base_path('resources/views/asgard/user'), 'user');
57
        $this->loadViewsFrom(__DIR__ . '/../Resources/views', 'user');
58
    }
59
60
    /**
61
     * Get the services provided by the provider.
62
     *
63
     * @return array
64
     */
65
    public function provides()
66
    {
67
        return array();
68
    }
69
70
    private function registerBindings()
71
    {
72
        $driver = config('asgard.user.users.driver', 'Sentinel');
73
74
        $this->app->bind(
75
            'Modules\User\Repositories\UserRepository',
76
            "Modules\\User\\Repositories\\{$driver}\\{$driver}UserRepository"
77
        );
78
79
        $this->app->bind(
80
            'Modules\User\Repositories\RoleRepository',
81
            "Modules\\User\\Repositories\\{$driver}\\{$driver}RoleRepository"
82
        );
83
        $this->app->bind(
84
            'Modules\Core\Contracts\Authentication',
85
            "Modules\\User\\Repositories\\{$driver}\\{$driver}Authentication"
86
        );
87
    }
88
89
    private function registerMiddleware($router)
90
    {
91
        foreach ($this->middleware as $module => $middlewares) {
92
            foreach ($middlewares as $name => $middleware) {
93
                $class = "Modules\\{$module}\\Http\\Middleware\\{$middleware}";
94
95
                $router->middleware($name, $class);
96
            }
97
        }
98
    }
99
100
    private function getUserPackageServiceProvider()
101
    {
102
        $driver = config('asgard.user.users.driver', 'Sentinel');
103
104
        if (!isset($this->providers[$driver])) {
105
            throw new \Exception("Driver [{$driver}] does not exist");
106
        }
107
108
        return $this->providers[$driver];
109
    }
110
}
111