*/ public function fetchSessionLogs(Request $request): Collection { /** @var \App\Models\User $user */ $user = Auth::user(); /** @var Collection $sessions */ $sessions = $user->sessions; return $sessions->map(function (Session $session) use ($request): \stdClass { $agent = $this->createAgent($session); /** @var \stdClass $obj */ $obj = (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((int) $session->last_activity)->diffForHumans(), ]; return $obj; })->values(); } protected function createAgent(Session $session): Agent { return tap(new Agent, function (Agent $agent) use ($session): void { $agent->setUserAgent($session->user_agent); }); } }