ServiceProvider   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 74
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 7
eloc 22
c 1
b 0
f 0
dl 0
loc 74
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A register() 0 3 1
A registerMiddleware() 0 3 1
A registerRoutes() 0 9 2
A registerPublishes() 0 16 2
A boot() 0 7 1
1
<?php
2
3
namespace Spinen\Halo\Providers;
4
5
use Illuminate\Support\Facades\Config;
6
use Illuminate\Support\Facades\Route;
7
use Illuminate\Support\ServiceProvider as LaravelServiceProvider;
8
use Spinen\Halo\Http\Middleware\Filter;
9
10
/**
11
 * Class ServiceProvider
12
 */
13
class ServiceProvider extends LaravelServiceProvider
14
{
15
    /**
16
     * Bootstrap services.
17
     *
18
     * @return void
19
     */
20
    public function boot()
21
    {
22
        $this->registerMiddleware();
23
24
        $this->registerPublishes();
25
26
        $this->registerRoutes();
27
    }
28
29
    /**
30
     * Register services.
31
     *
32
     * @return void
33
     */
34
    public function register()
35
    {
36
        $this->mergeConfigFrom(__DIR__.'/../../config/halo.php', 'halo');
37
    }
38
39
    /**
40
     * Register the middleware
41
     *
42
     * If a route needs to have the QuickBooks client, then make sure that the user has linked their account.
43
     */
44
    public function registerMiddleware()
45
    {
46
        $this->app->router->aliasMiddleware('halo', Filter::class);
0 ignored issues
show
Bug introduced by
Accessing router on the interface Illuminate\Contracts\Foundation\Application suggest that you code against a concrete implementation. How about adding an instanceof check?
Loading history...
47
    }
48
49
    /**
50
     * There are several resources that get published
51
     *
52
     * Only worry about telling the application about them if running in the console.
53
     */
54
    protected function registerPublishes()
55
    {
56
        if ($this->app->runningInConsole()) {
57
            $this->loadMigrationsFrom(__DIR__.'/../../database/migrations');
58
59
            $this->publishes(
60
                groups: 'halo-config',
61
                paths: [
62
                    __DIR__.'/../../config/halo.php' => config_path('halo.php'),
63
                ],
64
            );
65
66
            $this->publishes(
67
                groups: 'halo-migrations',
68
                paths: [
69
                    __DIR__.'/../../database/migrations' => database_path('migrations'),
70
                ],
71
            );
72
        }
73
    }
74
75
    /**
76
     * Register the routes needed for the OAuth flow
77
     */
78
    protected function registerRoutes()
79
    {
80
        if (Config::get('halo.oauth.authorization_code.route.enabled')) {
81
            Route::group(
82
                attributes: [
83
                    'namespace' => 'Spinen\Halo\Http\Controllers',
84
                    'middleware' => Config::get('halo.oauth.authorization_code.route.middleware', ['web']),
85
                ],
86
                routes: fn () => $this->loadRoutesFrom(realpath(__DIR__.'/../../routes/web.php'))
87
            );
88
        }
89
    }
90
}
91