File: /home/emerlux/public_html/wp-content/plugins/woocommerce-mercadopago/src/Helpers/Nonce.php
<?php
namespace MercadoPago\Woocommerce\Helpers;
use MercadoPago\Woocommerce\Configs\Store;
use MercadoPago\Woocommerce\Libraries\Logs\Logs;
if (!defined('ABSPATH')) {
exit;
}
class Nonce
{
private Logs $logs;
private Store $store;
/**
* Is debug mode
*
* @var mixed|string
*/
public $debugMode;
/**
* Nonce constructor
*
* @param Logs $logs
* @param Store $store
*/
public function __construct(Logs $logs, Store $store)
{
$this->logs = $logs;
$this->store = $store;
$this->debugMode = $this->store->getDebugMode();
}
/**
* Generate wp_nonce
*
* @param string $id
*
* @return string
*/
public function generateNonce(string $id): string
{
$nonce = wp_create_nonce($id);
if (!$nonce) {
$this->logs->file->error("Security nonce $id creation failed.", __CLASS__);
return '';
}
return $nonce;
}
/**
* Retrieves or display nonce hidden field for forms
*
* @param string $id
* @param string $fieldName
*
* @return string
*/
public function generateNonceField(string $id, string $fieldName): string
{
return wp_nonce_field($id, $fieldName);
}
/**
* Validate wp_nonce
*
* @param string $id
* @param string $nonce
*
* @return void
*/
public function validateNonce(string $id, string $nonce): void
{
if (!wp_verify_nonce($nonce, $id)) {
$this->logs->file->error("Security nonce $id check failed. Nonce: $nonce", __CLASS__);
wp_send_json_error('Forbidden', 403);
}
}
}