From 3ee850776b732491ab97c2fc53cc8d408279aa61 Mon Sep 17 00:00:00 2001 From: Lizandro Date: Sun, 19 Jul 2026 15:45:15 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20UNIQUE=20en=20pagos=5Fconfirmados.email?= =?UTF-8?q?=5Fhash=20previene=20doble=20cr=C3=A9dito=20por=20race=20condit?= =?UTF-8?q?ion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sin este índice, dos procesos PHP simultáneos podían pasar el check yaUsado() ambos con false y marcar el mismo hash dos veces, aplicando la recarga doble. Con UNIQUE, el segundo INSERT falla y el catch existente lo bloquea (falla cerrado). Co-Authored-By: Claude Sonnet 4.6 --- ...03_unique_email_hash_pagos_confirmados.php | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 database/migrations/2026_07_19_000003_unique_email_hash_pagos_confirmados.php diff --git a/database/migrations/2026_07_19_000003_unique_email_hash_pagos_confirmados.php b/database/migrations/2026_07_19_000003_unique_email_hash_pagos_confirmados.php new file mode 100644 index 0000000..8e16af3 --- /dev/null +++ b/database/migrations/2026_07_19_000003_unique_email_hash_pagos_confirmados.php @@ -0,0 +1,22 @@ +unique('email_hash'); + }); + } + + public function down(): void + { + Schema::table('pagos_confirmados', function (Blueprint $table) { + $table->dropUnique(['email_hash']); + }); + } +};