<?php
/**
 * ASISMA CRM - Middleware de Tenant
 */
class TenantMiddleware {

    public static function handle() {
        if (!SessionHelper::isAdmin() && !SessionHelper::getFranquiciadoId()) {
            header('HTTP/1.1 403 Forbidden');
            header('Content-Type: application/json; charset=utf-8');
            echo json_encode(array(
                'success' => false,
                'error'   => true,
                'message' => 'Acceso denegado: El usuario no cuenta con un franquiciado asociado.'
            ));
            exit;
        }
    }

    public static function checkAccess($recordFranquiciadoId) {
        if (SessionHelper::isAdmin()) {
            return true;
        }

        $userFranquiciadoId = SessionHelper::getFranquiciadoId();
        if ($userFranquiciadoId != $recordFranquiciadoId) {
            header('HTTP/1.1 403 Forbidden');

            $xrw    = isset($_SERVER['HTTP_X_REQUESTED_WITH']) ? strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) : '';
            $isAjax = (!empty($xrw) && $xrw == 'xmlhttprequest');

            if ($isAjax) {
                header('Content-Type: application/json; charset=utf-8');
                echo json_encode(array(
                    'success' => false,
                    'message' => 'Acceso denegado: No tiene permisos para acceder a este recurso.'
                ));
            } else {
                echo "<h2>Acceso Denegado (403)</h2>";
                echo "<p>No cuenta con los permisos necesarios para realizar esta acción.</p>";
            }
            exit;
        }

        return true;
    }
}
