laravel-log-viewer icon indicating copy to clipboard operation
laravel-log-viewer copied to clipboard

Basic Auth For Production

Open ashokdevatwal opened this issue 2 years ago • 2 comments

To view logs in production there must be a option to protect log route

ashokdevatwal avatar Dec 14 '23 06:12 ashokdevatwal

You can protect the route with, for example, Laravel's default auth middleware. This is outside the scope of this package.

RogierVC avatar Jan 04 '24 10:01 RogierVC

@RogierVC Yes, absolutely right we can protect our route with Laravel's default auth middleware.

but i am using default auth for my website users

i want to give log route access only authorized admin of website.

can we built like this

config/logviewer.php

'username'       => env('LOGVIEWER_USERNAME', 'username'),
'password'       => env('LOGVIEWER_PASSWORD', 'password')

middleware/LogViewerBasicAuthMiddleware.php

<?php

  namespace Rap2hpoutre\LaravelLogViewer;

  use Closure;

  use Config;

  class LogViewerBasicAuthMiddleware
  {
      /**
       * Handle an incoming request.
       *
       * @param  \Illuminate\Http\Request  $request
       * @param  \Closure  $next
       * @return mixed
       */
        public function handle($request, Closure $next)
        {
            $username = Config::get('logviewer.username');
            $password = Config::get('logviewer.password');
    
            $givenUsername = $request->getUser();
            $givenPassword = $request->getPassword();
    
            if ($givenUsername !== $username || $givenPassword !== $password) {
                return response('Unauthorized.', 401, ['WWW-Authenticate' => 'Basic']);
            }
    
            return $next($request);
        }
   }

/Rap2hpoutre/LaravelLogViewer/LaravelLogViewerServiceProvider.php

  $router = $this->app->make(Router::class);
  $router->aliasMiddleware('auth.logviewer', LogViewerBasicAuthMiddleware::class);

Then can use

  Route::middleware('auth.logviewer')->get('logs', [\Rap2hpoutre\LaravelLogViewer\LogViewerController::class, 'index']);

Screenshot 2024-01-04 at 4 41 57 PM

ashokdevatwal avatar Jan 04 '24 11:01 ashokdevatwal