feat: add-flexible-middelware-force-https

This commit is contained in:
Muhammad Alfin Afif Al Farizi Farham 2026-03-03 10:37:20 +07:00
parent 890375474a
commit 51a2aa196d
2 changed files with 40 additions and 0 deletions

View File

@ -0,0 +1,36 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class ValidateSignatureFlexible
{
public function handle(Request $request, Closure $next)
{
$signature = $request->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);
}
}

View File

@ -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 |