2025-03-05 13:44:58 +07:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace App\Http\Middleware;
|
|
|
|
|
|
|
|
|
|
use Closure;
|
|
|
|
|
use Illuminate\Http\Request;
|
|
|
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
|
|
use Carbon\Carbon;
|
|
|
|
|
|
|
|
|
|
class SessionTimeout
|
|
|
|
|
{
|
|
|
|
|
public function handle(Request $request, Closure $next)
|
|
|
|
|
{
|
|
|
|
|
// Get last activity time
|
|
|
|
|
$lastActivity = session('lastActivityTime');
|
|
|
|
|
|
|
|
|
|
// Set logout time in minutes (30 minutes)
|
2025-05-08 19:56:08 +07:00
|
|
|
$timeout = 12 * 60 * 60;
|
2025-03-05 13:44:58 +07:00
|
|
|
|
|
|
|
|
if ($lastActivity && (time() - $lastActivity > $timeout)) {
|
|
|
|
|
Auth::logout();
|
|
|
|
|
session()->flush();
|
|
|
|
|
return redirect('/login')->with('message', 'Session expired due to inactivity.');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Update session activity time
|
|
|
|
|
session(['lastActivityTime' => time()]);
|
|
|
|
|
|
|
|
|
|
return $next($request);
|
|
|
|
|
}
|
|
|
|
|
}
|