Initial commit
This commit is contained in:
64
app/Http/Controllers/PresenceController.php
Normal file
64
app/Http/Controllers/PresenceController.php
Normal file
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
|
||||
// 2. Presence Controller for AJAX calls
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Services\PresenceService;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class PresenceController extends Controller
|
||||
{
|
||||
protected $presenceService;
|
||||
|
||||
public function __construct(PresenceService $presenceService)
|
||||
{
|
||||
$this->presenceService = $presenceService;
|
||||
}
|
||||
|
||||
public function heartbeat(Request $request)
|
||||
{
|
||||
$guard = $request->get('guard', 'web');
|
||||
|
||||
if (auth($guard)->check()) {
|
||||
$this->presenceService->updatePresence(auth($guard)->user(), $guard);
|
||||
|
||||
return response()->json([
|
||||
'status' => 'online',
|
||||
'timestamp' => now(),
|
||||
'user_id' => auth($guard)->id()
|
||||
]);
|
||||
}
|
||||
|
||||
return response()->json(['status' => 'unauthorized'], 401);
|
||||
}
|
||||
|
||||
public function setOffline(Request $request)
|
||||
{
|
||||
$guard = $request->get('guard', 'web');
|
||||
|
||||
if (auth($guard)->check()) {
|
||||
$this->presenceService->setUserOffline(auth($guard)->user(), $guard);
|
||||
|
||||
return response()->json([
|
||||
'status' => 'offline',
|
||||
'timestamp' => now(),
|
||||
'user_id' => auth($guard)->id()
|
||||
]);
|
||||
}
|
||||
|
||||
return response()->json(['status' => 'unauthorized'], 401);
|
||||
}
|
||||
|
||||
public function getOnlineUsers(Request $request)
|
||||
{
|
||||
$guard = $request->get('guard', 'web');
|
||||
$users = $this->presenceService->getOnlineUsers($guard);
|
||||
|
||||
return response()->json([
|
||||
'users' => $users,
|
||||
'count' => $users->count(),
|
||||
'guard' => $guard,
|
||||
'updated_at' => now()
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user