My-Weekly-ToDo-List/scripts/quality-check.sh
mARTin-B78 230a4034e8
Some checks are pending
Playwright Tests / test (push) Waiting to run
Test and SonarQube / quality (push) Waiting to run
feat: rate limiting, token hashing, remove mock login route
Erste Abarbeitung des Repository-Audits (siehe TODO.md).

Sicherheit:
- Rate-Limiting für alle vier Auth-Endpunkte. Sie waren unbegrenzt aufrufbar,
  also beliebig viele Mails über den eigenen SMTP-Zugang und beliebig viele
  Rateversuche auf Verifizierungscodes.
- Passwort-Reset-Token nur noch als SHA-256-Hash in der Datenbank. Bisher
  Klartext: Lesezugriff auf die DB genuegte zur Kontouebernahme.
- Tote Mock-Login-Route entfernt. Sie verglich gegen ein hartcodiertes
  Fake-Passwort und war ueber die Middleware-Ausnahme fuer /api/auth/*
  ohne Anmeldung erreichbar.
- Passwort-Reset auf bcrypt-Kosten 12, wie beim Signup.

Reparaturen:
- npm test rief jest auf, obwohl es weder Jest-Config noch Jest-Tests gibt.
  Zeigt jetzt auf Playwright; jest/ts-jest/@types/jest entfernt.
- Falscher sonar.projectKey im Workflow.

Verifiziert per tsc gegen die geaenderten Bereiche: keine neuen Typfehler.

v1.117.0

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-06 20:01:30 +02:00

45 lines
1.2 KiB
Bash

#!/bin/bash
#
# Wiederkehrende Qualitäts- und Sicherheitsprüfung.
#
# Gedacht für den nächtlichen Lauf auf dem Spark (todo-sonar.timer), kann aber jederzeit
# von Hand gestartet werden: bash scripts/quality-check.sh
#
# Bewusst NICHT auf dem Produktionscontainer: LXC 202 hat 2 Kerne und bedient Live-Verkehr,
# und ein Scan zur Deploy-Zeit findet Probleme erst, nachdem sie ausgeliefert wurden.
main() {
set -uo pipefail # kein -e: jede Prüfung soll laufen, auch wenn eine vorher meckert
local FAILED=0
step() { echo; echo "=== $1 ==="; }
cd "$(dirname "$0")/.."
step "Abhängigkeiten auf bekannte Sicherheitslücken"
npm audit --audit-level=high || FAILED=1
step "TypeScript"
npm run type-check || FAILED=1
step "ESLint"
npm run lint || FAILED=1
step "SonarQube"
if command -v todo-sonar-scan >/dev/null; then
todo-sonar-scan || FAILED=1
else
echo "todo-sonar-scan nicht gefunden — übersprungen"
fi
echo
if [ "$FAILED" -eq 0 ]; then
echo "=== Alle Prüfungen bestanden ==="
else
echo "=== Mindestens eine Prüfung hat angeschlagen (siehe oben) ==="
fi
return "$FAILED"
}
main "$@"