71 lines
1.6 KiB
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();
|
|
});
|
|
}
|
|
}
|