check() || ! auth()->payload()->get('impersonating')) { return $next($request); } } catch (JWTException $e) { return $next($request); } // Check that route is allowed $routeName = $request->route()->getName(); if (! in_array($routeName, self::ALLOWED_ROUTES)) { return response([ 'message' => 'Unauthorized when impersonating', 'route' => $routeName, 'impersonator' => auth()->payload()->get('impersonator_id'), 'impersonated_account' => auth()->id(), 'url' => $request->fullUrl(), 'payload' => $request->all(), ], 403); } elseif (in_array($routeName, self::LOG_ROUTES)) { \Log::warning(self::ADMIN_LOG_PREFIX.'Impersonator action', [ 'route' => $routeName, 'url' => $request->fullUrl(), 'impersonated_account' => auth()->id(), 'impersonator' => auth()->payload()->get('impersonator_id'), 'payload' => $request->all(), ]); } return $next($request); } }