49 lines
1.2 KiB
PHP
49 lines
1.2 KiB
PHP
<?php
|
|
$dbPath = __DIR__ . '/../dev_panel.db';
|
|
|
|
function getDb() {
|
|
static $pdo = null;
|
|
global $dbPath;
|
|
|
|
if ($pdo === null) {
|
|
$pdo = new PDO('sqlite:' . $dbPath);
|
|
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
|
}
|
|
|
|
return $pdo;
|
|
}
|
|
|
|
function initDb() {
|
|
$db = getDb();
|
|
$db->exec('
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
username TEXT NOT NULL UNIQUE,
|
|
password_hash TEXT NOT NULL,
|
|
role TEXT NOT NULL CHECK (role IN ("admin","dev"))
|
|
);
|
|
');
|
|
|
|
$db->exec('
|
|
CREATE TABLE IF NOT EXISTS sites (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
domain TEXT NOT NULL UNIQUE,
|
|
owner_id INTEGER,
|
|
created_at TEXT NOT NULL,
|
|
FOREIGN KEY (owner_id) REFERENCES users(id) ON DELETE SET NULL
|
|
);
|
|
');
|
|
|
|
// Seed initial admin if no users exist
|
|
$count = (int) $db->query('SELECT COUNT(*) FROM users')->fetchColumn();
|
|
if ($count === 0) {
|
|
$hash = password_hash('change-me', PASSWORD_DEFAULT);
|
|
$stmt = $db->prepare('INSERT INTO users (username, password_hash, role) VALUES (?, ?, ?)');
|
|
$stmt->execute(['admin', $hash, 'admin']);
|
|
return ['adminCreated' => true, 'username' => 'admin', 'password' => 'change-me'];
|
|
}
|
|
|
|
return ['adminCreated' => false];
|
|
}
|
|
|