Completed
Push — master ( ed186e...141512 )
by ARCANEDEV
06:21
created

configLaravelImpersonatorPackage()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 6
ccs 4
cts 4
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 0
crap 1
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 12
    public function register()
27
    {
28 12
        parent::register();
29
30 12
        $this->registerApiHelperPackage();
31 12
        $this->registerGravatarPackage();
32 12
        $this->registerLaravelAuthPackage();
33 12
        $this->registerLaravelImpersonatorPackage();
34 12
    }
35
36
    /* -----------------------------------------------------------------
37
     |  Register Packages
38
     | -----------------------------------------------------------------
39
     */
40
    /**
41
     * Register the API Helper package.
42
     */
43 12
    private function registerApiHelperPackage()
44
    {
45 12
        $this->registerProvider(ApiHelperServiceProvider::class);
46 12
    }
47
48
    /**
49
     * Register the Gravatar package.
50
     */
51 12
    private function registerGravatarPackage()
52
    {
53 12
        $this->registerProvider(GravatarServiceProvider::class);
54 12
    }
55
56
    /**
57
     * Register the Laravel Auth package.
58
     */
59 12
    private function registerLaravelAuthPackage()
60
    {
61 12
        $this->registerProvider(LaravelAuthServiceProvider::class);
62
63 12
        $this->configLaravelAuthPackage();
64 12
        $this->rebindModels();
65 12
    }
66
67
    /**
68
     * Register the Laravel Impersonator package.
69
     */
70 12
    private function registerLaravelImpersonatorPackage()
71
    {
72 12
        $this->registerProvider(ImpersonatorServiceProvider::class);
73 12
        $this->configLaravelImpersonatorPackage();
74 12
    }
75
76
    /* -----------------------------------------------------------------
77
     |  Config Packages
78
     | -----------------------------------------------------------------
79
     */
80
81
    /**
82
     * Config the Laravel Auth package.
83
     */
84 12
    private function configLaravelAuthPackage()
85
    {
86
        /** @var  \Illuminate\Contracts\Config\Repository  $config */
87 12
        $config = $this->config();
88 12
        $config->set('laravel-auth', Arr::except($config->get('arcanesoft.auth'), ['route', 'hasher']));
89
90 12
        if (SocialAuthenticator::isEnabled()) {
91
            $this->registerProvider(\Laravel\Socialite\SocialiteServiceProvider::class);
92
        }
93 12
    }
94
95
    /**
96
     * Config the Laravel Impersonator Package.
97
     */
98 12
    private function configLaravelImpersonatorPackage()
99
    {
100 12
        $config = $this->config();
101
102 12
        $config->set('impersonator', $config->get('arcanesoft.auth.impersonation', ['enabled' => false]));
103 12
    }
104
105
    /**
106
     * Rebind the auth models.
107
     */
108 12
    private function rebindModels()
109
    {
110 12
        $config   = $this->config();
111
        $bindings = [
112
            [
113 6
                'abstract' => \Arcanesoft\Contracts\Auth\Models\User::class,
114 12
                'concrete' => $config->get('arcanesoft.auth.users.model'),
115 12
            ],[
116 6
                'abstract' => \Arcanesoft\Contracts\Auth\Models\Role::class,
117 12
                'concrete' => $config->get('arcanesoft.auth.roles.model'),
118 6
            ],[
119 6
                'abstract' => \Arcanesoft\Contracts\Auth\Models\Permission::class,
120 12
                'concrete' => $config->get('arcanesoft.auth.permissions.model'),
121 6
            ],[
122 6
                'abstract' => \Arcanesoft\Contracts\Auth\Models\PermissionsGroup::class,
123 12
                'concrete' => $config->get('arcanesoft.auth.permissions-groups.model'),
124 6
            ],
125 6
        ];
126
127 12
        foreach ($bindings as $binding) {
128 12
            $this->bind($binding['abstract'], $binding['concrete']);
129 6
        }
130 12
    }
131
}
132