banyaro/backend/static
rene 35937ed51b Bündel 3: Security-Helper + Demo-Migration, SW by-v1115
NEUE HELPER in auth.py:

require_moderator(user=Depends(get_current_user))
  Konsequente Dependency statt inline
  'if user["rolle"] not in ("admin", "moderator")'

require_breeder(user=Depends(get_current_user))
  Konsequente Dependency statt inline
  'if user["subscription_tier"] not in ("breeder", "breeder_test")'

require_owner(row, user, owner_field='user_id',
              not_found_msg, forbidden_msg) -> row
  Zentralisiert das häufigste Pattern (54 Stellen im Audit):
  Statt:
    row = conn.execute(...).fetchone()
    if not row: raise HTTPException(404, ...)
    if row['user_id'] != user['id']: raise HTTPException(403, ...)
  Jetzt:
    row = require_owner(conn.execute(...).fetchone(), user,
                        not_found_msg='Ort nicht gefunden.')

is_owner_or_admin(row, user, owner_field='user_id') -> bool
  True wenn Owner ODER Admin/Moderator (Admin-Override für
  Moderations-Endpoints)

DEMO-MIGRATION:
places.py PATCH /places/{id} + DELETE /places/{id} migriert auf
require_owner() — als Style-Referenz für künftige Migrationen.

KEINE Massen-Migration der 54 Stellen — bewusste Entscheidung
weil security-kritisch. Helper sind bereitgestellt, neuer Code
nutzt sie, bestehender bleibt funktional identisch.

Tests 19/19 grün.

Hinweis: Massen-Migration der Owner-Checks ist eigener Sprint mit
sehr sorgfältigem Testing — bei jeder migrierten Route muss die
404→403→Cascade durchgeprüft werden, dass Owner+Non-Owner+Admin
sich identisch zum Vorher verhalten.
2026-05-27 11:27:00 +02:00
..
css Sprint D: Karten-Familie auf UI.map.create+svgMarker konsolidiert, SW by-v1107 2026-05-27 08:17:06 +02:00
icons Chore: Sprint32-36 Zwischenstand — alle Änderungen aus dieser Session committen 2026-05-03 11:09:39 +02:00
img Landing: Ban Yaro persönlich — Foto + Geschichte als Split-Section (SW by-v960) 2026-05-14 19:50:12 +02:00
js Bündel 3: Security-Helper + Demo-Migration, SW by-v1115 2026-05-27 11:27:00 +02:00
index.html Bündel 3: Security-Helper + Demo-Migration, SW by-v1115 2026-05-27 11:27:00 +02:00
landing.html Bündel 3: Security-Helper + Demo-Migration, SW by-v1115 2026-05-27 11:27:00 +02:00
llms.txt SEO: llms.txt v1.5.1 + sitemap /zuechter + JSON-LD Pricing (Pro 29€/Züchter 49€) 2026-05-14 09:43:21 +02:00
manifest.json Fix: theme-color dunkel im Dark-Mode (Statusleiste Samsung), manifest background_color dunkel (SW by-v810) 2026-05-09 21:59:20 +02:00
presse.html Feature: Welten-Onboarding, Wetter-Motivation, UX-Fixes (SW by-v715) 2026-05-05 17:32:03 +02:00
robots.txt Feature+Fix: Referral-Admin, Pro-Gates, Karten-Layer, onDogChange, Staging-Media (SW by-v855) 2026-05-11 17:23:29 +02:00
sitemap.xml SEO: llms.txt v1.5.1 + sitemap /zuechter + JSON-LD Pricing (Pro 29€/Züchter 49€) 2026-05-14 09:43:21 +02:00
sw.js Bündel 3: Security-Helper + Demo-Migration, SW by-v1115 2026-05-27 11:27:00 +02:00
zuechter.html Neu: AGB-Seite + Impressum/Datenschutz aktualisiert (SW by-v985) 2026-05-15 16:21:04 +02:00