whoami7 - Manager
:
/
home
/
kckglobal
/
www
/
portal
/
vendor
/
opcodesio
/
log-viewer
/
src
/
Upload File:
files >> //home/kckglobal/www/portal/vendor/opcodesio/log-viewer/src/LogViewerServiceProvider.php
<?php /** @noinspection PhpUndefinedNamespaceInspection */ /** @noinspection PhpUndefinedClassInspection */ namespace Opcodes\LogViewer; use Illuminate\Contracts\Http\Kernel; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Event; use Illuminate\Support\Facades\Gate; use Illuminate\Support\Facades\Route; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Str; use Laravel\Octane\Events\RequestTerminated; use Opcodes\LogViewer\Console\Commands\GenerateDummyLogsCommand; use Opcodes\LogViewer\Console\Commands\PublishCommand; use Opcodes\LogViewer\Events\LogFileDeleted; use Opcodes\LogViewer\Facades\LogViewer; use Opcodes\LogViewer\Http\Middleware\EnsureFrontendRequestsAreStateful; class LogViewerServiceProvider extends ServiceProvider { private string $name = 'log-viewer'; public static function basePath(string $path): string { return __DIR__.'/..'.$path; } public function register() { $this->mergeConfigFrom(self::basePath("/config/{$this->name}.php"), $this->name); $this->app->bind('log-viewer', LogViewerService::class); $this->app->bind('log-viewer-cache', function () { return Cache::driver(config('log-viewer.cache_driver')); }); if (! $this->app->bound(LogTypeRegistrar::class)) { $this->app->singleton(LogTypeRegistrar::class, function () { return new LogTypeRegistrar; }); } } public function boot() { if ($this->app->runningInConsole()) { // publishing the config $this->publishes([ self::basePath("/config/{$this->name}.php") => config_path("{$this->name}.php"), ], "{$this->name}-config"); $this->publishes([ self::basePath('/resources/views') => resource_path("views/vendor/{$this->name}"), ], "{$this->name}-views"); // registering the command $this->commands([ PublishCommand::class, GenerateDummyLogsCommand::class, ]); } if (! $this->isEnabled()) { return; } $this->registerRoutes(); $this->registerResources(); $this->defineAssetPublishing(); $this->defineDefaultGates(); $this->configureMiddleware(); $this->resetStateAfterOctaneRequest(); Event::listen(LogFileDeleted::class, function (LogFileDeleted $event) { LogViewer::clearFileCache(); }); } /** * Register the Log Viewer routes. * * @return void */ protected function registerRoutes() { Route::group([ 'domain' => config('log-viewer.route_domain', null), 'prefix' => Str::finish(config('log-viewer.route_path'), '/').'api', 'namespace' => 'Opcodes\LogViewer\Http\Controllers', 'middleware' => config('log-viewer.api_middleware', null), ], function () { $this->loadRoutesFrom(self::basePath('/routes/api.php')); }); Route::group([ 'domain' => config('log-viewer.route_domain', null), 'prefix' => config('log-viewer.route_path'), 'namespace' => 'Opcodes\LogViewer\Http\Controllers', 'middleware' => config('log-viewer.middleware', null), ], function () { $this->loadRoutesFrom(self::basePath('/routes/web.php')); }); } protected function registerResources() { $this->loadViewsFrom(self::basePath('/resources/views'), 'log-viewer'); } protected function defineAssetPublishing() { $this->publishes([ self::basePath('/public') => public_path('vendor/log-viewer'), ], 'log-viewer-assets'); } protected function defineDefaultGates() { if (! Gate::has('downloadLogFile')) { Gate::define('downloadLogFile', fn (mixed $user, LogFile $file) => true); } if (! Gate::has('downloadLogFolder')) { Gate::define('downloadLogFolder', fn (mixed $user, LogFolder $folder) => true); } if (! Gate::has('deleteLogFile')) { Gate::define('deleteLogFile', fn (mixed $user, LogFile $file) => true); } if (! Gate::has('deleteLogFolder')) { Gate::define('deleteLogFolder', fn (mixed $user, LogFolder $folder) => true); } } /** * Configure the Log Viewer middleware and priority. */ protected function configureMiddleware(): void { $kernel = app()->make(Kernel::class); $kernel->prependToMiddlewarePriority(EnsureFrontendRequestsAreStateful::class); } protected function resetStateAfterOctaneRequest() { $this->app['events']->listen(RequestTerminated::class, function ($event) { $logReaderClass = LogViewer::logReaderClass(); $logReaderClass::clearInstances(); }); } protected function isEnabled(): bool { return (bool) $this->app['config']->get("{$this->name}.enabled", true); } }
Copyright ©2021 || Defacer Indonesia