Implement webhook inspector

This commit is contained in:
2026-08-04 17:09:39 +02:00
parent b021836c14
commit 75d8b25b64
57 changed files with 5110 additions and 230 deletions
+26 -1
View File
@@ -2,6 +2,16 @@
namespace App\Providers;
use App\Models\WebhookEndpoint;
use App\Models\WebhookRequest;
use App\Policies\WebhookEndpointPolicy;
use App\Policies\WebhookRequestPolicy;
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Gate;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
@@ -19,6 +29,21 @@ class AppServiceProvider extends ServiceProvider
*/
public function boot(): void
{
//
Model::preventLazyLoading(! app()->isProduction());
Gate::policy(WebhookEndpoint::class, WebhookEndpointPolicy::class);
Gate::policy(WebhookRequest::class, WebhookRequestPolicy::class);
RateLimiter::for('login', function (Request $request): Limit {
return Limit::perMinute(5)->by($request->string('email')->lower()->value().'|'.$request->ip());
});
RateLimiter::for('webhooks', function (Request $request): Limit {
return Limit::perMinute((int) config('webhooks.rate_limit_per_minute', 60))
->by('webhook:'.(string) $request->route('token').':'.$request->ip())
->response(fn (Request $request, array $headers): JsonResponse => response()->json([
'message' => 'Too many webhook requests. Try again later.',
], 429, $headers));
});
}
}