Completed
Pull Request — master (#26)
by ARCANEDEV
05:14
created

PackagesServiceProvider   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 120
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 97.78%

Importance

Changes 4
Bugs 0 Features 0
Metric Value
wmc 10
c 4
b 0
f 0
lcom 1
cbo 4
dl 0
loc 120
ccs 44
cts 45
cp 0.9778
rs 10

8 Methods

Rating   Name   Duplication   Size   Complexity  
A register() 0 9 1
A registerApiHelperPackage() 0 4 1
A registerGravatarPackage() 0 4 1
A registerLaravelImpersonatorPackage() 0 5 1
A registerLaravelAuthPackage() 0 7 1
A configLaravelImpersonatorPackage() 0 6 1
A configLaravelAuthPackage() 0 15 2
A rebindModels() 0 23 2
1
<?php namespace Arcanesoft\Auth\Providers;
2
3
use Arcanedev\Gravatar\GravatarServiceProvider;
4
use Arcanedev\LaravelApiHelper\ApiHelperServiceProvider;
5
use Arcanedev\LaravelAuth\LaravelAuthServiceProvider;
6
use Arcanedev\LaravelAuth\Services\SocialAuthenticator;
7
use Arcanedev\LaravelImpersonator\ImpersonatorServiceProvider;
8
use Arcanedev\Support\ServiceProvider;
9
use Illuminate\Support\Arr;
10
11
/**
12
 * Class     PackagesServiceProvider
13
 *
14
 * @package  Arcanesoft\Auth\Providers
15
 * @author   ARCANEDEV <[email protected]>
16
 */
17
class PackagesServiceProvider extends ServiceProvider
18
{
19
    /* -----------------------------------------------------------------
20
     |  Main Methods
21
     | -----------------------------------------------------------------
22
     */
23
    /**
24
     * Register the service provider.
25
     */
26 10
    public function register()
27
    {
28 10
        parent::register();
29
30 10
        $this->registerApiHelperPackage();
31 10
        $this->registerGravatarPackage();
32 10
        $this->registerLaravelAuthPackage();
33 10
        $this->registerLaravelImpersonatorPackage();
34 10
    }
35
36
    /* -----------------------------------------------------------------
37
     |  Register Packages
38
     | -----------------------------------------------------------------
39
     */
40
    /**
41
     * Register the API Helper package.
42
     */
43 10
    private function registerApiHelperPackage()
44
    {
45 10
        $this->registerProvider(ApiHelperServiceProvider::class);
46 10
    }
47
48
    /**
49
     * Register the Gravatar package.
50
     */
51 10
    private function registerGravatarPackage()
52
    {
53 10
        $this->registerProvider(GravatarServiceProvider::class);
54 10
    }
55
56
    /**
57
     * Register the Laravel Auth package.
58
     */
59 10
    private function registerLaravelAuthPackage()
60
    {
61 10
        $this->registerProvider(LaravelAuthServiceProvider::class);
62
63 10
        $this->configLaravelAuthPackage();
64 10
        $this->rebindModels();
65 10
    }
66
67
    /**
68
     * Register the Laravel Impersonator package.
69
     */
70 10
    private function registerLaravelImpersonatorPackage()
71
    {
72 10
        $this->registerProvider(ImpersonatorServiceProvider::class);
73 10
        $this->configLaravelImpersonatorPackage();
74 10
    }
75
76
    /* -----------------------------------------------------------------
77
     |  Config Packages
78
     | -----------------------------------------------------------------
79
     */
80
81
    /**
82
     * Config the Laravel Auth package.
83
     */
84 10
    private function configLaravelAuthPackage()
85
    {
86 10
        $config = $this->config();
87 10
        $config->set(
88 10
            'laravel-auth',
89 10
            Arr::only($config->get('arcanesoft.auth'), [
90 10
                'database', 'users', 'roles', 'role-user', 'permissions-groups', 'permissions', 'permission-role',
91
                'password-resets', 'events', 'user-confirmation', 'track-activity', 'socialite', 'throttles', 'seeds'
92
            ])
93
        );
94
95 10
        if (SocialAuthenticator::isEnabled()) {
96
            $this->registerProvider(\Laravel\Socialite\SocialiteServiceProvider::class);
97
        }
98 10
    }
99
100
    /**
101
     * Config the Laravel Impersonator Package.
102
     */
103 10
    private function configLaravelImpersonatorPackage()
104
    {
105 10
        $config = $this->config();
106
107 10
        $config->set('impersonator', $config->get('arcanesoft.auth.impersonation', ['enabled' => false]));
108 10
    }
109
110
    /**
111
     * Rebind the auth models.
112
     */
113 10
    private function rebindModels()
114
    {
115 10
        $config   = $this->config();
116
        $bindings = [
117
            [
118 10
                'abstract' => \Arcanesoft\Contracts\Auth\Models\User::class,
119 10
                'concrete' => $config->get('arcanesoft.auth.users.model'),
120
            ],[
121
                'abstract' => \Arcanesoft\Contracts\Auth\Models\Role::class,
122 10
                'concrete' => $config->get('arcanesoft.auth.roles.model'),
123
            ],[
124
                'abstract' => \Arcanesoft\Contracts\Auth\Models\Permission::class,
125 10
                'concrete' => $config->get('arcanesoft.auth.permissions.model'),
126
            ],[
127
                'abstract' => \Arcanesoft\Contracts\Auth\Models\PermissionsGroup::class,
128 10
                'concrete' => $config->get('arcanesoft.auth.permissions-groups.model'),
129
            ],
130
        ];
131
132 10
        foreach ($bindings as $binding) {
133 10
            $this->bind($binding['abstract'], $binding['concrete']);
134
        }
135 10
    }
136
}
137