sessions, )->map(function ($session) use ($request) { $agent = $this->createAgent($session); return (object) [ 'agent' => [ 'is_desktop' => $agent->isDesktop(), 'platform' => $agent->platform(), 'browser' => $agent->browser(), ], 'ip_address' => $session->ip_address, 'is_current_device' => $session->id === $request->session()->getId(), 'last_active' => \Illuminate\Support\Facades\Date::createFromTimestamp($session->last_activity)->diffForHumans(), ]; }); } protected function createAgent($session): Agent { return tap(new Agent, function ($agent) use ($session): void { $agent->setUserAgent($session->user_agent); }); } }