ServiceProvider::boot()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 30
Code Lines 25

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 25
c 2
b 0
f 0
dl 0
loc 30
ccs 0
cts 9
cp 0
rs 9.52
cc 2
nc 2
nop 0
crap 6
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Garbuzivan\Laraveltokens;
6
7
use Garbuzivan\Laraveltokens\Commands\CreateGlobalTokenCommand;
8
use Garbuzivan\Laraveltokens\Commands\CreateTokenCommand;
9
use Garbuzivan\Laraveltokens\Commands\DeactivationByIDCommand;
10
use Garbuzivan\Laraveltokens\Commands\DeactivationGlobalByIDCommand;
11
use Garbuzivan\Laraveltokens\Commands\DeactivationByUserCommand;
12
use Garbuzivan\Laraveltokens\Commands\DeactivationGlobalTokenCommand;
13
use Garbuzivan\Laraveltokens\Commands\DeactivationTokenCommand;
14
use Garbuzivan\Laraveltokens\Commands\DeleteTokenAllCommand;
15
use Garbuzivan\Laraveltokens\Commands\DeleteGlobalTokenByIDCommand;
16
use Garbuzivan\Laraveltokens\Commands\DeleteTokenByIDCommand;
17
use Garbuzivan\Laraveltokens\Commands\DeleteTokenByUserCommand;
18
use Garbuzivan\Laraveltokens\Commands\DeleteGlobalTokenCommand;
19
use Garbuzivan\Laraveltokens\Commands\DeleteTokenCommand;
20
use Garbuzivan\Laraveltokens\Commands\ProlongationByIDCommand;
21
use Garbuzivan\Laraveltokens\Commands\ProlongationByTokenCommand;
22
use Garbuzivan\Laraveltokens\Commands\ProlongationGlobalTokenByTokenCommand;
23
use Garbuzivan\Laraveltokens\Commands\ProlongationByUserCommand;
24
use Garbuzivan\Laraveltokens\Commands\ProlongationGlobalTokenByIDCommand;
25
use Garbuzivan\Laraveltokens\Interfaces\AccessTokenRepositoryInterface;
26
use Garbuzivan\Laraveltokens\Interfaces\GlobalTokenRepositoryInterface;
27
28
class ServiceProvider extends \Illuminate\Support\ServiceProvider
29
{
30
    /**
31
     * Bootstrap the application services...
32
     *
33
     * @return void
34
     */
35
    public function boot()
36
    {
37
        $configPath = $this->configPath();
38
39
        $this->publishes([
40
            $configPath . '/config.php' => $this->publishPath('laraveltokens.php'),
41
        ], 'config');
42
43
        $this->loadMigrationsFrom(__DIR__ . '/../database/migrations');
44
45
        if ($this->app->runningInConsole()) {
46
            $this->commands([
47
                CreateGlobalTokenCommand::class,
48
                CreateTokenCommand::class,
49
                DeactivationByIDCommand::class,
50
                DeactivationByUserCommand::class,
51
                DeactivationGlobalByIDCommand::class,
52
                DeactivationGlobalTokenCommand::class,
53
                DeactivationTokenCommand::class,
54
                DeleteGlobalTokenByIDCommand::class,
55
                DeleteGlobalTokenCommand::class,
56
                DeleteTokenAllCommand::class,
57
                DeleteTokenByIDCommand::class,
58
                DeleteTokenByUserCommand::class,
59
                DeleteTokenCommand::class,
60
                ProlongationByIDCommand::class,
61
                ProlongationByTokenCommand::class,
62
                ProlongationByUserCommand::class,
63
                ProlongationGlobalTokenByIDCommand::class,
64
                ProlongationGlobalTokenByTokenCommand::class,
65
            ]);
66
        }
67
    }
68
69
    /**
70
     * Register the application services.
71
     *
72
     * @return void
73
     */
74
    public function register()
75
    {
76
        $this->app->singleton(Config::class, function () {
77
            return new Config;
78
        });
79
        $this->app->bind(
80
            AccessTokenRepositoryInterface::class,
81
            app(Config::class)->getRepositoryAccessToken()
82
        );
83
        $this->app->bind(
84
            GlobalTokenRepositoryInterface::class,
85
            app(Config::class)->getRepositoryGlobalToken()
86
        );
87
        $this->app->singleton(TokenManager::class, function () {
88
            return new TokenManager(
89
                app(Config::class),
90
                app(AccessTokenRepositoryInterface::class),
91
                app(GlobalTokenRepositoryInterface::class),
92
                app(Coder::class)
93
            );
94
        });
95
    }
96
97
    /**
98
     * @return string
99
     */
100
    protected function configPath(): string
101
    {
102
        return __DIR__ . '/../config';
103
    }
104
105
    /**
106
     * @param string $configFile
107
     *
108
     * @return string
109
     */
110
    protected function publishPath(string $configFile): string
111
    {
112
        return config_path($configFile);
113
    }
114
}
115