Server IP : 66.29.132.124 / Your IP : 18.119.140.2 Web Server : LiteSpeed System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : wavevlvu ( 1524) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/wavevlvu/book24.ng/vendor/spatie/laravel-permission/src/ |
Upload File : |
<?php namespace Spatie\Permission; use Illuminate\Filesystem\Filesystem; use Illuminate\Routing\Route; use Illuminate\Support\Collection; use Illuminate\Support\ServiceProvider; use Illuminate\View\Compilers\BladeCompiler; use Spatie\Permission\Contracts\Permission as PermissionContract; use Spatie\Permission\Contracts\Role as RoleContract; class PermissionServiceProvider extends ServiceProvider { public function boot(PermissionRegistrar $permissionLoader, Filesystem $filesystem) { if (function_exists('config_path')) { // function not available and 'publish' not relevant in Lumen $this->publishes([ __DIR__.'/../config/permission.php' => config_path('permission.php'), ], 'config'); $this->publishes([ __DIR__.'/../database/migrations/create_permission_tables.php.stub' => $this->getMigrationFileName($filesystem), ], 'migrations'); } $this->registerMacroHelpers(); $this->commands([ Commands\CacheReset::class, Commands\CreateRole::class, Commands\CreatePermission::class, Commands\Show::class, ]); $this->registerModelBindings(); $permissionLoader->clearClassPermissions(); $permissionLoader->registerPermissions(); $this->app->singleton(PermissionRegistrar::class, function ($app) use ($permissionLoader) { return $permissionLoader; }); } public function register() { $this->mergeConfigFrom( __DIR__.'/../config/permission.php', 'permission' ); $this->registerBladeExtensions(); } protected function registerModelBindings() { $config = $this->app->config['permission.models']; if (! $config) { return; } $this->app->bind(PermissionContract::class, $config['permission']); $this->app->bind(RoleContract::class, $config['role']); } protected function registerBladeExtensions() { $this->app->afterResolving('blade.compiler', function (BladeCompiler $bladeCompiler) { $bladeCompiler->directive('role', function ($arguments) { list($role, $guard) = explode(',', $arguments.','); return "<?php if(auth({$guard})->check() && auth({$guard})->user()->hasRole({$role})): ?>"; }); $bladeCompiler->directive('elserole', function ($arguments) { list($role, $guard) = explode(',', $arguments.','); return "<?php elseif(auth({$guard})->check() && auth({$guard})->user()->hasRole({$role})): ?>"; }); $bladeCompiler->directive('endrole', function () { return '<?php endif; ?>'; }); $bladeCompiler->directive('hasrole', function ($arguments) { list($role, $guard) = explode(',', $arguments.','); return "<?php if(auth({$guard})->check() && auth({$guard})->user()->hasRole({$role})): ?>"; }); $bladeCompiler->directive('endhasrole', function () { return '<?php endif; ?>'; }); $bladeCompiler->directive('hasanyrole', function ($arguments) { list($roles, $guard) = explode(',', $arguments.','); return "<?php if(auth({$guard})->check() && auth({$guard})->user()->hasAnyRole({$roles})): ?>"; }); $bladeCompiler->directive('endhasanyrole', function () { return '<?php endif; ?>'; }); $bladeCompiler->directive('hasallroles', function ($arguments) { list($roles, $guard) = explode(',', $arguments.','); return "<?php if(auth({$guard})->check() && auth({$guard})->user()->hasAllRoles({$roles})): ?>"; }); $bladeCompiler->directive('endhasallroles', function () { return '<?php endif; ?>'; }); $bladeCompiler->directive('unlessrole', function ($arguments) { list($role, $guard) = explode(',', $arguments.','); return "<?php if(!auth({$guard})->check() || ! auth({$guard})->user()->hasRole({$role})): ?>"; }); $bladeCompiler->directive('endunlessrole', function () { return '<?php endif; ?>'; }); }); } protected function registerMacroHelpers() { if (! method_exists(Route::class, 'macro')) { // Lumen return; } Route::macro('role', function ($roles = []) { if (! is_array($roles)) { $roles = [$roles]; } $roles = implode('|', $roles); $this->middleware("role:$roles"); return $this; }); Route::macro('permission', function ($permissions = []) { if (! is_array($permissions)) { $permissions = [$permissions]; } $permissions = implode('|', $permissions); $this->middleware("permission:$permissions"); return $this; }); } /** * Returns existing migration file if found, else uses the current timestamp. * * @param Filesystem $filesystem * @return string */ protected function getMigrationFileName(Filesystem $filesystem): string { $timestamp = date('Y_m_d_His'); return Collection::make($this->app->databasePath().DIRECTORY_SEPARATOR.'migrations'.DIRECTORY_SEPARATOR) ->flatMap(function ($path) use ($filesystem) { return $filesystem->glob($path.'*_create_permission_tables.php'); })->push($this->app->databasePath()."/migrations/{$timestamp}_create_permission_tables.php") ->first(); } }