Completed
Pull Request — master (#21)
by ARCANEDEV
05:07
created

PackagesServiceProvider::rebindModels()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 23
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 19
CRAP Score 2

Importance

Changes 3
Bugs 0 Features 0
Metric Value
c 3
b 0
f 0
dl 0
loc 23
ccs 19
cts 19
cp 1
rs 9.0856
cc 2
eloc 13
nc 2
nop 0
crap 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\Support\ServiceProvider;
8
use Illuminate\Support\Arr;
9
10
/**
11
 * Class     PackagesServiceProvider
12
 *
13
 * @package  Arcanesoft\Auth\Providers
14
 * @author   ARCANEDEV <[email protected]>
15
 */
16
class PackagesServiceProvider extends ServiceProvider
17
{
18
    /* -----------------------------------------------------------------
19
     |  Main Methods
20
     | -----------------------------------------------------------------
21
     */
22
    /**
23
     * Register the service provider.
24
     */
25 12
    public function register()
26
    {
27 12
        parent::register();
28
29 12
        $this->registerApiHelperPackage();
30 12
        $this->registerGravatarPackage();
31 12
        $this->registerLaravelAuthPackage();
32 12
    }
33
34
    /* -----------------------------------------------------------------
35
     |  Register Packages
36
     | -----------------------------------------------------------------
37
     */
38
    /**
39
     * Register the API Helper package.
40
     */
41 12
    private function registerApiHelperPackage()
42
    {
43 12
        $this->registerProvider(ApiHelperServiceProvider::class);
44 12
    }
45
46
    /**
47
     * Register the Gravatar package.
48
     */
49 12
    private function registerGravatarPackage()
50
    {
51 12
        $this->registerProvider(GravatarServiceProvider::class);
52 12
    }
53
54
    /**
55
     * Register the Laravel Auth package.
56
     */
57 12
    private function registerLaravelAuthPackage()
58
    {
59 12
        $this->registerProvider(LaravelAuthServiceProvider::class);
60
61 12
        $this->configLaravelAuthPackage();
62 12
        $this->rebindModels();
63 12
    }
64
65
    /* -----------------------------------------------------------------
66
     |  Config Packages
67
     | -----------------------------------------------------------------
68
     */
69
    /**
70
     * Config the Laravel Auth package.
71
     */
72 12
    private function configLaravelAuthPackage()
73
    {
74
        /** @var  \Illuminate\Contracts\Config\Repository  $config */
75 12
        $config = $this->config();
76 12
        $config->set('laravel-auth', Arr::except($config->get('arcanesoft.auth'), ['route', 'hasher']));
77
78 12
        if (SocialAuthenticator::isEnabled()) {
79
            $this->registerProvider(\Laravel\Socialite\SocialiteServiceProvider::class);
80
        }
81 12
    }
82
83
    /**
84
     * Rebind the auth models.
85
     */
86 12
    private function rebindModels()
87
    {
88 12
        $config   = $this->config();
89
        $bindings = [
90
            [
91 6
                'abstract' => \Arcanesoft\Contracts\Auth\Models\User::class,
92 12
                'concrete' => $config->get('arcanesoft.auth.users.model'),
93 12
            ],[
94 6
                'abstract' => \Arcanesoft\Contracts\Auth\Models\Role::class,
95 12
                'concrete' => $config->get('arcanesoft.auth.roles.model'),
96 6
            ],[
97 6
                'abstract' => \Arcanesoft\Contracts\Auth\Models\Permission::class,
98 12
                'concrete' => $config->get('arcanesoft.auth.permissions.model'),
99 6
            ],[
100 6
                'abstract' => \Arcanesoft\Contracts\Auth\Models\PermissionsGroup::class,
101 12
                'concrete' => $config->get('arcanesoft.auth.permissions-groups.model'),
102 6
            ],
103 6
        ];
104
105 12
        foreach ($bindings as $binding) {
106 12
            $this->bind($binding['abstract'], $binding['concrete']);
107 6
        }
108 12
    }
109
}
110