user(); try { // Select user site if (!$user->selected_site_id) { $site = $user->role->equals(Role::admin()) ? Site::firstOrFail() : $user->sites()->firstOrFail(); $user->selected_site_id = $site->id; $user->saveOrFail(); } if ($request->query('userSite')) { $site = $user->role->equals(Role::admin()) ? Site::whereId($request->query('userSite'))->firstOrFail() : $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->role->equals(Role::admin()) ? Site::whereId($request->query('userSite'))->firstOrFail() : $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); } }