diff --git a/install.php b/install.php new file mode 100644 index 0000000..d01da28 --- /dev/null +++ b/install.php @@ -0,0 +1,213 @@ + PDO::ERRMODE_EXCEPTION, +"; + $content .= " PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, +"; + $content .= " ]); +"; + $content .= " } +"; + $content .= " return $pdo; +"; + $content .= "} +"; + + return file_put_contents(__DIR__ . '/db/config.php', $content); +} + +// Handle Form Submissions +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + if ($step == 1) { + $host = $_POST['db_host'] ?? ''; + $name = $_POST['db_name'] ?? ''; + $user = $_POST['db_user'] ?? ''; + $pass = $_POST['db_pass'] ?? ''; + + try { + // Test Connection + $dsn = "mysql:host=$host;dbname=$name;charset=utf8mb4"; + $testPdo = new PDO($dsn, $user, $pass, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]); + + // If successful, write config + if (write_db_config($host, $name, $user, $pass)) { + $message = "Database connection established and saved!"; + $messageType = "success"; + // Redirect to avoid resubmission + header("Location: install.php?step=2"); + exit; + } else { + $message = "Could not write to db/config.php. Check permissions."; + $messageType = "danger"; + } + } catch (PDOException $e) { + $message = "Connection failed: " . $e->getMessage(); + $messageType = "danger"; + } + } elseif ($step == 2) { + require_once __DIR__ . '/includes/app.php'; + + $email = $_POST['admin_email'] ?? ''; + $password = $_POST['admin_pass'] ?? ''; + $fullName = $_POST['admin_name'] ?? 'Administrator'; + + if ($email && $password) { + try { + ensure_schema(); // Make sure tables exist + + // Check if admin exists + $stmt = db()->prepare("SELECT id FROM users WHERE email = ?"); + $stmt->execute([$email]); + + if ($stmt->fetch()) { + // Update existing + $stmt = db()->prepare("UPDATE users SET password = ?, full_name = ?, role = 'admin', status = 'active' WHERE email = ?"); + $stmt->execute([password_hash($password, PASSWORD_DEFAULT), $fullName, $email]); + } else { + // Create new + $stmt = db()->prepare("INSERT INTO users (email, password, full_name, role, status) VALUES (?, ?, ?, 'admin', 'active')"); + $stmt->execute([$email, password_hash($password, PASSWORD_DEFAULT), $fullName]); + } + + $message = "Admin account created successfully!"; + $messageType = "success"; + $step = 3; // Success page + } catch (Exception $e) { + $message = "Error creating admin: " . $e->getMessage(); + $messageType = "danger"; + } + } else { + $message = "Please fill in all fields."; + $messageType = "danger"; + } + } +} + +// Load current config values for Step 1 +$current_db_host = '127.0.0.1'; +$current_db_name = 'app'; +$current_db_user = 'root'; +$current_db_pass = ''; + +if (file_exists(__DIR__ . '/db/config.php')) { + include __DIR__ . '/db/config.php'; + if (defined('DB_HOST')) $current_db_host = DB_HOST; + if (defined('DB_NAME')) $current_db_name = DB_NAME; + if (defined('DB_USER')) $current_db_user = DB_USER; + if (defined('DB_PASS')) $current_db_pass = DB_PASS; +} + +?> + + +
+ + +