fix: Cleanup im echten Entrypoint + idempotente Migration
Beim Audit der Container-Pipeline zwei Bugs gefunden: 1) backend/docker-entrypoint.sh (= der wirklich ausgeführte Entrypoint laut Dockerfile) ruft jetzt das Cleanup-Script auf. Der Cleanup- Aufruf hing bisher fälschlich in docker/entrypoint.sh – ein alternatives Setup, das von der Standard-Compose-Konfiguration NICHT genutzt wird. Folge: das Cleanup ist auf prod nie gelaufen. 2) Migration 20260516173552_portal_password_must_change nutzt jetzt `ADD COLUMN IF NOT EXISTS`. Auf prod-DBs, die zwischen den Runden per `prisma db push` updated wurden (z.B. weil der erste Build mit `db push` provisioniert war), existiert die Spalte bereits. Ohne IF NOT EXISTS würde migrate deploy beim Hochziehen einer neueren Version mit "Duplicate column" abbrechen. MariaDB ≥ 10.0.2 + MySQL ≥ 8.0.27 unterstützen IF NOT EXISTS für ALTER TABLE ADD COLUMN – beides ist in unserer Compose-Konfig abgedeckt. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -122,5 +122,13 @@ if [ "$RAN_SEED" = "true" ] && [ -d /app/factory-defaults-builtin ] \
|
||||
|| echo "[entrypoint] Factory-Defaults-Seed fehlgeschlagen – ignoriert"
|
||||
fi
|
||||
|
||||
# Datenbereinigung: XSS-Strings aus Customer/User-Stringfeldern strippen,
|
||||
# nicht-whitelisted AppSettings entfernen, Pentest-Marker melden (Default
|
||||
# nur warnen; CLEANUP_PURGE_PENTEST=true löscht markierte Records).
|
||||
# Idempotent – läuft bei jedem Container-Start ohne Risiko.
|
||||
echo "[entrypoint] Datenbereinigung läuft…"
|
||||
npx tsx prisma/cleanup-xss-and-mass-assignment.ts \
|
||||
|| echo "[entrypoint] Cleanup übersprungen / fehlgeschlagen – nicht kritisch"
|
||||
|
||||
echo "[entrypoint] Starte Backend…"
|
||||
exec "$@"
|
||||
|
||||
@@ -1,2 +1,5 @@
|
||||
-- AlterTable
|
||||
ALTER TABLE `Customer` ADD COLUMN `portalPasswordMustChange` BOOLEAN NOT NULL DEFAULT false;
|
||||
-- IF NOT EXISTS: macht das Hochziehen auf prod-DBs sicher, die das Feld
|
||||
-- über `prisma db push` schon erhalten haben (vor dem Migrations-Workflow).
|
||||
-- MariaDB unterstützt das seit 10.0.2, MySQL 8 ebenfalls.
|
||||
ALTER TABLE `Customer` ADD COLUMN IF NOT EXISTS `portalPasswordMustChange` BOOLEAN NOT NULL DEFAULT false;
|
||||
|
||||
Reference in New Issue
Block a user