From 51a2aa196d000e83a2713bfa783a93f235a9aa0c Mon Sep 17 00:00:00 2001 From: Muhammad Alfin Afif Al Farizi Farham Date: Tue, 3 Mar 2026 10:37:20 +0700 Subject: [PATCH] feat: add-flexible-middelware-force-https --- .../Middleware/ValidateSignatureFlexible.php | 36 +++++++++++++++++++ bootstrap/app.php | 4 +++ 2 files changed, 40 insertions(+) create mode 100644 app/Http/Middleware/ValidateSignatureFlexible.php diff --git a/app/Http/Middleware/ValidateSignatureFlexible.php b/app/Http/Middleware/ValidateSignatureFlexible.php new file mode 100644 index 0000000..cbcda39 --- /dev/null +++ b/app/Http/Middleware/ValidateSignatureFlexible.php @@ -0,0 +1,36 @@ +query('signature'); + + if (! $signature) { + abort(403); + } + + // Pakai APP_URL, bukan request scheme + $baseUrl = rtrim(config('app.url'), '/') . '/' . ltrim($request->path(), '/'); + + $query = collect($request->query()) + ->except('signature') + ->map(fn ($value, $key) => $key.'='.$value) + ->implode('&'); + + $original = rtrim($baseUrl.'?'.$query, '?'); + + $expected = hash_hmac('sha256', $original, config('app.key')); + + if (! hash_equals($expected, $signature)) { + abort(403, 'Invalid signature.'); + } + + return $next($request); + } +} \ No newline at end of file diff --git a/bootstrap/app.php b/bootstrap/app.php index e5b02cd..7b013d3 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -12,6 +12,10 @@ health: '/up', ) ->withMiddleware(function (Middleware $middleware): void { + $middleware->alias([ + 'signed' => \App\Http\Middleware\ValidateSignatureFlexible::class, + ]); + $middleware->trustProxies( at: '*', headers: Request::HEADER_X_FORWARDED_FOR |