Compare commits

...

2 Commits

Author SHA1 Message Date
Dasc3er c50a381626 Aggiunto redirect in caso di public raggiungibile 2021-08-06 13:04:53 +02:00
Dasc3er d9ac17d1b2 Miglioramento procedura di configurazione 2021-08-06 12:24:47 +02:00
12 changed files with 68 additions and 53 deletions

4
.htaccess Normal file
View File

@ -0,0 +1,4 @@
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^.+$ index.php [L]
</IfModule>

View File

@ -91,10 +91,13 @@ class ConfigurationController extends Controller
*/ */
public function cache(Request $request) public function cache(Request $request)
{ {
$route = route('config.index');
// Refresh della cache sulla configurazione // Refresh della cache sulla configurazione
Artisan::call('cache:clear');
Artisan::call('config:cache'); Artisan::call('config:cache');
return redirect(route('configuration')); return redirect($route);
} }
/** /**
@ -119,7 +122,7 @@ class ConfigurationController extends Controller
// Controllo sullo stato della connessione // Controllo sullo stato della connessione
$result = $this->checkConnection($request); $result = $this->checkConnection($request);
if ($result === null) { if ($result === null) {
return redirect(route('configuration')); return redirect(route('config.index'));
} }
$env = $this->buildEnvFrom($request->all()); $env = $this->buildEnvFrom($request->all());
@ -130,11 +133,11 @@ class ConfigurationController extends Controller
// Redirect in caso di fallimento // Redirect in caso di fallimento
if ($result === false) { if ($result === false) {
return redirect(route('configuration-write')) return redirect(route('config.write'))
->withInput(); ->withInput();
} }
return redirect(route('configuration-cache')); return redirect(route('config.cache'));
} }
/** /**
@ -255,33 +258,13 @@ class ConfigurationController extends Controller
$content = file_get_contents($file); $content = file_get_contents($file);
foreach ($config as $key => $value) { foreach ($config as $key => $value) {
$content = str_replace( $content = preg_replace(
"$key=".$this->getCurrentEnvValue($key), '/'.preg_quote($key."=")."(.*)/",
"$key=".$value, $key."=".$value,
$content $content
); );
} }
return $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) {
$old = 'null';
} else {
$old = env($key);
}
return $old;
}
} }

View File

@ -85,7 +85,7 @@ class EnsureConfiguration
// Redirect nel caso in cui i requisiti siano soddisfatti // Redirect nel caso in cui i requisiti siano soddisfatti
if (in_array($route->getName(), $configuration_paths)) { if (in_array($route->getName(), $configuration_paths)) {
$this->setRedirect(route('configuration')); $this->setRedirect(route('config.index'));
} }
} else { } else {
// Redirect per requisiti incompleti // Redirect per requisiti incompleti
@ -112,20 +112,22 @@ class EnsureConfiguration
return true; return true;
} }
$configuration_paths = ['configuration', 'configuration-save', 'configuration-write', 'configuration-test'];
$configuration_completed = ConfigurationController::isConfigured(); $configuration_completed = ConfigurationController::isConfigured();
$parts = explode('.', $route->getName());
$is_configuration_path = $parts[0] == 'config';
if ($configuration_completed) { if ($configuration_completed) {
Cache::put('configurazione_completata', true); Cache::put('configurazione_completata', true);
// Redirect nel caso in cui la configurazione sia correttamente funzionante // Redirect nel caso in cui la configurazione sia correttamente funzionante
if (in_array($route->getName(), $configuration_paths)) { if ($is_configuration_path) {
$this->setRedirect(route('update')); $this->setRedirect(route('update'));
} }
} else { } else {
// Redirect per configurazione mancante // Redirect per configurazione mancante
if (!in_array($route->getName(), $configuration_paths)) { if (!$is_configuration_path) {
$this->setRedirect(route('configuration')); $this->setRedirect(route('config.index'));
} }
} }

View File

@ -26,6 +26,8 @@ class EnsureEnvFile
// Generazione automatica delle key Laravel // Generazione automatica delle key Laravel
Artisan::call('key:generate'); Artisan::call('key:generate');
Artisan::call('cache:clear');
Artisan::call('config:cache');
header('Refresh: 0;'); header('Refresh: 0;');
return response('Missing app key'); return response('Missing app key');

View File

@ -19,6 +19,7 @@ class Language
$locale = env('APP_LOCALE', 'it_IT'); $locale = env('APP_LOCALE', 'it_IT');
$manager->setLocale($locale); $manager->setLocale($locale);
app()->setLocale($locale);
return $next($request); return $next($request);
} }

24
index.php Normal file
View File

@ -0,0 +1,24 @@
<?php
$base_dir = __DIR__;
// Individuazione di $prefix
$script = $_SERVER['REQUEST_URI'];
$needle = '/'.basename($base_dir).'/';
$pos = strrpos($script, $needle);
if ($pos !== false) {
$prefix = substr($script, 0, $pos).$needle;
$suffix = substr($script, $pos + strlen($needle));
} else {
$prefix = '/';
$suffix = '';
}
$prefix = rtrim($prefix, '/');
$prefix = str_replace('%2F', '/', rawurlencode($prefix));
$suffix = str_replace('%2F', '/', rawurlencode($suffix));
$url = 'http://'.$_SERVER['HTTP_HOST'].$prefix.'/public/'.$suffix;
$url = str_replace('index.php', '', $url);
header('Location: '.$url);
exit();

2
legacy

@ -1 +1 @@
Subproject commit 39a79aea88f220f4d49c349df176b1ef310005f8 Subproject commit af0668f0c2e9751c36430e1b7595a1d32058ef64

View File

@ -9,7 +9,7 @@
@section('content') @section('content')
<p>{!! tr('Sembra che non ci siano i permessi di scrittura sul file _FILE_', ['_FILE_' => '<b>.env</b>']) !!}. {{ tr('Per completare la configurazione del gestionale, è necessario inserire provare nuovamente attraverso il pulsante "Riprova" oppure inserire manualmente il contenuto sottostante nel file indicato') }}.</p> <p>{!! tr('Sembra che non ci siano i permessi di scrittura sul file _FILE_', ['_FILE_' => '<b>.env</b>']) !!}. {{ tr('Per completare la configurazione del gestionale, è necessario inserire provare nuovamente attraverso il pulsante "Riprova" oppure inserire manualmente il contenuto sottostante nel file indicato') }}.</p>
<form action="{{ route('configuration-save') }}" method="post"> <form action="{{ route('config.save') }}" method="post">
@foreach($params as $key => $value) @foreach($params as $key => $value)
<input type="hidden" name="{{ $key }}" value="{{ $value }}"> <input type="hidden" name="{{ $key }}" value="{{ $value }}">
@endforeach @endforeach
@ -39,7 +39,7 @@
<p>{!! tr('Inserire il seguente testo nel file _FILE_', ['_FILE_' => '<b>.env</b>']) !!}.</p> <p>{!! tr('Inserire il seguente testo nel file _FILE_', ['_FILE_' => '<b>.env</b>']) !!}.</p>
<p><strong>{{ tr('Attenzione!') }}</strong> {!! tr('A seguito del completamento manuale della configurazione, è necessario utilizzare il pulsante dedicato "Completa inserimento" oppure eseguire da riga di comando _CMD_', ['_CMD_' => "<kbd>php artisan config:cache</kbd>"]) !!}.</p> <p><strong>{{ tr('Attenzione!') }}</strong> {!! tr('A seguito del completamento manuale della configurazione, è necessario utilizzare il pulsante dedicato "Completa inserimento" oppure eseguire da riga di comando _CMD_', ['_CMD_' => "<kbd>php artisan config:cache</kbd>"]) !!}.</p>
<a class="btn btn-success" href="{{ route('configuration-cache') }}"> <a class="btn btn-success" href="{{ route('config.cache') }}">
<i class="fa fa-download"></i> {{ tr('Completa inserimento') }} <i class="fa fa-download"></i> {{ tr('Completa inserimento') }}
</a> </a>

View File

@ -5,10 +5,10 @@
@section('body') @section('body')
<div class="container pb-5"> <div class="container pb-5">
<form action="{{ route('configuration-save') }}" method="post" id="config-form"> <form action="{{ route('config.save') }}" method="post" id="config-form">
@csrf @csrf
<div class="py-5 text-center"> <div class="py-5 text-center" style="margin-top: 40px">
<img class="d-block mx-auto mb-4" src="{{ url('/') }}/assets/img/full_logo.png" alt="{{ tr('Logo OpenSTAManager') }}"> <img class="d-block mx-auto mb-4" src="{{ url('/') }}/assets/img/full_logo.png" alt="{{ tr('Logo OpenSTAManager') }}">
<h2>{!! tr('Benvenuto in _NAME_!', ['_NAME_' => '<strong>'.tr('OpenSTAManager').'</strong>']) !!}</h2> <h2>{!! tr('Benvenuto in _NAME_!', ['_NAME_' => '<strong>'.tr('OpenSTAManager').'</strong>']) !!}</h2>
<p class="lead">{!! tr('Puoi procedere alla configurazione tecnica del software attraverso i parametri seguenti, che potranno essere corretti secondo necessità tramite il file _FILE_', ['_FILE_' => '<i>.env</i>']) !!}. </p> <p class="lead">{!! tr('Puoi procedere alla configurazione tecnica del software attraverso i parametri seguenti, che potranno essere corretti secondo necessità tramite il file _FILE_', ['_FILE_' => '<i>.env</i>']) !!}. </p>
@ -118,7 +118,7 @@
@section('js') @section('js')
<script> <script>
globals.configuration = { globals.configuration = {
test_url: "{{ route('configuration-test') }}", test_url: "{{ route('config.test') }}",
translations: { translations: {
error: "{{ tr('Errore della configurazione') }}", error: "{{ tr('Errore della configurazione') }}",
errorMessage: "{{ tr('La configurazione non è corretta') }}.", errorMessage: "{{ tr('La configurazione non è corretta') }}.",

View File

@ -5,7 +5,7 @@
@section('body') @section('body')
<div class="container pb-5"> <div class="container pb-5">
<div class="py-5 text-center"> <div class="py-5 text-center" style="margin-top: 40px">
<img class="d-block mx-auto mb-4" src="{{ url('/') }}/assets/img/full_logo.png" alt="{{ tr('Logo OpenSTAManager') }}"> <img class="d-block mx-auto mb-4" src="{{ url('/') }}/assets/img/full_logo.png" alt="{{ tr('Logo OpenSTAManager') }}">
<h2>{!! tr('Inizializzazione di _NAME_!', ['_NAME_' => '<strong>'.tr('OpenSTAManager').'</strong>']) !!}</h2> <h2>{!! tr('Inizializzazione di _NAME_!', ['_NAME_' => '<strong>'.tr('OpenSTAManager').'</strong>']) !!}</h2>
<p class="lead">{{ tr("Completa la configurazione del gestionale inserendo le ultime informazioni di base") }}. </p> <p class="lead">{{ tr("Completa la configurazione del gestionale inserendo le ultime informazioni di base") }}. </p>

View File

@ -5,6 +5,6 @@
@section('error_color', 'info') @section('error_color', 'info')
@section('error_header', '503') @section('error_header', '503')
@section('error_message', tr('Servizio non disponibile!')) @section('error_message', tr('Servizio non disponibile'))
@section('error_info', tr("E' in corso un processo di manutenzione dell'applicazione")) @section('error_info', tr("E' in corso un processo di manutenzione dell'applicazione"))
@section('error_return', tr("Torneremo attivi il più presto possibile")) @section('error_return', tr("Torneremo attivi il più presto possibile"))

View File

@ -39,23 +39,22 @@ Route::get('/requirements', [RequirementsController::class, 'index'])
->name('requirements'); ->name('requirements');
// Sezione di configurazione // Sezione di configurazione
Route::prefix('config') Route::group(['as' => 'config.', 'prefix' => 'config'], function () {
->group(function () { Route::get('/', [ConfigurationController::class, 'index'])
Route::get('/', [ConfigurationController::class, 'index']) ->name('index');
->name('configuration');
Route::get('/test', [ConfigurationController::class, 'test']) Route::get('/test', [ConfigurationController::class, 'test'])
->name('configuration-test'); ->name('test');
Route::get('/cache', [ConfigurationController::class, 'cache']) Route::get('/cache', [ConfigurationController::class, 'cache'])
->name('configuration-cache'); ->name('cache');
Route::get('/write', [ConfigurationController::class, 'write']) Route::get('/write', [ConfigurationController::class, 'write'])
->name('configuration-write'); ->name('write');
Route::post('/save', [ConfigurationController::class, 'save']) Route::post('/save', [ConfigurationController::class, 'save'])
->name('configuration-save'); ->name('save');
}); });
// Installazione aggiornamenti del gestionale // Installazione aggiornamenti del gestionale
Route::get('/update', [UpdateController::class, 'index']) Route::get('/update', [UpdateController::class, 'index'])