. * * @package LibreNMS * @link http://librenms.org * @copyright 2018 Tony Murray * @author Tony Murray */ namespace App\Http\Middleware; use Closure; use Illuminate\Auth\Access\AuthorizationException; use LibreNMS\Util\EnvHelper; class CheckInstalled { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { config(['app.debug' => true]); $installed = !config('librenms.install') && file_exists(base_path('.env')); $is_install_route = $request->is('install*'); // further middleware will fail without an app key, init one if (empty(config('app.key'))) { config(['app.key' => EnvHelper::init()]); } if (!$installed && !$is_install_route) { // redirect to install if not installed return redirect()->route('install'); } elseif ($installed && $is_install_route) { // in case someone refreshes on the finish step if ($request->routeIs('install.finish')) { return redirect()->route('home'); } throw new AuthorizationException('This should only be called during install'); } return $next($request); } }