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:
co-authored by
Claude Sonnet 4.6
parent
1245d255bb
commit
16315da176
@@ -447,21 +447,19 @@
|
||||
navigator.clipboard.writeText(val).then(() => { this.copiado = id; setTimeout(() => this.copiado = null, 2000); });
|
||||
},
|
||||
copiarTodo() {
|
||||
let email = $refs.cred_email ? $refs.cred_email.innerText : '';
|
||||
let pass = $refs.cred_pass ? $refs.cred_pass.innerText : '';
|
||||
let parts = [
|
||||
'Servicio: {{ addslashes($payload['servicio'] ?? '') }}',
|
||||
email ? 'Email: ' + email : '',
|
||||
pass ? 'Password: ' + pass : '',
|
||||
'{{ !empty($payload['perfil']) ? 'Perfil: ' . addslashes($payload['perfil']) : '' }}',
|
||||
'{{ !empty($payload['vence']) ? 'Vence: ' . $payload['vence'] : '' }}'
|
||||
'Servicio: ' + ($refs.cred_servicio?.innerText ?? ''),
|
||||
$refs.cred_email ? 'Email: ' + $refs.cred_email.innerText : '',
|
||||
$refs.cred_pass ? 'Password: ' + $refs.cred_pass.innerText : '',
|
||||
$refs.cred_perfil ? 'Perfil: ' + $refs.cred_perfil.innerText : '',
|
||||
$refs.cred_vence ? 'Vence: ' + $refs.cred_vence.innerText : '',
|
||||
].filter(Boolean);
|
||||
navigator.clipboard.writeText(parts.join('\n')).then(() => { this.copiado = 'todo'; setTimeout(() => this.copiado = null, 2000); });
|
||||
}
|
||||
}">
|
||||
{{-- Encabezado servicio --}}
|
||||
<div class="px-4 py-2 bg-[#00a884]/20 flex items-center justify-between">
|
||||
<p class="text-[#00a884] text-xs font-semibold uppercase tracking-wider">{{ $payload['servicio'] ?? 'Credenciales' }}</p>
|
||||
<p class="text-[#00a884] text-xs font-semibold uppercase tracking-wider" x-ref="cred_servicio">{{ $payload['servicio'] ?? 'Credenciales' }}</p>
|
||||
<span class="text-[#00a884] text-[10px]">✅ Compra exitosa</span>
|
||||
</div>
|
||||
{{-- Mensaje de gracias --}}
|
||||
@@ -501,11 +499,11 @@
|
||||
@if (!empty($payload['perfil']))
|
||||
<div class="bg-[#0b141a] rounded-lg px-3 py-2">
|
||||
<p class="text-[#8696a0] text-[11px] mb-0.5">Perfil</p>
|
||||
<p class="text-white text-sm">{{ $payload['perfil'] }}</p>
|
||||
<p class="text-white text-sm" x-ref="cred_perfil">{{ $payload['perfil'] }}</p>
|
||||
</div>
|
||||
@endif
|
||||
@if (!empty($payload['vence']))
|
||||
<p class="text-[#8696a0] text-xs text-center">📅 Vence: {{ $payload['vence'] }}</p>
|
||||
<p class="text-[#8696a0] text-xs text-center">📅 Vence: <span x-ref="cred_vence">{{ $payload['vence'] }}</span></p>
|
||||
@endif
|
||||
</div>
|
||||
{{-- Botón Copiar todo --}}
|
||||
|
||||
Reference in New Issue
Block a user