mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-06-05 22:09:38 +02:00
Miglioramento procedura configurazione iniziale
This commit is contained in:
@ -6,8 +6,16 @@ use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
/**
|
||||
* Controller dedicato alla gestione della configurazione di base del gestionale per la piattaforma in utilizzo.
|
||||
*/
|
||||
class ConfigurationController extends Controller
|
||||
{
|
||||
/**
|
||||
* Verifica se la configurazione del gestionale per la piattaforma corrente è stata completata correttamente.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function isConfigured()
|
||||
{
|
||||
try {
|
||||
@ -52,6 +60,11 @@ class ConfigurationController extends Controller
|
||||
return view('config.configuration', $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* Metodo per la gestione della validazione della configurazione indicata.
|
||||
*
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function test(Request $request)
|
||||
{
|
||||
$requirements = $this->checkConnection($request);
|
||||
@ -70,9 +83,37 @@ class ConfigurationController extends Controller
|
||||
$state = 2;
|
||||
}
|
||||
|
||||
return $state;
|
||||
return response()->json(['test' => $state]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Metodo per l'esecuzione della pulizia automatica per la cache della configurazione.
|
||||
*/
|
||||
public function cache(Request $request)
|
||||
{
|
||||
// Refresh della cache sulla configurazione
|
||||
Artisan::call('config:cache');
|
||||
|
||||
return redirect(route('configuration'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Metodo per la gestione del messaggio di errore alla scrittura fisica della configurazione.
|
||||
*/
|
||||
public function write(Request $request)
|
||||
{
|
||||
$params = $request->old();
|
||||
$env = $this->buildEnvFrom($params);
|
||||
|
||||
return view('config.configuration-writing', [
|
||||
'config' => $env,
|
||||
'params' => $params,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Metodo indirizzato al salvataggio della configurazione.
|
||||
*/
|
||||
public function save(Request $request)
|
||||
{
|
||||
// Controllo sullo stato della connessione
|
||||
@ -81,39 +122,19 @@ class ConfigurationController extends Controller
|
||||
return redirect(route('configuration'));
|
||||
}
|
||||
|
||||
// Individuazione parametri aggiuntivi
|
||||
$decimals = $request->input('decimal_separator');
|
||||
$thousands = $request->input('thousand_separator');
|
||||
$decimals = $decimals == 'dot' ? '.' : ',';
|
||||
$thousands = $thousands == 'dot' ? '.' : $thousands;
|
||||
$thousands = $thousands == 'comma' ? ',' : $thousands;
|
||||
$env = $this->buildEnvFrom($request->all());
|
||||
|
||||
// Completamento configurazione
|
||||
$pairs = [
|
||||
'APP_LOCALE' => $request->input('language'),
|
||||
// Scrittura fisica della configurazione
|
||||
$path = base_path('.env');
|
||||
$result = file_put_contents($path, $env);
|
||||
|
||||
'DB_HOST' => $request->input('host'),
|
||||
'DB_USERNAME' => $request->input('username'),
|
||||
'DB_PASSWORD' => $request->input('password'),
|
||||
'DB_DATABASE' => $request->input('database_name'),
|
||||
|
||||
/*
|
||||
'|timestamp|' => post('timestamp_format'),
|
||||
'|date|' => post('date_format'),
|
||||
'|time|' => post('time_format'),
|
||||
'|decimals|' => $decimals,
|
||||
'|thousands|' => $thousands,
|
||||
*/
|
||||
];
|
||||
|
||||
foreach ($pairs as $key => $value) {
|
||||
$this->updateEnv($key, $value);
|
||||
// Redirect in caso di fallimento
|
||||
if ($result === false) {
|
||||
return redirect(route('configuration-write'))
|
||||
->withInput();
|
||||
}
|
||||
|
||||
// Refresh della cache sulla configurazione
|
||||
Artisan::call('config:clear');
|
||||
|
||||
return redirect(route('configuration'));
|
||||
return redirect(route('configuration-cache'));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -184,10 +205,75 @@ class ConfigurationController extends Controller
|
||||
return $requirements;
|
||||
}
|
||||
|
||||
protected function updateEnv($key, $value)
|
||||
/**
|
||||
* Definisce i nuovi contenuti per il file .env sulla base dell'input utente.
|
||||
*
|
||||
* @param array $params
|
||||
*/
|
||||
protected function buildEnvFrom($params): string
|
||||
{
|
||||
$path = base_path('.env');
|
||||
/*
|
||||
// Individuazione parametri aggiuntivi
|
||||
$decimals = $params['decimal_separator'];
|
||||
$thousands = $params['thousand_separator'];
|
||||
$decimals = $decimals == 'dot' ? '.' : ',';
|
||||
$thousands = $thousands == 'dot' ? '.' : $thousands;
|
||||
$thousands = $thousands == 'comma' ? ',' : $thousands;
|
||||
*/
|
||||
|
||||
// Completamento configurazione
|
||||
$pairs = [
|
||||
'APP_LOCALE' => $params['language'],
|
||||
|
||||
'DB_HOST' => $params['host'],
|
||||
'DB_USERNAME' => $params['username'],
|
||||
'DB_PASSWORD' => $params['password'],
|
||||
'DB_DATABASE' => $params['database_name'],
|
||||
|
||||
/*
|
||||
'|timestamp|' => post('timestamp_format'),
|
||||
'|date|' => post('date_format'),
|
||||
'|time|' => post('time_format'),
|
||||
'|decimals|' => $decimals,
|
||||
'|thousands|' => $thousands,
|
||||
*/
|
||||
];
|
||||
|
||||
$env = $this->buildEnv($pairs);
|
||||
|
||||
return $env;
|
||||
}
|
||||
|
||||
/**
|
||||
* Definisce i nuovi contenuti per il file .env sulla base della configurazione indicata.
|
||||
*
|
||||
* @param $config
|
||||
*/
|
||||
protected function buildEnv($config): string
|
||||
{
|
||||
$file = base_path('.env');
|
||||
$content = file_get_contents($file);
|
||||
|
||||
foreach ($config as $key => $value) {
|
||||
$content = str_replace(
|
||||
"$key=".$this->getCurrentEnvValue($key),
|
||||
"$key=".$value,
|
||||
$content
|
||||
);
|
||||
}
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce il valore (fisico) corrente per una chiave del file .env.
|
||||
*
|
||||
* @param $key
|
||||
*
|
||||
* @return mixed|string
|
||||
*/
|
||||
protected function getCurrentEnvValue($key)
|
||||
{
|
||||
if (is_bool(env($key))) {
|
||||
$old = env($key) ? 'true' : 'false';
|
||||
} elseif (env($key) === null) {
|
||||
@ -196,12 +282,6 @@ class ConfigurationController extends Controller
|
||||
$old = env($key);
|
||||
}
|
||||
|
||||
if (file_exists($path)) {
|
||||
file_put_contents($path, str_replace(
|
||||
"$key=".$old,
|
||||
"$key=".$value,
|
||||
file_get_contents($path)
|
||||
));
|
||||
}
|
||||
return $old;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user