<?php namespace App\Http\Middleware; use Illuminate\Support\Facades\Schema; use Closure; use Config; use View; use App\Models\Site; /** * Class SetSite * This class is responsible for setting our site settings based on the URL of a request * * @package App\Http\Middleware */ class SetSite { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { // @todo Figure out how to know if this is an API call - and deny it if it's not in the database. $so = new Site; if ($so->getTable() AND Schema::hasTable($so->getTable())) { $so = Site::where('url',$request->root()) ->first(); } // If we dont exist, we'll return a fake model. if (! $so or ! $so->exists) { $so = (new Site)->sample(); } // Set who we are in SETUP. Config::set('SITE_SETUP',$so); View::share('so',$so); return $next($request); } }