ldc-portsalaries/app/Http/Middleware/UserSite.php
2021-06-07 18:28:25 +02:00

47 lines
1.4 KiB
PHP

<?php
namespace App\Http\Middleware;
use App\Models\Site;
use Closure;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Support\Facades\Session;
class UserSite
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
/** @var \App\Models\User */
$user = auth()->user();
try {
if (!$user->selected_site_id) {
$site = $user->sites()->firstOrFail();
$user->selected_site_id = $site->id;
$user->saveOrFail();
}
if ($request->query('userSite')) {
$site = $user->sites()
->where('site_id', $request->query('userSite'))
->firstOrFail();
$user->selected_site_id = $site->id;
$user->saveOrFail();
} elseif (!Site::where('id', $user->selected_site_id)->exists()) {
$site = $user->sites()
->where('site_id', $request->query('userSite'))
->firstOrFail();
$user->selected_site_id = $site->id;
$user->saveOrFail();
}
} catch (ModelNotFoundException $e) {
abort(400, 'Vous n\'avez pas de site administrable');
}
return $next($request);
}
}