first commit
This commit is contained in:
79
install.php
Normal file
79
install.php
Normal file
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* BackPRO - Installation script
|
||||
* Run this once after deploying to set up the database and create admin user.
|
||||
* DELETE THIS FILE after installation!
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
require_once __DIR__ . '/vendor/autoload.php';
|
||||
|
||||
\App\Core\Config::load(__DIR__);
|
||||
|
||||
echo "=== BackPRO Installer ===\n\n";
|
||||
|
||||
// Check if running from CLI or web
|
||||
$isCli = php_sapi_name() === 'cli';
|
||||
$nl = $isCli ? "\n" : "<br>";
|
||||
|
||||
try {
|
||||
$db = \App\Core\Database::getInstance();
|
||||
echo "Połączenie z bazą danych: OK{$nl}";
|
||||
} catch (\Exception $e) {
|
||||
echo "BŁĄD połączenia z bazą: " . $e->getMessage() . $nl;
|
||||
echo "Sprawdź konfigurację w pliku .env{$nl}";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// Run all migrations in order
|
||||
$migrationFiles = glob(__DIR__ . '/migrations/*.sql');
|
||||
sort($migrationFiles);
|
||||
|
||||
foreach ($migrationFiles as $migrationFile) {
|
||||
$migrationName = basename($migrationFile);
|
||||
$sql = file_get_contents($migrationFile);
|
||||
|
||||
$sqlClean = preg_replace('/--.*$/m', '', $sql);
|
||||
$statements = array_filter(
|
||||
array_map('trim', explode(';', $sqlClean)),
|
||||
fn($s) => !empty($s)
|
||||
);
|
||||
|
||||
foreach ($statements as $statement) {
|
||||
try {
|
||||
$db->exec($statement);
|
||||
} catch (\PDOException $e) {
|
||||
if (!str_contains($e->getMessage(), 'already exists') && !str_contains($e->getMessage(), 'Duplicate')) {
|
||||
echo "SQL Warning ({$migrationName}): " . $e->getMessage() . $nl;
|
||||
}
|
||||
}
|
||||
}
|
||||
echo "Migracja {$migrationName}: OK{$nl}";
|
||||
}
|
||||
|
||||
// Create admin user
|
||||
$username = 'admin';
|
||||
$password = 'admin123'; // Change this!
|
||||
|
||||
$hash = password_hash($password, PASSWORD_BCRYPT);
|
||||
|
||||
try {
|
||||
$stmt = $db->prepare("SELECT id FROM users WHERE username = :u");
|
||||
$stmt->execute(['u' => $username]);
|
||||
|
||||
if ($stmt->fetch()) {
|
||||
echo "Użytkownik '{$username}' już istnieje.{$nl}";
|
||||
} else {
|
||||
$stmt = $db->prepare("INSERT INTO users (username, password_hash) VALUES (:u, :p)");
|
||||
$stmt->execute(['u' => $username, 'p' => $hash]);
|
||||
echo "Utworzono użytkownika: {$username} / {$password}{$nl}";
|
||||
echo "WAŻNE: Zmień hasło po pierwszym logowaniu!{$nl}";
|
||||
}
|
||||
} catch (\PDOException $e) {
|
||||
echo "Błąd tworzenia użytkownika: " . $e->getMessage() . $nl;
|
||||
}
|
||||
|
||||
echo "{$nl}=== Instalacja zakończona ==={$nl}";
|
||||
echo "USUŃ PLIK install.php po zakończeniu instalacji!{$nl}";
|
||||
Reference in New Issue
Block a user