sarga/packages/Webkul/User/src/Providers/UserServiceProvider.php

71 lines
1.6 KiB
PHP

<?php
namespace Webkul\User\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Foundation\AliasLoader;
use Illuminate\Routing\Router;
use Illuminate\Support\Facades\Event;
use Webkul\User\Bouncer;
use Webkul\User\Facades\Bouncer as BouncerFacade;
use Webkul\User\Http\Middleware\Bouncer as BouncerMiddleware;
use Webkul\Core\Tree;
class UserServiceProvider extends ServiceProvider
{
/**
* Bootstrap services.
*
* @return void
*/
public function boot(Router $router)
{
include __DIR__ . '/../Http/helpers.php';
$router->aliasMiddleware('admin', BouncerMiddleware::class);
$this->loadMigrationsFrom(__DIR__ . '/../Database/Migrations');
$this->createACL();
}
/**
* This method fires an event for acl creation, any package can add their acl item by listening to the admin.acl.build event
*
* @return void
*/
public function createACL()
{
Event::listen('admin.acl.create', function () {
return Tree::create(function ($acl) {
Event::fire('admin.acl.build', $acl);
});
});
}
/**
* Register services.
*
* @return void
*/
public function register()
{
$this->registerBouncer();
}
/**
* Register Bouncer as a singleton.
*
* @return void
*/
protected function registerBouncer()
{
$loader = AliasLoader::getInstance();
$loader->alias('Bouncer', BouncerFacade::class);
$this->app->singleton('bouncer', function () {
return new Bouncer();
});
}
}