<?php

namespace App\Http\Middleware;

use App\Http\Controllers\ApiController;
use App\Http\Controllers\ConsumerAPI\ConsumerApiController;
use App\Http\Controllers\ConsumerAPI\MessageBag;
use Closure;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

class ServiceAPIAuth
{
    private $request;
    private $error;
    private $routes;

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request $request
     * @param  \Closure $next
     * @return mixed
     */
    public function handle(Request $request, Closure $next)
    {
        $this->request = $request;

        if ($this->request->header('cf-x-client') == _env('CF_X_CLIENT') && $this->request->header('cf-x-client-secret') == _env('CF_X_CLIENT_SECRET')){
            return $next($request);
        }else{
            $api = new ApiController();
            $ips = array_merge(explode(',', _env('HOMEVILLE_IP')), explode(',', _env('CF_OFFICE_IP')));
            if (in_array($api->get_client_ip(), $ips)){
                return $next($request);
            }
        }
        return response()->json(json_decode('{
                "status": "FAIL",
                "error": {
                    "message": "Unauthorized access",
                    "code": "CF500001"
                }
            }', 1), 401);
    }
}
