administrador.base.orm.inicializacion.asigna_valor_desencriptado.21.7.0 - gamboamartin/administrador GitHub Wiki

asigna_valor_desencriptado

Esta función pública se encarga de desencriptar los valores de un arreglo asociativo $row para los campos que están presentes en el arreglo $campos_encriptados.

Signatura

final public function asigna_valor_desencriptado(array $campos_encriptados, array $row): array

Parámetros

$campos_encriptados (array): Un arreglo que contiene los nombres de los campos que están encriptados. $row (array): Un arreglo asociativo que contiene los pares clave-valor a ser desencriptados.

Retorna

  • array: Un arreglo asociativo que contiene los mismos pares clave-valor que $row, pero con los valores desencriptados para los campos encriptados. En caso de error, retorna un arreglo que contiene un mensaje de error. El formato del arreglo es el siguiente:
  • mensaje: El mensaje de error.
  • data: Los datos relevantes asociados al error.
  • es_final: Indica si el error es final y no se pueden realizar más operaciones.
  • fix: Sugerencia para corregir el error.

Explicación Detallada

  • Esta función itera sobre cada par clave-valor en el arreglo $row.
  • Verifica si la clave (campo) es numérica. Si lo es, retorna un mensaje de error indicando que la clave debe ser un texto.
  • Para cada campo en el arreglo $row, utiliza la función value_desencriptado para desencriptar el valor asociado a ese campo.
  • Si ocurre un error durante la desencriptación, retorna un mensaje de error.
  • Actualiza el valor del campo en el arreglo $row con el valor desencriptado.
  • Retorna el arreglo $row con los valores desencriptados.

Ejemplos

// Creación de objeto
$objeto = new inicializacion();

// Definición de campos encriptados
$campos_encriptados = ['campo1', 'campo2'];

// Arreglo asociativo con valores encriptados
$row_encriptado = [
    'campo1' => 'QlArR1Bvd2FTL0hhRnBNQjNOeFp3Zz09',
    'campo2' => 'Rnl6WU5aVWhsajI0UjFTWUdKT3Vidz09',
    'campo3' => 'valor_no_encriptado'
];

// Caso 1: Desencriptar valores correctamente
$resultado = $objeto->asigna_valor_desencriptado($campos_encriptados, $row_encriptado);
// $resultado contendrá un arreglo asociativo con los valores desencriptados para los campos encriptados

// Caso 2: Intentar desencriptar un campo numérico
$row_con_campo_numerico = [
    1 => 'valor_encriptado'
];
$resultado = $objeto->asigna_valor_desencriptado($campos_encriptados, $row_con_campo_numerico);
/*
$resultado contendrá un arreglo con un mensaje de error indicando que el campo debe ser un texto
*/

Código de la Función

final public function asigna_valor_desencriptado(array $campos_encriptados, array $row): array
    {
        foreach ($row as $campo=>$value){
            if(is_numeric($campo)){
                $fix = ' El campo dentro de row debe ser un texto no numerico puede ser id, registro etc, no puede ';
                $fix .= ' ser 0 o 1 o cualquier numero, ejemplo de envio de row puede ser $row[x] o';
                $fix.= ' $row[cualquier texto no numerico] no puede ser row[0] o row[cualquier numero]';
                return $this->error->error(mensaje: 'Error el campo debe ser un texto', data: $campo,
                    es_final: true, fix: $fix);
            }

            $value_enc = $this->value_desencriptado(campo:$campo,
                campos_encriptados: $campos_encriptados, value: $value);
            if(errores::$error){
                return $this->error->error(mensaje: 'Error al desencriptar', data:$value_enc);
            }

            $row[$campo] = $value_enc;
        }
        return $row;
    }