<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Session;
use Symfony\Component\HttpFoundation\Response;

class UsuarioMiddleware {
    /**
     * Handle an incoming request.
     *
     * @param  \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response)  $next
     */
    public function handle(Request $request, Closure $next): Response {
        $usuario = Session::get('usuario');
        $two_fa_verified = Session::get('2fa_verified');
        $google_auth = Session::get('google_auth');
        if (!$usuario) {
            return $this->redirectLogin();
        }
        //
        if ( $two_fa_verified !== true && $google_auth !== true ){
            Session::flush();
            Session::save();
            return $this->redirectLogin();
        }
        //
        if (isset($usuario->user_horario) && $usuario->user_horario != null) {
            $minutos = 0;
            $minutos = date('H') * 60 + date('i');
            //
            if ($minutos < $usuario->user_horario->hora_desde || $minutos > $usuario->user_horario->hora_hasta) {
                Session::flush();
                Session::save();
                return $this->redirectLogin();
            }
        }
        /*
              if($_SERVER['REQUEST_URI'] == '/generar_nuevo_token') {
                  echo(var_dump($_SERVER['REQUEST_URI'])); die();
                  //return redirect('/login');
              }
              */
        return $next($request);
    }

    public function redirectLogin() {
        if (isset($_SERVER["HTTP_X_REQUESTED_WITH"]) && $_SERVER["HTTP_X_REQUESTED_WITH"] === "XMLHttpRequest") {
            //echo json_encode($_SERVER["HTTP_X_REQUESTED_WITH"]);         
            return \Response::JSON($_SERVER["HTTP_X_REQUESTED_WITH"]);
        } else {
            return redirect('/login');
        }
    }
}
