namespace App\Http\Middleware; use Closure; use Carbon\Carbon; class ActivityTracker { public function handle($request, Closure $next) { if (!session('authenticated')) { return redirect()->route('login'); } $timeout = config('vault.idle_timeout'); $last = session('last_activity'); if ($last) { $idle = Carbon::parse($last)->diffInMinutes(now()); $downloading = session('is_downloading', false); if ($idle >= $timeout && !$downloading) { session()->flush(); return redirect()->route('login'); } } session(['last_activity' => now()]); return $next($request); } }