114 lines
3.1 KiB
Bash
114 lines
3.1 KiB
Bash
#!/bin/bash
|
|
# PIRP Reset Script - Setzt DB und Uploads komplett zurück
|
|
# Default Login nach Reset: admin:admin
|
|
#
|
|
# Verwendung:
|
|
# ./reset.sh - Interaktiv (fragt nach Docker/Lokal)
|
|
# ./reset.sh docker - Nur Docker
|
|
# ./reset.sh local - Nur Lokal
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
cd "$SCRIPT_DIR"
|
|
|
|
# DB-Verbindungsdaten für lokalen Betrieb (aus config.php oder Env)
|
|
DB_HOST="${DB_HOST:-127.0.0.1}"
|
|
DB_PORT="${DB_PORT:-5432}"
|
|
DB_NAME="${DB_NAME:-pirp}"
|
|
DB_USER="${DB_USER:-pirp_user}"
|
|
DB_PASS="${DB_PASS:-PIRPdb2025!}"
|
|
|
|
# admin:admin Password Hash
|
|
ADMIN_HASH='$2y$10$YourHashHere'
|
|
|
|
echo "=== PIRP Reset ==="
|
|
echo "WARNUNG: Dies löscht ALLE Daten (Datenbank + Uploads)!"
|
|
echo ""
|
|
|
|
# Modus bestimmen
|
|
MODE="$1"
|
|
if [ -z "$MODE" ]; then
|
|
echo "Welchen Modus verwenden?"
|
|
echo " 1) Docker (docker-compose)"
|
|
echo " 2) Lokal (PostgreSQL direkt)"
|
|
echo ""
|
|
read -p "Auswahl (1/2): " choice
|
|
case "$choice" in
|
|
1) MODE="docker" ;;
|
|
2) MODE="local" ;;
|
|
*) echo "Ungültige Auswahl."; exit 1 ;;
|
|
esac
|
|
fi
|
|
|
|
echo ""
|
|
read -p "Wirklich ALLE Daten löschen? (ja/nein): " confirm
|
|
if [ "$confirm" != "ja" ]; then
|
|
echo "Abgebrochen."
|
|
exit 0
|
|
fi
|
|
|
|
# Uploads löschen
|
|
echo ""
|
|
echo "=> Uploads löschen..."
|
|
rm -rf public/uploads/logos/* 2>/dev/null || true
|
|
rm -rf public/uploads/expenses/* 2>/dev/null || true
|
|
rm -rf public/uploads/invoices/* 2>/dev/null || true
|
|
mkdir -p public/uploads/logos public/uploads/expenses public/uploads/invoices
|
|
echo " Uploads gelöscht."
|
|
|
|
if [ "$MODE" = "docker" ]; then
|
|
# === DOCKER MODUS ===
|
|
echo ""
|
|
echo "=> Docker Container stoppen und Volume löschen..."
|
|
docker compose down -v 2>/dev/null || docker-compose down -v 2>/dev/null || true
|
|
|
|
echo ""
|
|
echo "=> Docker Container neu starten..."
|
|
docker compose up -d 2>/dev/null || docker-compose up -d
|
|
|
|
echo ""
|
|
echo "=> Warte auf Datenbank..."
|
|
sleep 5
|
|
|
|
echo ""
|
|
echo "=> Migrationen ausführen..."
|
|
docker compose exec -T db psql -U "$DB_USER" -d "$DB_NAME" -f /docker-entrypoint-initdb.d/02-journal.sql 2>/dev/null || true
|
|
|
|
else
|
|
# === LOKAL MODUS ===
|
|
export PGPASSWORD="$DB_PASS"
|
|
|
|
echo ""
|
|
echo "=> Datenbank zurücksetzen..."
|
|
|
|
# Alle Tabellen droppen und Schema neu erstellen
|
|
echo " Schema anwenden..."
|
|
psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -f schema.sql
|
|
|
|
echo " Journal-Migration..."
|
|
psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -f tools/migrate_journal.sql
|
|
|
|
# Admin-User erstellen (admin:admin)
|
|
echo " Admin-User erstellen..."
|
|
ADMIN_HASH=$(php -r "echo password_hash('admin', PASSWORD_DEFAULT);")
|
|
psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" <<EOF
|
|
INSERT INTO users (username, password_hash)
|
|
VALUES ('admin', '$ADMIN_HASH')
|
|
ON CONFLICT (username) DO UPDATE SET password_hash = EXCLUDED.password_hash;
|
|
EOF
|
|
|
|
unset PGPASSWORD
|
|
fi
|
|
|
|
echo ""
|
|
echo "=== Reset abgeschlossen ==="
|
|
echo ""
|
|
echo "Login: admin / admin"
|
|
if [ "$MODE" = "docker" ]; then
|
|
echo "URL: http://localhost:8080"
|
|
else
|
|
echo "Starte Server mit: php -S localhost:8080 -t public"
|
|
fi
|
|
echo ""
|