Files
WebGIS-Project/webgis-v3/config/database.php
T

57 lines
2.1 KiB
PHP

<?php
define('DB_HOST', getenv('DB_HOST') ?: '127.0.0.1');
define('DB_NAME', getenv('WEBGIS_V3_DB_NAME') ?: 'webgis_kemiskinan');
define('DB_USER', getenv('DB_USER') ?: 'root');
define('DB_PASS', getenv('DB_PASSWORD') !== false ? getenv('DB_PASSWORD') : '');
define('DB_CHAR', getenv('DB_CHAR') ?: 'utf8mb4');
function getDB(): PDO {
static $pdo = null;
if ($pdo === null) {
$dsn = "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHAR;
$pdo = new PDO($dsn, DB_USER, DB_PASS, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
]);
ensureDefaultUsers($pdo);
}
return $pdo;
}
function ensureDefaultUsers(PDO $pdo): void {
$stmt = $pdo->query("SHOW TABLES LIKE 'user'");
if (!$stmt->fetch()) return;
$users = [
['admin', 1, 'Administrator Sistem', 'admin@webgis-ptk.id'],
['pengurus_jami', 2, 'Ahmad Fauzi (Masjid Jami)', 'fauzi@webgis-ptk.id'],
['pengurus_ktdr', 2, 'Romo Benediktus (Katedral)', 'romo@webgis-ptk.id'],
['pimpinan', 3, 'Camat Pontianak Kota', 'camat@webgis-ptk.id'],
['warga1', 4, 'Budi Santoso', 'budi@gmail.com'],
];
$select = $pdo->prepare("SELECT password_hash FROM user WHERE username = ? LIMIT 1");
$insert = $pdo->prepare(
"INSERT INTO user (id_role, username, password_hash, nama_lengkap, email, aktif)
VALUES (?, ?, ?, ?, ?, 1)"
);
$update = $pdo->prepare(
"UPDATE user
SET id_role = ?, password_hash = ?, nama_lengkap = ?, email = ?, aktif = 1
WHERE username = ?"
);
foreach ($users as [$username, $roleId, $name, $email]) {
$select->execute([$username]);
$row = $select->fetch();
$hash = password_hash('admin123', PASSWORD_BCRYPT);
if (!$row) {
$insert->execute([$roleId, $username, $hash, $name, $email]);
} elseif (!password_verify('admin123', $row['password_hash'])) {
$update->execute([$roleId, $hash, $name, $email, $username]);
}
}
}