Implement webhook inspector
This commit is contained in:
@@ -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));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
use App\Actions\Fortify\CreateNewUser;
|
||||
use App\Actions\Fortify\ResetUserPassword;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Laravel\Fortify\Fortify;
|
||||
|
||||
class FortifyServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
* Register services.
|
||||
*/
|
||||
public function register(): void
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Bootstrap services.
|
||||
*/
|
||||
public function boot(): void
|
||||
{
|
||||
Fortify::loginView(fn () => view('auth.login'));
|
||||
Fortify::registerView(fn () => view('auth.register'));
|
||||
Fortify::requestPasswordResetLinkView(fn () => view('auth.forgot-password'));
|
||||
Fortify::resetPasswordView(fn (Request $request) => view('auth.reset-password', ['request' => $request]));
|
||||
Fortify::verifyEmailView(fn () => view('auth.verify-email'));
|
||||
|
||||
Fortify::createUsersUsing(CreateNewUser::class);
|
||||
Fortify::resetUserPasswordsUsing(ResetUserPassword::class);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user