The only right way to do this is using a middleware. I once build a middleware for this which you can use ;)
<?php
namespace App\Http\Middleware;
use Closure;
use Symfony\Component\HttpFoundation\IpUtils;
class RedirectInvalidIPs
{
/**
* List of valid IPs.
*
* @var array
*/
protected $ips = [
'42.60.187.198',
'188.102.29.159',
];
/**
* List of valid IP-ranges.
*
* @var array
*/
protected $ipRanges = [
'12.64.103.24',
];
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
foreach ($request->getClientIps() as $ip) {
if (! $this->isValidIp($ip) && ! $this->isValidIpRange($ip)) {
return redirect('/');
}
}
return $next($request);
}
/**
* Check if the given IP is valid.
*
* @param $ip
* @return bool
*/
protected function isValidIp($ip)
{
return in_array($ip, $this->ips);
}
/**
* Check if the ip is in the given IP-range.
*
* @param $ip
* @return bool
*/
protected function isValidIpRange($ip)
{
return IpUtils::checkIp($ip, $this->ipRanges);
}
}
Now you only need to adjust the ip address and append this middleware to all your route like so
// Kernel.php
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
\App\Http\Middleware\RedirectInvalidIPs::class,
];