You've already forked Epicnabbo-Catalogus-Updated-Daily
40 lines
1.1 KiB
PHP
40 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Services\User;
|
|
|
|
use Carbon\Carbon;
|
|
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' => Carbon::createFromTimestamp($session->last_activity)->diffForHumans(),
|
|
];
|
|
});
|
|
}
|
|
|
|
protected function createAgent($session): Agent
|
|
{
|
|
return tap(new Agent, function ($agent) use ($session) {
|
|
$agent->setUserAgent($session->user_agent);
|
|
});
|
|
}
|
|
}
|