fix koneksi database admin
This commit is contained in:
+12
-6
@@ -39,20 +39,26 @@ try {
|
|||||||
|
|
||||||
echo "=== CEK TABEL ===\n";
|
echo "=== CEK TABEL ===\n";
|
||||||
$tables = ['users', 'spbu', 'rumah_ibadah', 'penduduk_miskin'];
|
$tables = ['users', 'spbu', 'rumah_ibadah', 'penduduk_miskin'];
|
||||||
|
$tableExists = [];
|
||||||
foreach ($tables as $table) {
|
foreach ($tables as $table) {
|
||||||
$result = $conn->query("SHOW TABLES LIKE '$table'");
|
$result = $conn->query("SHOW TABLES LIKE '$table'");
|
||||||
$exists = $result->num_rows > 0;
|
$exists = $result->num_rows > 0;
|
||||||
|
$tableExists[$table] = $exists;
|
||||||
echo "Tabel '$table': " . ($exists ? "ADA" : "TIDAK ADA") . "\n";
|
echo "Tabel '$table': " . ($exists ? "ADA" : "TIDAK ADA") . "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "\n=== CEK USER ADMIN ===\n";
|
echo "\n=== CEK USER ADMIN ===\n";
|
||||||
$result = $conn->query("SELECT username, created_at FROM users LIMIT 5");
|
if (!$tableExists['users']) {
|
||||||
if ($result && $result->num_rows > 0) {
|
echo "Tabel users belum ada. Jalankan: php scripts/init_db.php\n";
|
||||||
while ($row = $result->fetch_assoc()) {
|
|
||||||
echo "User: " . $row['username'] . " | Dibuat: " . $row['created_at'] . "\n";
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
echo "Tabel users kosong - belum ada user!\n";
|
$result = $conn->query("SELECT username, created_at FROM users LIMIT 5");
|
||||||
|
if ($result && $result->num_rows > 0) {
|
||||||
|
while ($row = $result->fetch_assoc()) {
|
||||||
|
echo "User: " . $row['username'] . " | Dibuat: " . $row['created_at'] . "\n";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo "Tabel users kosong - belum ada user!\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (mysqli_sql_exception $e) {
|
} catch (mysqli_sql_exception $e) {
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
header('Content-Type: application/json');
|
||||||
|
|
||||||
|
$expectedToken = getenv('INIT_TOKEN') ?: '';
|
||||||
|
$providedToken = $_GET['token'] ?? '';
|
||||||
|
|
||||||
|
if ($expectedToken === '' || !hash_equals($expectedToken, $providedToken)) {
|
||||||
|
http_response_code(403);
|
||||||
|
echo json_encode([
|
||||||
|
'status' => 'error',
|
||||||
|
'message' => 'Invalid or missing INIT_TOKEN.',
|
||||||
|
], JSON_PRETTY_PRINT);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
require __DIR__ . '/scripts/init_db_core.php';
|
||||||
|
$result = initializeDatabase();
|
||||||
|
|
||||||
|
echo json_encode([
|
||||||
|
'status' => 'success',
|
||||||
|
'message' => 'Database initialized successfully.',
|
||||||
|
'result' => $result,
|
||||||
|
], JSON_PRETTY_PRINT);
|
||||||
|
} catch (Throwable $e) {
|
||||||
|
http_response_code(500);
|
||||||
|
echo json_encode([
|
||||||
|
'status' => 'error',
|
||||||
|
'message' => $e->getMessage(),
|
||||||
|
], JSON_PRETTY_PRINT);
|
||||||
|
}
|
||||||
+7
-105
@@ -7,111 +7,13 @@ if (PHP_SAPI !== 'cli') {
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
require __DIR__ . '/../backend/koneksi.php';
|
require __DIR__ . '/init_db_core.php';
|
||||||
|
|
||||||
$db = getConnection();
|
$result = initializeDatabase();
|
||||||
|
|
||||||
$statements = [
|
|
||||||
"CREATE TABLE IF NOT EXISTS spbu (
|
|
||||||
id INT NOT NULL AUTO_INCREMENT,
|
|
||||||
nama VARCHAR(150) NOT NULL,
|
|
||||||
no_spbu VARCHAR(50) NOT NULL,
|
|
||||||
status ENUM('24jam', 'tidak') NOT NULL DEFAULT 'tidak',
|
|
||||||
latitude DECIMAL(10, 8) NOT NULL,
|
|
||||||
longitude DECIMAL(11, 8) NOT NULL,
|
|
||||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
PRIMARY KEY (id)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci",
|
|
||||||
|
|
||||||
"CREATE TABLE IF NOT EXISTS jalan (
|
|
||||||
id INT NOT NULL AUTO_INCREMENT,
|
|
||||||
nama_jalan VARCHAR(150) NOT NULL,
|
|
||||||
status ENUM('Nasional', 'Provinsi', 'Kabupaten') NOT NULL,
|
|
||||||
panjang DECIMAL(10, 2) NOT NULL,
|
|
||||||
geom LONGTEXT NOT NULL,
|
|
||||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
PRIMARY KEY (id)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci",
|
|
||||||
|
|
||||||
"CREATE TABLE IF NOT EXISTS parsil (
|
|
||||||
id INT NOT NULL AUTO_INCREMENT,
|
|
||||||
nama_pemilik VARCHAR(150) NOT NULL,
|
|
||||||
status ENUM('SHM', 'HGB', 'HGU', 'HP') NOT NULL,
|
|
||||||
luas DECIMAL(12, 2) NOT NULL,
|
|
||||||
geom LONGTEXT NOT NULL,
|
|
||||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
PRIMARY KEY (id)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci",
|
|
||||||
|
|
||||||
"CREATE TABLE IF NOT EXISTS rumah_ibadah (
|
|
||||||
id INT NOT NULL AUTO_INCREMENT,
|
|
||||||
nama VARCHAR(150) NOT NULL,
|
|
||||||
alamat TEXT NOT NULL,
|
|
||||||
latitude DECIMAL(10, 8) NOT NULL,
|
|
||||||
longitude DECIMAL(11, 8) NOT NULL,
|
|
||||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
PRIMARY KEY (id)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci",
|
|
||||||
|
|
||||||
"CREATE TABLE IF NOT EXISTS penduduk_miskin (
|
|
||||||
id INT NOT NULL AUTO_INCREMENT,
|
|
||||||
nama_kk VARCHAR(150) NOT NULL,
|
|
||||||
keterangan TEXT,
|
|
||||||
latitude DECIMAL(10, 8) NOT NULL,
|
|
||||||
longitude DECIMAL(11, 8) NOT NULL,
|
|
||||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
PRIMARY KEY (id)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci",
|
|
||||||
|
|
||||||
"CREATE TABLE IF NOT EXISTS users (
|
|
||||||
id INT NOT NULL AUTO_INCREMENT,
|
|
||||||
username VARCHAR(50) NOT NULL UNIQUE,
|
|
||||||
password VARCHAR(255) NOT NULL,
|
|
||||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
PRIMARY KEY (id)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci",
|
|
||||||
];
|
|
||||||
|
|
||||||
foreach ($statements as $statement) {
|
|
||||||
$db->query($statement);
|
|
||||||
}
|
|
||||||
|
|
||||||
$adminPassword = getenv('ADMIN_PASSWORD') ?: 'admin123';
|
|
||||||
$adminHash = password_hash($adminPassword, PASSWORD_DEFAULT);
|
|
||||||
|
|
||||||
$adminResult = $db->query("SELECT password FROM users WHERE username = 'admin' LIMIT 1");
|
|
||||||
if ($adminResult->num_rows === 0) {
|
|
||||||
$stmt = $db->prepare("INSERT INTO users (username, password) VALUES ('admin', ?)");
|
|
||||||
$stmt->bind_param('s', $adminHash);
|
|
||||||
$stmt->execute();
|
|
||||||
} else {
|
|
||||||
$currentHash = (string) $adminResult->fetch_assoc()['password'];
|
|
||||||
if (!password_verify($adminPassword, $currentHash)) {
|
|
||||||
$stmt = $db->prepare("UPDATE users SET password = ? WHERE username = 'admin'");
|
|
||||||
$stmt->bind_param('s', $adminHash);
|
|
||||||
$stmt->execute();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$count = (int) $db->query('SELECT COUNT(*) AS total FROM spbu')->fetch_assoc()['total'];
|
|
||||||
if ($count === 0) {
|
|
||||||
$seed = $db->prepare(
|
|
||||||
"INSERT INTO spbu (nama, no_spbu, status, latitude, longitude)
|
|
||||||
VALUES (?, ?, ?, ?, ?)"
|
|
||||||
);
|
|
||||||
|
|
||||||
$rows = [
|
|
||||||
['SPBU Sudirman', '64.751.01', '24jam', -0.0260000, 109.3425000],
|
|
||||||
['SPBU Ahmad Yani', '64.751.02', 'tidak', -0.0310000, 109.3218000],
|
|
||||||
['SPBU Sutan Syahrir', '64.751.03', '24jam', -0.0195000, 109.3612000],
|
|
||||||
];
|
|
||||||
|
|
||||||
foreach ($rows as [$name, $number, $status, $latitude, $longitude]) {
|
|
||||||
$seed->bind_param('sssdd', $name, $number, $status, $latitude, $longitude);
|
|
||||||
$seed->execute();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "Database initialized successfully.\n";
|
echo "Database initialized successfully.\n";
|
||||||
echo "Admin username: admin\n";
|
echo "Database: {$result['database']}\n";
|
||||||
echo "Admin password: {$adminPassword}\n";
|
echo "Admin username: {$result['admin_username']}\n";
|
||||||
|
echo "Admin password source: {$result['admin_password_source']}\n";
|
||||||
|
echo "Admin action: {$result['admin_action']}\n";
|
||||||
|
echo "Seeded SPBU rows: {$result['seeded_spbu']}\n";
|
||||||
|
|||||||
@@ -0,0 +1,123 @@
|
|||||||
|
<?php
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
function initializeDatabase(): array
|
||||||
|
{
|
||||||
|
require_once __DIR__ . '/../backend/koneksi.php';
|
||||||
|
|
||||||
|
$db = getConnection();
|
||||||
|
|
||||||
|
$statements = [
|
||||||
|
"CREATE TABLE IF NOT EXISTS spbu (
|
||||||
|
id INT NOT NULL AUTO_INCREMENT,
|
||||||
|
nama VARCHAR(150) NOT NULL,
|
||||||
|
no_spbu VARCHAR(50) NOT NULL,
|
||||||
|
status ENUM('24jam', 'tidak') NOT NULL DEFAULT 'tidak',
|
||||||
|
latitude DECIMAL(10, 8) NOT NULL,
|
||||||
|
longitude DECIMAL(11, 8) NOT NULL,
|
||||||
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci",
|
||||||
|
|
||||||
|
"CREATE TABLE IF NOT EXISTS jalan (
|
||||||
|
id INT NOT NULL AUTO_INCREMENT,
|
||||||
|
nama_jalan VARCHAR(150) NOT NULL,
|
||||||
|
status ENUM('Nasional', 'Provinsi', 'Kabupaten') NOT NULL,
|
||||||
|
panjang DECIMAL(10, 2) NOT NULL,
|
||||||
|
geom LONGTEXT NOT NULL,
|
||||||
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci",
|
||||||
|
|
||||||
|
"CREATE TABLE IF NOT EXISTS parsil (
|
||||||
|
id INT NOT NULL AUTO_INCREMENT,
|
||||||
|
nama_pemilik VARCHAR(150) NOT NULL,
|
||||||
|
status ENUM('SHM', 'HGB', 'HGU', 'HP') NOT NULL,
|
||||||
|
luas DECIMAL(12, 2) NOT NULL,
|
||||||
|
geom LONGTEXT NOT NULL,
|
||||||
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci",
|
||||||
|
|
||||||
|
"CREATE TABLE IF NOT EXISTS rumah_ibadah (
|
||||||
|
id INT NOT NULL AUTO_INCREMENT,
|
||||||
|
nama VARCHAR(150) NOT NULL,
|
||||||
|
alamat TEXT NOT NULL,
|
||||||
|
latitude DECIMAL(10, 8) NOT NULL,
|
||||||
|
longitude DECIMAL(11, 8) NOT NULL,
|
||||||
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci",
|
||||||
|
|
||||||
|
"CREATE TABLE IF NOT EXISTS penduduk_miskin (
|
||||||
|
id INT NOT NULL AUTO_INCREMENT,
|
||||||
|
nama_kk VARCHAR(150) NOT NULL,
|
||||||
|
keterangan TEXT,
|
||||||
|
latitude DECIMAL(10, 8) NOT NULL,
|
||||||
|
longitude DECIMAL(11, 8) NOT NULL,
|
||||||
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci",
|
||||||
|
|
||||||
|
"CREATE TABLE IF NOT EXISTS users (
|
||||||
|
id INT NOT NULL AUTO_INCREMENT,
|
||||||
|
username VARCHAR(50) NOT NULL UNIQUE,
|
||||||
|
password VARCHAR(255) NOT NULL,
|
||||||
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci",
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach ($statements as $statement) {
|
||||||
|
$db->query($statement);
|
||||||
|
}
|
||||||
|
|
||||||
|
$adminPassword = getenv('ADMIN_PASSWORD') ?: 'admin123';
|
||||||
|
$adminHash = password_hash($adminPassword, PASSWORD_DEFAULT);
|
||||||
|
|
||||||
|
$adminResult = $db->query("SELECT password FROM users WHERE username = 'admin' LIMIT 1");
|
||||||
|
$adminAction = 'unchanged';
|
||||||
|
if ($adminResult->num_rows === 0) {
|
||||||
|
$stmt = $db->prepare("INSERT INTO users (username, password) VALUES ('admin', ?)");
|
||||||
|
$stmt->bind_param('s', $adminHash);
|
||||||
|
$stmt->execute();
|
||||||
|
$adminAction = 'created';
|
||||||
|
} else {
|
||||||
|
$currentHash = (string) $adminResult->fetch_assoc()['password'];
|
||||||
|
if (!password_verify($adminPassword, $currentHash)) {
|
||||||
|
$stmt = $db->prepare("UPDATE users SET password = ? WHERE username = 'admin'");
|
||||||
|
$stmt->bind_param('s', $adminHash);
|
||||||
|
$stmt->execute();
|
||||||
|
$adminAction = 'updated';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$seededSpbu = 0;
|
||||||
|
$count = (int) $db->query('SELECT COUNT(*) AS total FROM spbu')->fetch_assoc()['total'];
|
||||||
|
if ($count === 0) {
|
||||||
|
$seed = $db->prepare(
|
||||||
|
"INSERT INTO spbu (nama, no_spbu, status, latitude, longitude)
|
||||||
|
VALUES (?, ?, ?, ?, ?)"
|
||||||
|
);
|
||||||
|
|
||||||
|
$rows = [
|
||||||
|
['SPBU Sudirman', '64.751.01', '24jam', -0.0260000, 109.3425000],
|
||||||
|
['SPBU Ahmad Yani', '64.751.02', 'tidak', -0.0310000, 109.3218000],
|
||||||
|
['SPBU Sutan Syahrir', '64.751.03', '24jam', -0.0195000, 109.3612000],
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach ($rows as [$name, $number, $status, $latitude, $longitude]) {
|
||||||
|
$seed->bind_param('sssdd', $name, $number, $status, $latitude, $longitude);
|
||||||
|
$seed->execute();
|
||||||
|
$seededSpbu++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
'database' => DB_NAME,
|
||||||
|
'admin_username' => 'admin',
|
||||||
|
'admin_password_source' => getenv('ADMIN_PASSWORD') ? 'ADMIN_PASSWORD env' : 'default',
|
||||||
|
'admin_action' => $adminAction,
|
||||||
|
'seeded_spbu' => $seededSpbu,
|
||||||
|
];
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user