feature: Initial commit

This commit is contained in:
dev
2026-01-01 19:20:06 +00:00
commit ae491f1720
8 changed files with 1503 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
<?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];
}