Initial commit

This commit is contained in:
Ronald Huynen
2026-03-23 21:37:59 +01:00
commit 2547717edb
2193 changed files with 972171 additions and 0 deletions

View File

@@ -0,0 +1,53 @@
<?php
namespace App\Http\Controllers;
use App\Services\PresenceService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Session;
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
class CustomLogoutController extends Controller
{
public function destroy(Request $request)
{
$presenceService = app(PresenceService::class);
// Log out from all guards and set them offline
foreach (['web', 'admin', 'bank', 'organization'] as $guard) {
if (Auth::guard($guard)->check()) {
$user = Auth::guard($guard)->user();
// Set user offline before logging out
$presenceService->setUserOffline($user, $guard);
// Clear presence caches
Cache::forget("presence_{$guard}_{$user->id}");
Cache::forget("presence_last_update_{$guard}_{$user->id}");
// Logout
Auth::guard($guard)->logout();
}
}
$request->session()->invalidate();
$request->session()->regenerateToken();
// For AJAX/Livewire requests, force a hard redirect
if ($request->expectsJson() || $request->hasHeader('X-Livewire')) {
$redirectUrl = LaravelLocalization::localizeUrl('/');
return response('<script>window.location.href = "' . $redirectUrl . '";</script>', 200)
->header('Content-Type', 'text/html');
}
// Force a full page redirect with no-cache headers
$response = redirect(LaravelLocalization::localizeUrl('/'));
$response->headers->set('Cache-Control', 'no-cache, no-store, must-revalidate');
$response->headers->set('Pragma', 'no-cache');
$response->headers->set('Expires', '0');
return $response;
}
}