--------- Co-authored-by: codacy-production[bot] <61871480+codacy-production[bot]@users.noreply.github.com>
		
			
				
	
	
		
			32 lines
		
	
	
	
		
			892 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
	
		
			892 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace App\Http\Middleware;
 | 
						|
 | 
						|
use Closure;
 | 
						|
use Illuminate\Http\Request;
 | 
						|
use Illuminate\Support\Facades\Cache;
 | 
						|
use Symfony\Component\HttpFoundation\Response;
 | 
						|
 | 
						|
class RateLimiter
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * Handle an incoming request.
 | 
						|
     *
 | 
						|
     * @param  \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response)  $next
 | 
						|
     */
 | 
						|
    public function handle(Request $request, Closure $next): Response
 | 
						|
    {
 | 
						|
        $ipAddress = $request->ip();
 | 
						|
        $cacheKey = 'rate_limit_'.$ipAddress;
 | 
						|
 | 
						|
        if (Cache::has($cacheKey)) {
 | 
						|
            // If the cache key exists, the IP has submitted an entry within the last hour.
 | 
						|
            return response()->view('errors.guestbook-ratelimit', [], 429);
 | 
						|
        }
 | 
						|
 | 
						|
        // Add the IP address to the cache and set the expiration time to one hour.
 | 
						|
        Cache::put($cacheKey, true, 3600);
 | 
						|
 | 
						|
        return $next($request);
 | 
						|
    }
 | 
						|
}
 |