craftzing/laravel-lokalise-webhooks

View on GitHub
src/Http/Middleware/RestrictRequestsToLokaliseIPs.php

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
<?php

declare(strict_types=1);

namespace Craftzing\Laravel\LokaliseWebhooks\Http\Middleware;

use Craftzing\Laravel\LokaliseWebhooks\Exceptions\RequestRestrictedToLokaliseIPs;
use Illuminate\Http\Request;

use function in_array;

final class RestrictRequestsToLokaliseIPs
{
    private const LOKALISE_IPS = [
        '159.69.72.82',
        '94.130.129.39',
        '195.201.158.210',
        '94.130.129.237',
    ];

    /**
     * @return mixed
     */
    public function handle(Request $request, callable $next)
    {
        $ip = $request->ip() ?: '';

        if ($this->isLokaliseIP($ip)) {
            throw RequestRestrictedToLokaliseIPs::ipIsNotALokaliseIP($ip);
        }

        return $next($request);
    }

    private function isLokaliseIP(string $ip): bool
    {
        return ! in_array($ip, self::LOKALISE_IPS);
    }
}