58 lines
1.9 KiB
PHP
58 lines
1.9 KiB
PHP
<?php
|
|
$host_sekarang = $_SERVER['SERVER_NAME'];
|
|
|
|
if ($host_sekarang === 'localhost' || $host_sekarang === '127.0.0.1') {
|
|
$host = "localhost";
|
|
$user = "root";
|
|
$pass = "";
|
|
$db = "webgis_db";
|
|
} else {
|
|
// Gunakan Kredensial Normal User dari Coolify
|
|
$host = "mysql-webgis";
|
|
$user = "root"; // Menggunakan root user
|
|
$pass = "yg7eDOyhmHwJaR93A1SdPawY3533dFd8GlIVnVezQiV3IWR5DDc7ApQeIkzKneGL"; // Root User Password
|
|
$db = "webgis_db";
|
|
}
|
|
|
|
// Connect to MySQL server first
|
|
$conn = new mysqli($host, $user, $pass);
|
|
|
|
if ($conn->connect_error) {
|
|
die("Koneksi gagal: " . $conn->connect_error);
|
|
}
|
|
|
|
// Create database if not exists
|
|
$conn->query("CREATE DATABASE IF NOT EXISTS `$db` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;");
|
|
|
|
// Select database
|
|
$conn->select_db($db);
|
|
|
|
// Create users table
|
|
$sql_users = "CREATE TABLE IF NOT EXISTS `users` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`username` VARCHAR(50) NOT NULL UNIQUE,
|
|
`password` VARCHAR(255) NOT NULL,
|
|
`avatar` VARCHAR(255) NOT NULL,
|
|
`role` VARCHAR(20) NOT NULL DEFAULT 'admin'
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
|
|
|
|
if (!$conn->query($sql_users)) {
|
|
die("Gagal membuat tabel users: " . $conn->error);
|
|
}
|
|
|
|
// Seed default admin if empty
|
|
$check_empty = $conn->query("SELECT COUNT(*) as count FROM users");
|
|
$row = $check_empty->fetch_assoc();
|
|
if ($row['count'] == 0) {
|
|
$default_user = 'admin';
|
|
// Hashing password "admin123"
|
|
$default_pass = password_hash('admin123', PASSWORD_BCRYPT);
|
|
$default_avatar = 'https://ui-avatars.com/api/?name=Admin+Operator&background=1e40af&color=fff&bold=true&size=128';
|
|
$default_role = 'admin';
|
|
|
|
$stmt = $conn->prepare("INSERT INTO users (username, password, avatar, role) VALUES (?, ?, ?, ?)");
|
|
$stmt->bind_param("ssss", $default_user, $default_pass, $default_avatar, $default_role);
|
|
$stmt->execute();
|
|
$stmt->close();
|
|
}
|