Files
Epicnabbo-Catalogus-Updated…/Updated_Cms/app/Services/User/SessionService.php
T
2026-01-07 19:35:41 +01:00

39 lines
1.1 KiB
PHP

<?php
namespace App\Services\User;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Auth;
use Jenssegers\Agent\Agent;
class SessionService
{
public function fetchSessionLogs(Request $request): Collection
{
return collect(
Auth::user()->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);
});
}
}