/**
  * Bootstrap the application events.
  *
  * @param Router $router
  * @param Kernel $kernel
  * @return void
  */
 public function boot(Router $router, Kernel $kernel)
 {
     // add router middleware
     $globalMiddleware = [UploadChecks::class];
     $routerMiddleware = ['coaster.admin' => AdminAuth::class, 'coaster.guest' => GuestAuth::class];
     event(new LoadMiddleware($globalMiddleware, $routerMiddleware));
     foreach ($globalMiddleware as $globalMiddlewareClass) {
         $kernel->pushMiddleware($globalMiddlewareClass);
     }
     foreach ($routerMiddleware as $routerMiddlewareName => $routerMiddlewareClass) {
         $router->middleware($routerMiddlewareName, $routerMiddlewareClass);
     }
     // use coater guard and user provider
     $authGuard = Helpers\Cms\CoasterGuard::class;
     $authUserProvider = Providers\CoasterAuthUserProvider::class;
     event(new LoadAuth($authGuard, $authUserProvider));
     if ($authGuard && $authUserProvider) {
         Auth::extend('coaster', function ($app) use($authGuard, $authUserProvider) {
             return new $authGuard('coasterguard', new $authUserProvider(), $app['session.store'], $app['request']);
         });
     }
     // set cookie jar for cookies
     Auth::setCookieJar($this->app['cookie']);
     // load coaster views
     $adminViews = [base_path(trim(config('coaster::admin.view'), '/'))];
     $frontendViews = [base_path(trim(config('coaster::frontend.view'), '/'))];
     event(new SetViewPaths($adminViews, $frontendViews));
     $this->loadViewsFrom($adminViews, 'coaster');
     $this->loadViewsFrom($frontendViews, 'coasterCms');
     // run routes if not in console
     $routeFile = __DIR__ . '/Http/routes.php';
     event(new LoadRouteFile($routeFile));
     if ($routeFile && file_exists($routeFile)) {
         include $routeFile;
     }
     // if in console and not installed, display notice
     if (App::runningInConsole() && !Install::isComplete()) {
         echo "Coaster Framework: CMS awaiting install, go to a web browser to complete installation\r\n";
     }
 }
 /** @inheritdoc */
 public function pushMiddleware(Kernel $kernel)
 {
     foreach ($this->middleware as $_middleware) {
         $kernel->pushMiddleware($_middleware);
     }
     return $this;
 }