Completed
Push — master ( 9539c9...6ce7ae )
by ARCANEDEV
12s
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
    /**
25
     * Register the service provider.
26
     */
27 10
    public function register()
28
    {
29 10
        parent::register();
30
31 10
        $this->registerApiHelperPackage();
32 10
        $this->registerGravatarPackage();
33 10
        $this->registerLaravelAuthPackage();
34 10
        $this->registerLaravelImpersonatorPackage();
35 10
    }
36
37
    /* -----------------------------------------------------------------
38
     |  Register Packages
39
     | -----------------------------------------------------------------
40
     */
41
42
    /**
43
     * Register the API Helper package.
44
     */
45 10
    private function registerApiHelperPackage()
46
    {
47 10
        $this->registerProvider(ApiHelperServiceProvider::class);
48 10
    }
49
50
    /**
51
     * Register the Gravatar package.
52
     */
53 10
    private function registerGravatarPackage()
54
    {
55 10
        $this->registerProvider(GravatarServiceProvider::class);
56 10
    }
57
58
    /**
59
     * Register the Laravel Auth package.
60
     */
61 10
    private function registerLaravelAuthPackage()
62
    {
63 10
        $this->registerProvider(LaravelAuthServiceProvider::class);
64
65 10
        $this->configLaravelAuthPackage();
66 10
        $this->rebindModels();
67 10
    }
68
69
    /**
70
     * Register the Laravel Impersonator package.
71
     */
72 10
    private function registerLaravelImpersonatorPackage()
73
    {
74 10
        $this->registerProvider(ImpersonatorServiceProvider::class);
75 10
        $this->configLaravelImpersonatorPackage();
76 10
    }
77
78
    /* -----------------------------------------------------------------
79
     |  Config Packages
80
     | -----------------------------------------------------------------
81
     */
82
83
    /**
84
     * Config the Laravel Auth package.
85
     */
86 10
    private function configLaravelAuthPackage()
87
    {
88 10
        $config = $this->config();
89 10
        $config->set(
90 10
            'laravel-auth',
91 10
            Arr::only($config->get('arcanesoft.auth'), [
92 10
                'database', 'users', 'roles', 'role-user', 'permissions-groups', 'permissions', 'permission-role',
93
                'password-resets', 'events', 'user-confirmation', 'track-activity', 'socialite', 'throttles', 'seeds'
94
            ])
95
        );
96
97 10
        if (SocialAuthenticator::isEnabled()) {
98
            $this->registerProvider(\Laravel\Socialite\SocialiteServiceProvider::class);
99
        }
100 10
    }
101
102
    /**
103
     * Config the Laravel Impersonator Package.
104
     */
105 10
    private function configLaravelImpersonatorPackage()
106
    {
107 10
        $config = $this->config();
108
109 10
        $config->set('impersonator', $config->get('arcanesoft.auth.impersonation', ['enabled' => false]));
110 10
    }
111
112
    /**
113
     * Rebind the auth models.
114
     */
115 10
    private function rebindModels()
116
    {
117 10
        $config   = $this->config();
118
        $bindings = [
119
            [
120 10
                'abstract' => \Arcanesoft\Contracts\Auth\Models\User::class,
121 10
                'concrete' => $config->get('arcanesoft.auth.users.model'),
122
            ],[
123
                'abstract' => \Arcanesoft\Contracts\Auth\Models\Role::class,
124 10
                'concrete' => $config->get('arcanesoft.auth.roles.model'),
125
            ],[
126
                'abstract' => \Arcanesoft\Contracts\Auth\Models\Permission::class,
127 10
                'concrete' => $config->get('arcanesoft.auth.permissions.model'),
128
            ],[
129
                'abstract' => \Arcanesoft\Contracts\Auth\Models\PermissionsGroup::class,
130 10
                'concrete' => $config->get('arcanesoft.auth.permissions-groups.model'),
131
            ],
132
        ];
133
134 10
        foreach ($bindings as $binding) {
135 10
            $this->bind($binding['abstract'], $binding['concrete']);
136
        }
137 10
    }
138
}
139