DONE: add password on laravel log viewer
This commit is contained in:
@@ -98,6 +98,8 @@ TENNANT_KAUNTER_DB=kaunter_erahn
|
|||||||
KAUNTER_URL=http://host.docker.internal:8081
|
KAUNTER_URL=http://host.docker.internal:8081
|
||||||
INTERNAL_NOTIFICATION_SECRET=
|
INTERNAL_NOTIFICATION_SECRET=
|
||||||
|
|
||||||
|
LOGVIEWER_PASSWORD=
|
||||||
|
|
||||||
WHATSAPP_TOKEN= # Paste token from Graph API explorer.
|
WHATSAPP_TOKEN= # Paste token from Graph API explorer.
|
||||||
WHATSAPP_PHONE_NUMBER_ID=1323449077519027
|
WHATSAPP_PHONE_NUMBER_ID=1323449077519027
|
||||||
WHATSAPP_API_VERSION=v25.0
|
WHATSAPP_API_VERSION=v25.0
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ API_ARRAHNBID_ANNUR=https://adminbid-annur.erahn.com.my/api/
|
|||||||
|
|
||||||
LOG_CHANNEL=stack
|
LOG_CHANNEL=stack
|
||||||
LOG_SLACK_WEBHOOK_URL=
|
LOG_SLACK_WEBHOOK_URL=
|
||||||
|
LOGVIEWER_PASSWORD="$2y$10$k7eiUyZdm3BruwAaT1gbmelTm.PPgZptOEQT1nlBjyiR84a4KBMlm"
|
||||||
|
|
||||||
DB_CONNECTION_2=mysql
|
DB_CONNECTION_2=mysql
|
||||||
DB_HOST_2=192.168.1.216
|
DB_HOST_2=192.168.1.216
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ MYSQL_PUBLISH_PORT=3308
|
|||||||
LOG_CHANNEL=stack
|
LOG_CHANNEL=stack
|
||||||
LOG_LEVEL=debug
|
LOG_LEVEL=debug
|
||||||
LOG_SLACK_WEBHOOK_URL=
|
LOG_SLACK_WEBHOOK_URL=
|
||||||
|
LOGVIEWER_PASSWORD=
|
||||||
|
|
||||||
DB_CONNECTION=mysql
|
DB_CONNECTION=mysql
|
||||||
DB_HOST=mysql
|
DB_HOST=mysql
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Middleware;
|
||||||
|
|
||||||
|
use Closure;
|
||||||
|
|
||||||
|
class LogViewerPassword
|
||||||
|
{
|
||||||
|
public function handle($request, Closure $next)
|
||||||
|
{
|
||||||
|
$passwordHash = config('logviewer.password');
|
||||||
|
|
||||||
|
if (!is_string($passwordHash) || $passwordHash === '') {
|
||||||
|
return response('Akses log belum dikonfigurasi.', 503)
|
||||||
|
->header('Cache-Control', 'no-store');
|
||||||
|
}
|
||||||
|
|
||||||
|
$provided = $request->getPassword();
|
||||||
|
if ($request->getUser() !== 'logviewer' || !is_string($provided) ||
|
||||||
|
!password_verify($provided, $passwordHash)) {
|
||||||
|
return response('Kata laluan diperlukan untuk mengakses log.', 401, [
|
||||||
|
'WWW-Authenticate' => 'Basic realm="Log Viewer", charset="UTF-8"',
|
||||||
|
'Cache-Control' => 'no-store',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$response = $next($request);
|
||||||
|
$response->headers->set('Cache-Control', 'no-store');
|
||||||
|
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
}
|
||||||
+4
-3
@@ -88,6 +88,7 @@ $app->singleton(
|
|||||||
|
|
||||||
$app->configure('app');
|
$app->configure('app');
|
||||||
$app->configure('logging');
|
$app->configure('logging');
|
||||||
|
$app->configure('logviewer');
|
||||||
$app->configure('tinker');
|
$app->configure('tinker');
|
||||||
$app->configure('tennant_database');
|
$app->configure('tennant_database');
|
||||||
$app->configure('report');
|
$app->configure('report');
|
||||||
@@ -110,9 +111,9 @@ $app->configure('kaunter');
|
|||||||
// App\Http\Middleware\ExampleMiddleware::class
|
// App\Http\Middleware\ExampleMiddleware::class
|
||||||
// ]);
|
// ]);
|
||||||
|
|
||||||
// $app->routeMiddleware([
|
$app->routeMiddleware([
|
||||||
// 'auth' => App\Http\Middleware\Authenticate::class,
|
'logviewer.password' => App\Http\Middleware\LogViewerPassword::class,
|
||||||
// ]);
|
]);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
'password' => env('LOGVIEWER_PASSWORD'),
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Pattern and storage path settings
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| The env key for pattern and storage path with a default value
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
'max_file_size' => 52428800, // size in Byte
|
||||||
|
'pattern' => env('LOGVIEWER_PATTERN', '*.log'),
|
||||||
|
'storage_path' => env('LOGVIEWER_STORAGE_PATH', storage_path('logs')),
|
||||||
|
];
|
||||||
+4
-1
@@ -25,7 +25,10 @@ $router->get('/health', function () {
|
|||||||
return response()->json(['status' => 'ok']);
|
return response()->json(['status' => 'ok']);
|
||||||
});
|
});
|
||||||
|
|
||||||
$router->group(['namespace' => '\Rap2hpoutre\LaravelLogViewer'], function() use ($router) {
|
$router->group([
|
||||||
|
'namespace' => '\Rap2hpoutre\LaravelLogViewer',
|
||||||
|
'middleware' => 'logviewer.password',
|
||||||
|
], function () use ($router) {
|
||||||
$router->get('logs', 'LogViewerController@index');
|
$router->get('logs', 'LogViewerController@index');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user