65 lines
1.6 KiB
PHP
65 lines
1.6 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace App\Http\Middleware\Installer;
|
||
|
|
||
|
use Closure;
|
||
|
|
||
|
class canUpdate
|
||
|
{
|
||
|
use \App\Helpers\Installer\MigrationsHelper;
|
||
|
|
||
|
/**
|
||
|
* Handle an incoming request.
|
||
|
*
|
||
|
* @param \Illuminate\Http\Request $request
|
||
|
* @param \Closure $next
|
||
|
* @return mixed
|
||
|
*/
|
||
|
public function handle($request, Closure $next)
|
||
|
{
|
||
|
$updateEnabled = filter_var(config('installer.updaterEnabled'), FILTER_VALIDATE_BOOLEAN);
|
||
|
switch ($updateEnabled) {
|
||
|
case true:
|
||
|
$canInstall = new canInstall;
|
||
|
|
||
|
// if the application has not been installed,
|
||
|
// redirect to the installer
|
||
|
if (! $canInstall->alreadyInstalled()) {
|
||
|
return redirect()->route('LaravelInstaller::welcome');
|
||
|
}
|
||
|
|
||
|
if ($this->alreadyUpdated()) {
|
||
|
abort(404);
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case false:
|
||
|
default:
|
||
|
abort(404);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
return $next($request);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* If application is already updated.
|
||
|
*
|
||
|
* @return bool
|
||
|
*/
|
||
|
public function alreadyUpdated()
|
||
|
{
|
||
|
$migrations = $this->getMigrations();
|
||
|
$dbMigrations = $this->getExecutedMigrations();
|
||
|
|
||
|
// If the count of migrations and dbMigrations is equal,
|
||
|
// then the update as already been updated.
|
||
|
if (count($migrations) == count($dbMigrations)) {
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
// Continue, the app needs an update
|
||
|
return false;
|
||
|
}
|
||
|
}
|