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;
}