billing: Stripe-Webhook von der Basic-Auth ausnehmen

Mit BASIC_AUTH_ENABLED=true (Staging) bekam Stripe für jeden
Webhook-Call ein 401 — Zahlungen wurden nie erfüllt. Der Endpoint
ist durch die Signaturprüfung (STRIPE_WEBHOOK_SECRET) geschützt.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-07-15 13:55:32 +00:00
parent 0b01929f80
commit 67f6906b87
2 changed files with 13 additions and 0 deletions

View file

@ -43,6 +43,13 @@ class BasicAuthMiddleware
return $next($request);
}
// Skip Basic Auth für den Stripe-Webhook — Stripe sendet keine
// Zugangsdaten mit; der Endpoint ist durch die Signaturprüfung
// (STRIPE_WEBHOOK_SECRET) geschützt.
if ($request->is('stripe/webhook')) {
return $next($request);
}
// Zugangsdaten aus der Config (gespeist aus .env). Ist nichts
// konfiguriert, wird der Gate nicht erzwungen.
$user = config('auth.basic.user');

View file

@ -57,3 +57,9 @@ test('skips basic auth for api and livewire routes', function () {
expect(handleBasicAuth(Request::create('/api/v1/press-releases', 'GET'))->getStatusCode())->toBe(200)
->and(handleBasicAuth(Request::create('/livewire/update', 'POST'))->getStatusCode())->toBe(200);
});
test('skips basic auth for the stripe webhook', function () {
// Stripe kann keine Basic-Auth-Zugangsdaten mitsenden — der Endpoint
// ist stattdessen durch die Webhook-Signaturprüfung geschützt.
expect(handleBasicAuth(Request::create('/stripe/webhook', 'POST'))->getStatusCode())->toBe(200);
});