Completed
Pull Request — master (#81)
by
unknown
04:32 queued 17s
created

RolesServiceProvider::loadMigrations()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
cc 2
eloc 2
c 1
b 1
f 0
nc 2
nop 0
dl 0
loc 4
rs 10
1
<?php
2
3
namespace jeremykenedy\LaravelRoles;
4
5
use Illuminate\Support\ServiceProvider;
6
use jeremykenedy\LaravelRoles\App\Http\Middleware\VerifyLevel;
7
use jeremykenedy\LaravelRoles\App\Http\Middleware\VerifyPermission;
8
use jeremykenedy\LaravelRoles\App\Http\Middleware\VerifyRole;
9
use jeremykenedy\LaravelRoles\Database\Seeds\DefaultConnectRelationshipsSeeder;
10
use jeremykenedy\LaravelRoles\Database\Seeds\DefaultPermissionsTableSeeder;
11
use jeremykenedy\LaravelRoles\Database\Seeds\DefaultRolesTableSeeder;
12
use jeremykenedy\LaravelRoles\Database\Seeds\DefaultUsersTableSeeder;
13
14
class RolesServiceProvider extends ServiceProvider
15
{
16
    private $_packageTag = 'laravelroles';
17
18
    /**
19
     * Indicates if loading of the provider is deferred.
20
     *
21
     * @var bool
22
     */
23
    protected $defer = false;
24
25
    /**
26
     * Bootstrap any application services.
27
     *
28
     * @param \Illuminate\Routing\Router $router The router
29
     *
30
     * @return void
31
     */
32
    public function boot()
33
    {
34
        $this->app['router']->aliasMiddleware('role', VerifyRole::class);
35
        $this->app['router']->aliasMiddleware('permission', VerifyPermission::class);
36
        $this->app['router']->aliasMiddleware('level', VerifyLevel::class);
37
        if (config('roles.rolesGuiEnabled')) {
38
            $this->loadRoutesFrom(__DIR__.'/routes/web.php');
39
        }
40
        $this->loadTranslationsFrom(__DIR__.'/resources/lang/', $this->_packageTag);
41
        $this->registerBladeExtensions();
42
    }
43
44
    /**
45
     * Register any application services.
46
     *
47
     * @return void
48
     */
49
    public function register()
50
    {
51
        $this->mergeConfigFrom(__DIR__.'/config/roles.php', 'roles');
52
        $this->loadMigrations();
53
        if (config('roles.rolesGuiEnabled')) {
54
            $this->loadViewsFrom(__DIR__.'/resources/views/', $this->_packageTag);
55
        }
56
        $this->publishFiles();
57
        $this->loadSeedsFrom();
58
    }
59
60
    private function loadMigrations()
61
    {
62
        if (config('roles.defaultMigrations.enabled')) {
63
            $this->loadMigrationsFrom(__DIR__.'/Database/Migrations');
64
        }
65
    }
66
    /**
67
     * Loads a seeds.
68
     *
69
     * @return void
70
     */
71
    private function loadSeedsFrom()
72
    {
73
        if (config('roles.defaultSeeds.PermissionsTableSeeder')) {
74
            $this->app['seed.handler']->register(
75
                DefaultPermissionsTableSeeder::class
76
            );
77
        }
78
79
        if (config('roles.defaultSeeds.RolesTableSeeder')) {
80
            $this->app['seed.handler']->register(
81
                DefaultRolesTableSeeder::class
82
            );
83
        }
84
85
        if (config('roles.defaultSeeds.ConnectRelationshipsSeeder')) {
86
            $this->app['seed.handler']->register(
87
                DefaultConnectRelationshipsSeeder::class
88
            );
89
        }
90
91
        if (config('roles.defaultSeeds.UsersTableSeeder')) {
92
            $this->app['seed.handler']->register(
93
                DefaultUsersTableSeeder::class
94
            );
95
        }
96
    }
97
98
    /**
99
     * Publish files for package.
100
     *
101
     * @return void
102
     */
103
    private function publishFiles()
104
    {
105
        $publishTag = $this->_packageTag;
106
107
        $this->publishes([
108
            __DIR__.'/config/roles.php' => config_path('roles.php'),
109
        ], $publishTag.'-config');
110
111
        $this->publishes([
112
            __DIR__.'/Database/Migrations' => database_path('migrations'),
113
        ], $publishTag.'-migrations');
114
115
        $this->publishes([
116
            __DIR__.'/Database/Seeds/publish' => database_path('seeds'),
117
        ], $publishTag.'-seeds');
118
119
        $this->publishes([
120
            __DIR__.'/config/roles.php'       => config_path('roles.php'),
121
            __DIR__.'/Database/Migrations'    => database_path('migrations'),
122
            __DIR__.'/Database/Seeds/publish' => database_path('seeds'),
123
        ], $publishTag);
124
    }
125
126
    /**
127
     * Register Blade extensions.
128
     *
129
     * @return void
130
     */
131
    protected function registerBladeExtensions()
132
    {
133
        $blade = $this->app['view']->getEngineResolver()->resolve('blade')->getCompiler();
134
135
        $blade->directive('role', function ($expression) {
136
            return "<?php if (Auth::check() && Auth::user()->hasRole({$expression})): ?>";
137
        });
138
139
        $blade->directive('endrole', function () {
140
            return '<?php endif; ?>';
141
        });
142
143
        $blade->directive('permission', function ($expression) {
144
            return "<?php if (Auth::check() && Auth::user()->hasPermission({$expression})): ?>";
145
        });
146
147
        $blade->directive('endpermission', function () {
148
            return '<?php endif; ?>';
149
        });
150
151
        $blade->directive('level', function ($expression) {
152
            $level = trim($expression, '()');
153
154
            return "<?php if (Auth::check() && Auth::user()->level() >= {$level}): ?>";
155
        });
156
157
        $blade->directive('endlevel', function () {
158
            return '<?php endif; ?>';
159
        });
160
161
        $blade->directive('allowed', function ($expression) {
162
            return "<?php if (Auth::check() && Auth::user()->allowed({$expression})): ?>";
163
        });
164
165
        $blade->directive('endallowed', function () {
166
            return '<?php endif; ?>';
167
        });
168
    }
169
}
170