sysops and Claude Sonnet 4.6
7e165c8eed
feat(PROJ-1): httpOnly Cookie, Auditor-Guard, Nutzer-Aktionen (C)
...
Backend:
- Login setzt httpOnly SameSite=Strict Cookie (archivmail_session)
- Logout löscht Cookie + blacklistet Token
- authMiddleware: Cookie first, Bearer als Fallback (CLI kompatibel)
Frontend:
- api.ts: credentials: include statt localStorage/Bearer Token
- updateUser(), deleteUser() hinzugefügt
- useAuth: kein localStorage mehr, nur /api/auth/me
requireRole: "admin" | "auditor" | undefined
- Login-Seite: kein localStorage
- Navbar: kein localStorage
- Admin: Nutzer-Aktionen (Sperren/Freischalten, Löschen, Passwort-Reset)
Löschen verhindert wenn letzter Admin (HTTP 409)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 19:57:13 +01:00
sysops and Claude Sonnet 4.6
a94b1d3e52
fix(PROJ-1): bcrypt Cost 12, Rate-Limiting, last_login_at, User Update/Delete
...
- bcrypt cost erhöht von DefaultCost (10) auf 12
- Rate-Limiting: max 5 Fehlversuche in 15 Min → HTTP 429
- last_login_at in DB gespeichert und bei jedem Login aktualisiert
- login_attempts Tabelle für Fehlversuche
- PATCH /api/users/{id}: Passwort-Reset, Rolle, E-Mail, Active
- DELETE /api/users/{id}: Löschen mit Schutz für letzten Admin
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-14 23:04:45 +01:00
sysops and Claude Sonnet 4.6
3c722d0987
feat(PROJ-18): E-Mail Integritätsprüfung (SHA-256 Verifikation)
...
- Storage: VerifyIntegrity, GetAllIDs, GetVerifyStatus + DB-Spalten
- main: Hintergrund-Worker alle 5 Minuten (beim Start sofort: 40/40 OK)
- API: verify_ok + verified_at in GET /api/mails/{id} Antwort
- Frontend: Grüner Haken / graues X / rotes X in Mail-Ansicht
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-14 21:28:40 +01:00
sysops and Claude Sonnet 4.6
7e68c7ab02
feat(PROJ-5): AES-256-GCM Verschlüsselung, PostgreSQL Metadaten, Async Index Worker
...
- Storage: AES-256-GCM Verschlüsselung (keyfile, graceful fallback bei fehlendem Key)
- Storage: PostgreSQL emails-Tabelle mit Auto-Migration
- Storage: Save/Delete/Stats/FirstAndLastMail nutzen DB wenn verfügbar
- Index: Async IndexWorker (Go-Channel, Queue 1000, non-blocking Submit)
- SMTP: IndexCallback für async Indexierung nach Mail-Eingang
- main: Backfill beim Start (40 Mails migriert + indexiert)
- Bestehende Mails werden transparent entschlüsselt (Fallback auf Raw)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-14 20:26:50 +01:00
sysops and Claude Sonnet 4.6
850290b5ef
feat(PROJ-12): E-Mail Export EML/PDF/ZIP
...
- GET /api/export/pdf/{id}: PDF-Generierung (stdlib, kein ext. Paket)
- POST /api/export/zip: Streaming-ZIP mit manifest.csv, Anhänge optional
- Max. 500 Mails pro Export, Zugriffscheck per Rolle
- Audit-Log für jeden Export
- Frontend: PDF-Button in Mail-Ansicht
- Frontend: Checkboxen + ZIP-Export-Dialog in Suchergebnissen
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-14 19:49:00 +01:00
sysops and Claude Sonnet 4.6
30479cfc60
fix(PROJ-15): archivmail Symlink in /usr/local/bin beim Update setzen
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-14 19:17:54 +01:00
sysops and Claude Sonnet 4.6
4f93b9667d
feat(PROJ-15): CLI Import & Export als Subcommands
...
- archivmail import: EML + MBOX, --file/--dir/--recursive/--dry-run/--json
- archivmail export: EML + MBOX, Filter --from/--to/--date-from/--date-to/--query/--force/--json
- archivmail help / version
- MBOX Parser (SplitMbox) in pkg/mailparser/mbox.go
- Subcommand-Router in main.go ohne externe Abhängigkeit
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-14 18:25:21 +01:00
sysops and Claude Sonnet 4.6
dbcc980343
chore: Supabase-Paket entfernen (wird nicht verwendet)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-14 18:01:12 +01:00
sysops and Claude Sonnet 4.6
15fb4e4eaf
chore: AI Coding Starter Kit Dateien aus Git entfernen
...
- .claude/skills/, agents/, rules/ ignoriert (Workflow-Dateien)
- docs/production/ ignoriert (Template-Docs)
- src/lib/supabase.ts ignoriert (nicht verwendet)
- public/ Default-SVGs ignoriert
- .gitignore entsprechend erweitert
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-14 17:59:54 +01:00
sysops and Claude Sonnet 4.6
d360c9a5ba
feat(PROJ-17): Admin Dashboard Systemauslastung immer anzeigen
...
- Systemauslastungs-Sektion wird immer gerendert (nicht nur bei Erfolg)
- Fehlermeldung wenn /api/admin/system/stats nicht erreichbar ist
- Feature-Status auf In Review gesetzt
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-14 11:43:19 +01:00