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
157 lines
3.6 KiB
Bash
Executable File
157 lines
3.6 KiB
Bash
Executable File
#!/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 ""
|
|
|
|
|
|
|