<?php

namespace App\Http\Middleware;

use Closure;
use App\Libraries\ejLib;

class RevisarRol
{
    private $ejLibInstance;

    public function __construct()
    {
        if (!isset($_SESSION)) session_start();
        $this->ejLibInstance = ejLib::getInstance();
    }

    /**
     * Revisa si el usuario actual tiene el rol necesario para acceder al recurso solicitado.
     * Creado por Fabian Sanchez 24/07/2017
     *
     * @param $request
     * @param Closure $next
     * @param array ...$roles
     * @return mixed|string
     */
    public function handle($request, Closure $next, ...$roles)
    {
        if (isset($_SESSION['usuario'])) {
            $usuario = $_SESSION['usuario'];
            $decoded = $this->ejLibInstance->desencriptar_AES($usuario['tusuario'], $usuario['x']);
            foreach ($roles as $rol) {
                if (rtrim($decoded) == $rol) return $next($request);
            }
        } else if (isset($_SESSION['operador'])) {
            foreach ($roles as $rol) {
                if ('Operador' == $rol) return $next($request);
            }
        }
        //return abort(403, 'Acción no autorizada.');
        if ($request->ajax()) {
            return "AJAX Acción no autorizada.";
        } else {
            abort(403);
        }
    }
}
