fix: correcciones de seguridad pre-producción identificadas en code review

- autoAplicarRecarga: null-check en User::find + DB::transaction atómico
- pagarConSaldo: $cuenta->update('ocupado') dentro de la transacción (evita doble venta)
- comprarPromoConSaldo: Historiale::create movido dentro de la transacción (evita registros huérfanos)
- mostrarTransferencia: array_merge en lugar de asignación directa (preserva pending_purchase)
- Blade copiarTodo: lee valores desde x-ref del DOM en vez de escapado PHP→JS
- ValidarPagoTelegramJob: eliminado import App\Models\User no utilizado

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro
2026-07-29 19:24:36 +00:00
co-authored by Claude Sonnet 4.6
parent 1245d255bb
commit 16315da176
4 changed files with 44 additions and 39 deletions
+15 -15
View File
@@ -852,6 +852,7 @@ class PublicChat extends Component
'nombre_cliente' => $user->name,
]);
Historial_cuenta::create(['historial_id' => $historial->id, 'cuenta_id' => $cuenta->id]);
$cuenta->update(['estado' => 'ocupado']);
$saldo->update(['valor' => $nuevoSaldo]);
});
@@ -1019,22 +1020,21 @@ class PublicChat extends Component
return;
}
$historial = Historiale::create([
'fecha_inicio' => now(),
'fecha_final' => now()->addDays(30),
'valor' => $precio,
'utilidad' => $utilidad,
'tipo_pago' => 'saldo',
'estado' => 'entregado',
'vendedor_id' => $this->userId,
'promocion_id' => $promoId,
'cliente_id' => $this->userId,
'nombre_cliente' => $user->name,
]);
$nuevoSaldo = $saldo->valor - $precio;
DB::transaction(function () use ($historial, $cuenta, $saldo, $nuevoSaldo) {
DB::transaction(function () use ($promo, $user, $saldo, $cuenta, $precio, $utilidad, $promoId, $nuevoSaldo) {
$historial = Historiale::create([
'fecha_inicio' => now(),
'fecha_final' => now()->addDays(30),
'valor' => $precio,
'utilidad' => $utilidad,
'tipo_pago' => 'saldo',
'estado' => 'entregado',
'vendedor_id' => $this->userId,
'promocion_id' => $promoId,
'cliente_id' => $this->userId,
'nombre_cliente' => $user->name,
]);
Historial_cuenta::create(['historial_id' => $historial->id, 'cuenta_id' => $cuenta->id]);
$cuenta->update(['estado' => 'ocupado']);
$saldo->update(['valor' => $nuevoSaldo]);
@@ -1171,7 +1171,7 @@ class PublicChat extends Component
return;
}
$this->flujoData = ['monto' => $monto];
$this->flujoData = array_merge($this->flujoData, ['monto' => $monto]);
$nombresPrevios = $this->userId ? \App\Models\SolicitudRecarga::nombresPrevios($this->userId) : [];