banyaro/backend/static/js/pages
rene de1677154f Security + E-Mail-HTML + Quartalsbericht + Registrierungspflicht
Registrierung & Login:
- E-Mail-Verifikation jetzt Pflicht vor erstem Login
- Register gibt keinen Token mehr zurück → "Postfach prüfen"-Screen
- Login blockt mit EMAIL_NOT_VERIFIED (403) wenn unverifiziert
- Resend-Verification ohne Auth (email-basiert)
- Frontend: _renderVerifyPending() nach Register und Login-Fehler
- Account-Lockout: 5 Fehlversuche → 15 Min gesperrt (ratelimit.py)
- Login Rate-Limit zusätzlich per E-Mail-Adresse (5/5 Min)
- Fehler-Tracking wird bei erfolgreichem Login zurückgesetzt

E-Mail-Templates (alle Mails jetzt HTML):
- email_html() Shared-Template in mailer.py (Gradient-Header, Warm-Beige)
- Verifikations-Mail, Passwort-Reset → HTML mit CTA-Button
- Admin-Outreach: plain text auto-wrapped in HTML
- Züchter-Mails (Antrag/Genehmigung/Ablehnung) → Template
- Tierschutz-Alert (litters.py) → Template
- send_support_mail → HTML
- outreach._build_message() + _send_smtp() unterstützen jetzt html= Parameter

Forum-Schutz:
- Post-Cooldown: 30 Sek zwischen beliebigen Posts (DB-Check)
- Stunden-Limit: 5 Threads / 20 Antworten pro User/Stunde
- Duplikat-Erkennung: gleicher Text in 5 Min blockiert (in-memory)
- content_filter.py: Spam-Keywords, URL-Sperre für Accounts < 7 Tage,
  Sonderzeichen-Ratio-Check

Security-Headers:
- HSTS: max-age=31536000; includeSubDomains
- Content-Security-Policy: frame-ancestors none, base-uri self, …
- X-Frame-Options entfernt (CSP frame-ancestors ist moderner)

Honeypot-Fallen (13 Scanner-Pfade → 24h IP-Sperre):
- /api/admin/users, /api/v1/users, /api/.env, /api/config,
  /api/setup, /api/install, /api/phpinfo, /api/debug,
  /api/actuator, /api/swagger, /api/graphql u.a.

Quartalsbericht-System:
- backend/scripts/generate_reports.py: 6 Sections
  (Sicherheit, Funktionsumfang, Dateien, Nutzer, Partner, Server)
- make reports: generiert alle Berichte aus dem Container, committed
- Scheduler: quarterly_report Job (1. Feb/Mai/Aug/Nov 07:00)
  → vollständige HTML-Mail an ADMIN_EMAIL
- quarterly_report erscheint im täglichen Status-Report

