Initial commit: TimeClock v3 - Node.js/Vue.js Zeiterfassung
Features: - Backend: Node.js/Express mit MySQL/MariaDB - Frontend: Vue.js 3 mit Composition API - UTC-Zeithandling für korrekte Zeiterfassung - Timewish-basierte Überstundenberechnung - Wochenübersicht mit Urlaubs-/Krankheits-/Feiertagshandling - Bereinigtes Arbeitsende (Generell/Woche) - Überstunden-Offset für historische Daten - Fixed Layout mit scrollbarem Content - Kompakte UI mit grünem Theme
This commit is contained in:
156
backend/setup-mysql.sh
Executable file
156
backend/setup-mysql.sh
Executable file
@@ -0,0 +1,156 @@
|
||||
#!/bin/bash
|
||||
|
||||
# TimeClock MySQL Setup Script
|
||||
# Erstellt automatisch Datenbank und Benutzer
|
||||
|
||||
set -e
|
||||
|
||||
echo "🕐 TimeClock - MySQL Setup"
|
||||
echo "=========================="
|
||||
echo ""
|
||||
|
||||
# Farben für Output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Standardwerte
|
||||
DB_NAME="stechuhr2"
|
||||
DEFAULT_USER="timeclock_user"
|
||||
DEFAULT_PASSWORD="timeclock_dev_2025"
|
||||
|
||||
echo "Dieses Script erstellt:"
|
||||
echo " - Datenbank: $DB_NAME"
|
||||
echo " - Benutzer: $DEFAULT_USER"
|
||||
echo ""
|
||||
|
||||
# MySQL Root-Passwort abfragen
|
||||
read -sp "MySQL Root-Passwort eingeben: " MYSQL_ROOT_PASSWORD
|
||||
echo ""
|
||||
echo ""
|
||||
|
||||
# Test MySQL-Verbindung
|
||||
echo "Teste MySQL-Verbindung..."
|
||||
if ! mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "SELECT 1;" &> /dev/null; then
|
||||
echo -e "${RED}❌ Fehler: MySQL-Verbindung fehlgeschlagen${NC}"
|
||||
echo "Bitte prüfen Sie:"
|
||||
echo " - MySQL Server läuft: sudo systemctl status mysql"
|
||||
echo " - Root-Passwort ist korrekt"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "${GREEN}✅ MySQL-Verbindung erfolgreich${NC}"
|
||||
echo ""
|
||||
|
||||
# Benutzer-Credentials abfragen
|
||||
read -p "Datenbank-Benutzer [$DEFAULT_USER]: " DB_USER
|
||||
DB_USER=${DB_USER:-$DEFAULT_USER}
|
||||
|
||||
read -sp "Passwort für '$DB_USER' [$DEFAULT_PASSWORD]: " DB_PASSWORD
|
||||
echo ""
|
||||
DB_PASSWORD=${DB_PASSWORD:-$DEFAULT_PASSWORD}
|
||||
echo ""
|
||||
|
||||
# Datenbank und Benutzer erstellen
|
||||
echo "Erstelle Datenbank und Benutzer..."
|
||||
|
||||
mysql -u root -p"$MYSQL_ROOT_PASSWORD" <<MYSQL_SCRIPT
|
||||
-- Datenbank erstellen
|
||||
CREATE DATABASE IF NOT EXISTS $DB_NAME
|
||||
CHARACTER SET utf8mb4
|
||||
COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
-- Benutzer erstellen (falls existiert, überspringen)
|
||||
CREATE USER IF NOT EXISTS '$DB_USER'@'localhost'
|
||||
IDENTIFIED BY '$DB_PASSWORD';
|
||||
|
||||
-- Berechtigungen vergeben
|
||||
GRANT ALL PRIVILEGES ON $DB_NAME.*
|
||||
TO '$DB_USER'@'localhost';
|
||||
|
||||
-- Privilegien neu laden
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
-- Info ausgeben
|
||||
SELECT 'Datenbank erstellt' AS Status;
|
||||
SHOW DATABASES LIKE '$DB_NAME';
|
||||
SELECT User, Host FROM mysql.user WHERE User='$DB_USER';
|
||||
MYSQL_SCRIPT
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo -e "${GREEN}✅ Datenbank und Benutzer erfolgreich erstellt${NC}"
|
||||
echo ""
|
||||
else
|
||||
echo -e "${RED}❌ Fehler beim Erstellen${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# .env Datei erstellen/aktualisieren
|
||||
ENV_FILE=".env"
|
||||
echo "Aktualisiere .env Datei..."
|
||||
|
||||
cat > "$ENV_FILE" <<ENV_CONTENT
|
||||
# Server-Konfiguration
|
||||
PORT=3010
|
||||
NODE_ENV=development
|
||||
|
||||
# MySQL Datenbank-Verbindung
|
||||
DB_HOST=localhost
|
||||
DB_PORT=3306
|
||||
DB_USER=$DB_USER
|
||||
DB_PASSWORD=$DB_PASSWORD
|
||||
DB_NAME=$DB_NAME
|
||||
|
||||
# Datenbank-Optionen
|
||||
DB_LOGGING=false
|
||||
DB_TIMEZONE=+01:00
|
||||
DB_POOL_MAX=10
|
||||
DB_POOL_MIN=0
|
||||
|
||||
# JWT-Konfiguration
|
||||
JWT_SECRET=timeclock-dev-secret-change-in-production-12345
|
||||
JWT_EXPIRATION=24h
|
||||
|
||||
# E-Mail-Konfiguration (für Passwort-Reset)
|
||||
SMTP_HOST=smtp.gmail.com
|
||||
SMTP_PORT=587
|
||||
SMTP_USER=
|
||||
SMTP_PASSWORD=
|
||||
SMTP_FROM=noreply@timeclock.com
|
||||
ENV_CONTENT
|
||||
|
||||
echo -e "${GREEN}✅ .env Datei erstellt${NC}"
|
||||
echo ""
|
||||
|
||||
# Test-Verbindung
|
||||
echo "Teste Verbindung mit neuen Credentials..."
|
||||
if mysql -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" -e "SELECT 1;" &> /dev/null; then
|
||||
echo -e "${GREEN}✅ Verbindung erfolgreich!${NC}"
|
||||
else
|
||||
echo -e "${RED}❌ Verbindung fehlgeschlagen${NC}"
|
||||
exit 1
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# Zusammenfassung
|
||||
echo "=========================="
|
||||
echo -e "${GREEN}🎉 Setup abgeschlossen!${NC}"
|
||||
echo ""
|
||||
echo "Ihre Konfiguration:"
|
||||
echo " Datenbank: $DB_NAME"
|
||||
echo " Benutzer: $DB_USER"
|
||||
echo " Host: localhost:3306"
|
||||
echo ""
|
||||
echo "Die .env Datei wurde erstellt mit den Zugangsdaten."
|
||||
echo ""
|
||||
echo "Nächste Schritte:"
|
||||
echo " 1. Server starten: npm run dev"
|
||||
echo " 2. Browser öffnen: http://localhost:5010"
|
||||
echo ""
|
||||
echo "Erste Schritte:"
|
||||
echo " 1. Account registrieren unter /register"
|
||||
echo " 2. Einloggen und Timer starten"
|
||||
echo ""
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user