final 1.2
This commit is contained in:
+13
-50
@@ -131,17 +131,11 @@ function createAdminUser(
|
||||
|
||||
$userId = $pdo->lastInsertId();
|
||||
|
||||
// Assegna ruolo Spatie 'admin' (lookup dinamico per nome)
|
||||
$stmt = $pdo->prepare("SELECT id FROM roles WHERE name = 'admin' LIMIT 1");
|
||||
$stmt->execute();
|
||||
$adminRoleId = (int) $stmt->fetchColumn();
|
||||
if ($adminRoleId === 0) {
|
||||
throw new \Exception('Ruolo Spatie admin non trovato');
|
||||
}
|
||||
// Assegna ruolo Spatie 'admin' (role_id = 1)
|
||||
$stmt = $pdo->prepare(
|
||||
"INSERT INTO model_has_roles (role_id, model_type, model_id) VALUES (?, ?, ?)"
|
||||
"INSERT INTO model_has_roles (role_id, model_type, model_id) VALUES (1, ?, ?)"
|
||||
);
|
||||
$stmt->execute([$adminRoleId, 'App\\Models\\User', $userId]);
|
||||
$stmt->execute(['App\\Models\\User', $userId]);
|
||||
|
||||
return true;
|
||||
} catch (\PDOException $e) {
|
||||
@@ -185,10 +179,6 @@ $appName = askRequired('Nome del sito/app (es. Glastree MyChurch)');
|
||||
$adminName = askRequired('Nome del primo utente amministratore');
|
||||
$adminEmail = askRequired('Email dell\'amministratore');
|
||||
$adminPass = askRequired('Password per l\'amministratore');
|
||||
$adminPass2 = askRequired('Conferma password amministratore');
|
||||
if ($adminPass !== $adminPass2) {
|
||||
fail('Le password non corrispondono');
|
||||
}
|
||||
$appUrl = askRequired('URL pubblico del sito (es. https://glastree.esempio.it)');
|
||||
|
||||
// ── DB params (Apache / Restore) ─────────────────────
|
||||
@@ -274,9 +264,7 @@ if ($mode === 'Fresh Install su Apache (LAMP tradizionale)') {
|
||||
}
|
||||
|
||||
// APP_KEY
|
||||
if (!run("{$sudo}php artisan key:generate --force", 'Generazione APP_KEY...')) {
|
||||
fail('Generazione APP_KEY fallita');
|
||||
}
|
||||
runCapture("{$sudo}php artisan key:generate --force");
|
||||
ok('APP_KEY generata');
|
||||
|
||||
// Config
|
||||
@@ -385,9 +373,7 @@ if ($mode === 'Fresh Install su Apache (LAMP tradizionale)') {
|
||||
println(color(' 3/7 — INSTALLAZIONE DIPENDENZE', 'yellow'));
|
||||
println(color('══════════════════════════════════════════', 'yellow'));
|
||||
|
||||
if (!run("COMPOSER_ROOT_VERSION=dev-main composer install --no-dev --optimize-autoloader", 'Installazione dipendenze Composer...')) {
|
||||
fail('Installazione dipendenze Composer fallita');
|
||||
}
|
||||
run("COMPOSER_ROOT_VERSION=dev-main composer install --no-dev --optimize-autoloader", 'Installazione dipendenze Composer...');
|
||||
ok('Dipendenze PHP installate');
|
||||
|
||||
// ── Step 4: Package discovery ────────────────────
|
||||
@@ -411,7 +397,7 @@ if ($mode === 'Fresh Install su Apache (LAMP tradizionale)') {
|
||||
}
|
||||
|
||||
if ($dbType === 'mysql') {
|
||||
$importCmd = "MYSQL_PWD=" . escapeshellarg($dbPass) . " mysql -h {$dbHost} -P {$dbPort} -u {$dbUser} {$dbName} < {$sqlFile}";
|
||||
$importCmd = "mysql -h {$dbHost} -P {$dbPort} -u {$dbUser} -p{$dbPass} {$dbName} < {$sqlFile}";
|
||||
if (!run($importCmd, 'Importazione struttura database e dati base...')) {
|
||||
fail("Importazione SQL fallita. Verifica il file database/install.sql e le credenziali.");
|
||||
}
|
||||
@@ -516,12 +502,6 @@ if ($mode === 'Fresh Install via Docker') {
|
||||
println(color('══════════════════════════════════════════', 'yellow'));
|
||||
|
||||
checkCmd('docker');
|
||||
$dockerComposeCmd = 'docker compose';
|
||||
if (trim(shell_exec('command -v docker-compose 2>/dev/null') ?: '') !== '') {
|
||||
$dockerComposeCmd = 'docker-compose';
|
||||
} elseif (trim(shell_exec('command -v docker 2>/dev/null && docker compose version 2>/dev/null') ?: '') === '') {
|
||||
fail('Docker Compose (v1 o v2) non trovato.');
|
||||
}
|
||||
|
||||
println();
|
||||
println(color('══════════════════════════════════════════', 'yellow'));
|
||||
@@ -538,13 +518,10 @@ if ($mode === 'Fresh Install via Docker') {
|
||||
println(color(' INSTALLAZIONE DOCKER', 'yellow'));
|
||||
println(color('══════════════════════════════════════════', 'yellow'));
|
||||
|
||||
if (!run("{$dockerComposeCmd} -f {$composeFile} build", 'Build immagine Docker...')) {
|
||||
if (!run("docker compose -f {$composeFile} build", 'Build immagine Docker...')) {
|
||||
fail('Build fallita');
|
||||
}
|
||||
|
||||
// Genera APP_KEY per il container Docker
|
||||
$appKey = 'base64:' . base64_encode(random_bytes(32));
|
||||
|
||||
// Override compose con variabili d'ambiente
|
||||
$override = [
|
||||
'services:',
|
||||
@@ -554,12 +531,11 @@ if ($mode === 'Fresh Install via Docker') {
|
||||
" - APP_URL={$appUrl}",
|
||||
' - APP_ENV=production',
|
||||
' - APP_DEBUG=false',
|
||||
" - APP_KEY={$appKey}",
|
||||
];
|
||||
file_put_contents('docker-compose.override.yml', implode(PHP_EOL, $override) . PHP_EOL);
|
||||
|
||||
if (!run(
|
||||
"{$dockerComposeCmd} -f {$composeFile} -f docker-compose.override.yml up -d",
|
||||
"docker compose -f {$composeFile} -f docker-compose.override.yml up -d",
|
||||
'Avvio container...'
|
||||
)) {
|
||||
@unlink('docker-compose.override.yml');
|
||||
@@ -568,7 +544,7 @@ if ($mode === 'Fresh Install via Docker') {
|
||||
|
||||
// Attendi container pronto
|
||||
info('Attendo che il container sia pronto...');
|
||||
$containerId = runCapture("{$dockerComposeCmd} -f {$composeFile} ps -q glastree 2>/dev/null");
|
||||
$containerId = runCapture("docker compose -f {$composeFile} ps -q glastree 2>/dev/null");
|
||||
$adminCreated = false;
|
||||
|
||||
if ($containerId !== '') {
|
||||
@@ -584,11 +560,6 @@ if ($mode === 'Fresh Install via Docker') {
|
||||
sleep(2);
|
||||
}
|
||||
|
||||
if ($status !== 'running') {
|
||||
@unlink('docker-compose.override.yml');
|
||||
fail("Container non pronto dopo 60 secondi (stato: {$status}). Controlla i log con: {$dockerComposeCmd} -f {$composeFile} logs");
|
||||
}
|
||||
|
||||
// Import schema SQL nel container
|
||||
$sqlFile = $scriptDir . '/database/install.sql';
|
||||
if (file_exists($sqlFile) && $dockerDb === 'mysql') {
|
||||
@@ -634,11 +605,7 @@ if ($mode === 'Fresh Install via Docker') {
|
||||
\$pdo->prepare("DELETE FROM users WHERE email = ?")->execute([{$emailExp}]);
|
||||
\$pdo->prepare("INSERT INTO users (name, email, password, is_admin, status, permissions, role_preset_id, created_at, updated_at) VALUES (?, ?, ?, 1, 'active', ?, 1, NOW(), NOW())")->execute([{$nameExp}, {$emailExp}, {$hashExp}, '{$perm}']);
|
||||
\$uid = \$pdo->lastInsertId();
|
||||
\$stmt = \$pdo->prepare("SELECT id FROM roles WHERE name = 'admin' LIMIT 1");
|
||||
\$stmt->execute();
|
||||
\$adminRoleId = (int) \$stmt->fetchColumn();
|
||||
if (\$adminRoleId === 0) { echo 'ERR:admin_role_not_found'; exit(1); }
|
||||
\$pdo->prepare("INSERT INTO model_has_roles (role_id, model_type, model_id) VALUES (?, ?, ?)")->execute([\$adminRoleId, 'App\\\\Models\\\\User', \$uid]);
|
||||
\$pdo->prepare("INSERT INTO model_has_roles (role_id, model_type, model_id) VALUES (1, ?, ?)")->execute(['App\\\\Models\\\\User', \$uid]);
|
||||
echo "OK:" . \$uid;
|
||||
PHP;
|
||||
file_put_contents($adminScriptPath, $adminPhp);
|
||||
@@ -768,9 +735,7 @@ if ($mode === 'Restore da Backup (Apache)') {
|
||||
file_put_contents('.env', $dotenv);
|
||||
|
||||
// Generate APP_KEY
|
||||
if (!run("{$sudo}php artisan key:generate --force", 'Generazione APP_KEY...')) {
|
||||
fail('Generazione APP_KEY fallita');
|
||||
}
|
||||
runCapture("{$sudo}php artisan key:generate --force");
|
||||
ok('APP_KEY rigenerata');
|
||||
|
||||
// Import database
|
||||
@@ -778,7 +743,7 @@ if ($mode === 'Restore da Backup (Apache)') {
|
||||
$sqlFile = "{$tmpDir}/database.sql";
|
||||
if (file_exists($sqlFile)) {
|
||||
info("Importazione database MySQL: {$sqlFile}");
|
||||
$cmd = "MYSQL_PWD=" . escapeshellarg($dbPass) . " mysql -h {$dbHost} -P {$dbPort} -u {$dbUser} {$dbName} < {$sqlFile}";
|
||||
$cmd = "mysql -h {$dbHost} -P {$dbPort} -u {$dbUser} -p{$dbPass} {$dbName} < {$sqlFile}";
|
||||
if (run($cmd, null)) {
|
||||
ok('Database importato');
|
||||
} else {
|
||||
@@ -800,9 +765,7 @@ if ($mode === 'Restore da Backup (Apache)') {
|
||||
}
|
||||
|
||||
// Composer
|
||||
if (!run("COMPOSER_ROOT_VERSION=dev-main composer install --no-dev --optimize-autoloader", 'Installazione dipendenze Composer...')) {
|
||||
fail('Installazione dipendenze Composer fallita');
|
||||
}
|
||||
run("COMPOSER_ROOT_VERSION=dev-main composer install --no-dev --optimize-autoloader", 'Installazione dipendenze Composer...');
|
||||
runCapture("{$sudo}php artisan package:discover --ansi 2>/dev/null");
|
||||
|
||||
// Storage link + cache
|
||||
|
||||
Reference in New Issue
Block a user