Admin-Panel:
- "Forum & Meldungen" → "Forum"
2026-05-01 08:20:53 +02:00
..
admin.js Security + E-Mail-HTML + Quartalsbericht + Registrierungspflicht 2026-05-01 08:20:53 +02:00
breeder.js Feature: Vollständige Züchter-Rolle — Antrag, Würfe, Stammbaum, Genetik 2026-04-28 18:25:21 +02:00
chat.js Desktop: Nachrichten + Gassi-Treffen auf max-width 1100px — SW by-v408 2026-04-26 08:20:13 +02:00
datenschutz.js Config: mail@motocamp.de → banyaro.app-Adressen überall — ADMIN_EMAIL=admin@, hallo@ in Impressum/Datenschutz, SW by-v565 2026-04-30 18:29:51 +02:00
diary.js Performance: GZip, Cache-Control, WebP, SQLite-Tuning, Indizes, srcset — SW by-v438, APP_VER 417 2026-04-26 17:40:18 +02:00
dog-profile.js Icons: Emoji/Unicode → Phosphor in 8 Dateien + 16 neue Sprite-Icons — SW by-v415 2026-04-26 09:26:13 +02:00
erste-hilfe.js Giftköder: Tiergift-Nummern raus, Erste-Hilfe-Button direkt zu Vergiftung 2026-04-26 09:04:10 +02:00
events.js Icons: Emoji/Unicode → Phosphor in 8 Dateien + 16 neue Sprite-Icons — SW by-v415 2026-04-26 09:26:13 +02:00
forum.js Feature: 100 Gründer-Challenge — Leaderboard, Ranking, founder_number 2026-04-29 21:30:52 +02:00
friends.js Feature: Gründer/Partner-Badge im User-Profil-Modal + Freunde-Suche, SW by-v555 2026-04-30 15:08:59 +02:00
gruender.js Fix: /api/-Prefix in gruender.js+settings.js entfernt; Grant-Fehler sichtbar, SW by-v553 2026-04-30 14:45:16 +02:00
health.js Feature: Vollständige Züchter-Rolle — Antrag, Würfe, Stammbaum, Genetik 2026-04-28 18:25:21 +02:00
impressum.js Config: mail@motocamp.de → banyaro.app-Adressen überall — ADMIN_EMAIL=admin@, hallo@ in Impressum/Datenschutz, SW by-v565 2026-04-30 18:29:51 +02:00
knigge.js Knigge: Padding direkt auf Frage/Options/Bars-Elemente — SW by-v422 2026-04-26 10:11:24 +02:00
litters.js Fix: Datumfelder im Wurfformular bündig ausgerichtet (align-items:end) — SW by-v512, APP_VER 489 2026-04-29 19:49:22 +02:00
lost.js Sprint 15: Zeitzone-Fix, Gewichts-Sync, Öffnungszeiten, KI-Bericht, POI-Moderation — SW by-v432, APP_VER 411 2026-04-26 15:38:50 +02:00
map.js Fix: Karten-Pin-Setzen erfordert Login — Weiterleitung zu Welcome 2026-04-30 19:33:39 +02:00
moderation.js Sprint 15: Zeitzone-Fix, Gewichts-Sync, Öffnungszeiten, KI-Bericht, POI-Moderation — SW by-v432, APP_VER 411 2026-04-26 15:38:50 +02:00
movies.js Icons Runde 2: poison/wiki/movies/social + 16 Sprite-Icons — SW by-v416 2026-04-26 09:36:31 +02:00
notes.js Feature: Notizblock — Neue Notiz direkt erstellen mit Kategorie-Vorauswahl, SW by-v560 2026-04-30 16:43:16 +02:00
notifications.js Fix: Benachrichtigungen öffnen direkt das Ziel-Item 2026-04-19 10:22:13 +02:00
onboarding.js Sprint 12+13: Tagebuch Day-One-Redesign, Notiz-Feature, Icon-Fixes, SW by-v405 2026-04-25 20:44:46 +02:00
places.js Feature: Suchfeld in Routen, Events und Places 2026-04-18 18:42:13 +02:00
poison.js Sprint 14: Multi-Fix-Batch — SW by-v428, APP_VER 407 2026-04-26 11:06:59 +02:00
routes.js Feature: ORS-Wochenlimit (20/Woche), Tages-Cache, Privilegien-Bypass, Datenschutz-Update — SW by-v480, APP_VER 457 2026-04-29 08:23:55 +02:00
settings.js Security + E-Mail-HTML + Quartalsbericht + Registrierungspflicht 2026-05-01 08:20:53 +02:00
sitting.js Sprint 12+13: Tagebuch Day-One-Redesign, Notiz-Feature, Icon-Fixes, SW by-v405 2026-04-25 20:44:46 +02:00
social.js Icons Runde 2: poison/wiki/movies/social + 16 Sprite-Icons — SW by-v416 2026-04-26 09:36:31 +02:00
trainingsplaene.js Notizblock: Notiz-Button für 6 neue Bereiche + RUBRIKEN + Datenschutz — SW by-v425 2026-04-26 10:52:28 +02:00
uebungen.js Fix: Suchfeld+Button table-Layout für garantierte Nebeneinander-Darstellung — SW by-v501, APP_VER 478 2026-04-29 13:29:39 +02:00
walks.js Sprint 12+13: Tagebuch Day-One-Redesign, Notiz-Feature, Icon-Fixes, SW by-v405 2026-04-25 20:44:46 +02:00
welcome.js UX: Login → Welcome statt Diary; Landing-Features flacher (kein Box-Icon, einheitlicher Hintergrund) — SW by-v504, APP_VER 481 2026-04-29 16:53:17 +02:00
widget.js Sprint 15: Suche, Ausweis, Teilen, Widget 2026-04-17 15:51:09 +02:00
wiki.js Icons Runde 2: poison/wiki/movies/social + 16 Sprite-Icons — SW by-v416 2026-04-26 09:36:31 +02:00
wurfboerse.js Feature: Vollständige Züchter-Rolle — Antrag, Würfe, Stammbaum, Genetik 2026-04-28 18:25:21 +02:00
zucht-profil.js Feature: Vollständige Züchter-Rolle — Antrag, Würfe, Stammbaum, Genetik 2026-04-28 18:25:21 +02:00
zuchthunde.js Fix: Jahresbericht-Modal Schließen-Button + expliziter close-Handler — SW by-v507, APP_VER 484 2026-04-29 17:09:45 +02:00