setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Datenbank erstellen falls nicht vorhanden $pdo->exec("CREATE DATABASE IF NOT EXISTS `$db_name` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"); $pdo->exec("USE `$db_name`"); // Tabellen erstellen $sql = file_get_contents(__DIR__ . '/database.sql'); $pdo->exec($sql); $_SESSION['install_db'] = [ 'host' => $db_host, 'name' => $db_name, 'user' => $db_user, 'pass' => $db_pass ]; } catch (PDOException $e) { $errors[] = "Datenbankfehler: " . $e->getMessage(); $step = 1; } } // Step 2: Admin-Account erstellen if ($step === 3 && $_SERVER['REQUEST_METHOD'] === 'POST') { $admin_email = filter_var($_POST['admin_email'] ?? '', FILTER_VALIDATE_EMAIL); $admin_name = $_POST['admin_name'] ?? ''; $admin_password = $_POST['admin_password'] ?? ''; $admin_password_confirm = $_POST['admin_password_confirm'] ?? ''; if (!$admin_email) { $errors[] = "Ungültige E-Mail-Adresse"; $step = 2; } elseif (strlen($admin_password) < 8) { $errors[] = "Passwort muss mindestens 8 Zeichen lang sein"; $step = 2; } elseif ($admin_password !== $admin_password_confirm) { $errors[] = "Passwörter stimmen nicht überein"; $step = 2; } else { $_SESSION['install_admin'] = [ 'email' => $admin_email, 'name' => $admin_name, 'password' => password_hash($admin_password, PASSWORD_DEFAULT) ]; } } // Step 3: Allgemeine Einstellungen if ($step === 4 && $_SERVER['REQUEST_METHOD'] === 'POST') { $app_title = $_POST['app_title'] ?? 'UniFi Voucher System'; $logo_url = $_POST['logo_url'] ?? ''; $instruction_header = $_POST['instruction_header'] ?? ''; $instruction_text = $_POST['instruction_text'] ?? ''; $public_access = isset($_POST['public_access']) ? 1 : 0; // Microsoft 365 OAuth (optional) $m365_client_id = $_POST['m365_client_id'] ?? ''; $m365_client_secret = $_POST['m365_client_secret'] ?? ''; $m365_tenant_id = $_POST['m365_tenant_id'] ?? ''; $_SESSION['install_settings'] = [ 'app_title' => $app_title, 'logo_url' => $logo_url, 'instruction_header' => $instruction_header, 'instruction_text' => $instruction_text, 'public_access' => $public_access, 'm365_client_id' => $m365_client_id, 'm365_client_secret' => $m365_client_secret, 'm365_tenant_id' => $m365_tenant_id ]; } // Step 4: Installation abschließen if ($step === 5 && $_SERVER['REQUEST_METHOD'] === 'POST') { try { $db = $_SESSION['install_db']; $admin = $_SESSION['install_admin']; $settings = $_SESSION['install_settings']; $pdo = new PDO("mysql:host={$db['host']};dbname={$db['name']};charset=utf8mb4", $db['user'], $db['pass']); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Admin-User erstellen $stmt = $pdo->prepare("INSERT INTO users (email, name, password_hash, is_admin, is_active) VALUES (?, ?, ?, 1, 1)"); $stmt->execute([$admin['email'], $admin['name'], $admin['password']]); // Settings speichern $settingsData = [ 'app_title' => $settings['app_title'], 'logo_url' => $settings['logo_url'], 'instruction_header' => $settings['instruction_header'], 'instruction_text' => $settings['instruction_text'], 'public_access' => $settings['public_access'], 'm365_client_id' => $settings['m365_client_id'], 'm365_client_secret' => $settings['m365_client_secret'], 'm365_tenant_id' => $settings['m365_tenant_id'] ]; $stmt = $pdo->prepare("INSERT INTO settings (setting_key, setting_value) VALUES (?, ?) ON DUPLICATE KEY UPDATE setting_value = VALUES(setting_value)"); foreach ($settingsData as $key => $value) { $stmt->execute([$key, $value]); } // config.php erstellen $configContent = "\n"; $htaccess .= " Order Allow,Deny\n"; $htaccess .= " Deny from all\n"; $htaccess .= "\n\n"; $htaccess .= "DirectoryIndex index.php\n"; file_put_contents(__DIR__ . '/.htaccess', $htaccess); $success = true; // Session-Daten löschen unset($_SESSION['install_db'], $_SESSION['install_admin'], $_SESSION['install_settings']); } catch (Exception $e) { $errors[] = "Fehler bei der Installation: " . $e->getMessage(); $step = 4; } } ?> UniFi Voucher System - Installation

🚀 UniFi Voucher System

Installation

1
2
3
4
5
✓ Installation erfolgreich abgeschlossen!
Sie können sich jetzt mit Ihren Admin-Zugangsdaten anmelden.
Zum Login

Schritt 1: Datenbank-Konfiguration

Meist "localhost"
Name der Datenbank (wird erstellt falls nicht vorhanden)

Schritt 2: Administrator-Account

Mindestens 8 Zeichen

Schritt 3: Allgemeine Einstellungen

Microsoft 365 Login (Optional)

Leer lassen, wenn M365-Login nicht verwendet werden soll

Schritt 4: Installation abschließen

Klicken Sie auf "Installation abschließen", um die Einrichtung zu beenden. Die Datenbank und alle notwendigen Dateien werden erstellt.