✨feature: Initial commit
This commit is contained in:
48
dev-panel.vincentdevelopment.ca/htdocs/includes/db.php
Normal file
48
dev-panel.vincentdevelopment.ca/htdocs/includes/db.php
Normal 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];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user