Email Magic Link for Laravel es un paquete de autenticación sin contraseña que permite a los usuarios iniciar sesión mediante enlaces enviados por correo electrónico o códigos de un solo uso. El paquete funciona de forma independiente o junto con Laravel Fortify y no requiere dependencias adicionales más allá del framework en sí.

El paquete resuelve un problema de seguridad crítico en los sistemas de magic links tradicionales: los escáneres de correo y dispositivos de seguridad suelen recuperar URLs automáticamente antes de que los usuarios las vean, consumiendo tokens de uso único sin intención. Email Magic Link lo resuelve dividiendo el flujo en dos pasos: la solicitud GET solo muestra una página de confirmación, mientras que el token se consume únicamente mediante un POST explícito desde esa página, que los escáneres no pueden activar. Los tokens y códigos se almacenan solo como valores hash (HMAC-SHA256 con clave), nunca en texto plano, con protección contra fuerza bruta individual por token (máximo 5 intentos por defecto) y consumo seguro sin condiciones de carrera.

Cuando los usuarios tienen autenticación de dos factores habilitada a través de Fortify, la verificación del magic link no los autentica automáticamente. En su lugar, se redirigen al desafío de dos factores de Fortify como usuarios no autenticados, lo que evita escenarios de evasión. Para clientes SPA y móviles, las respuestas JSON indican si los usuarios necesitan verificación de dos factores o están completamente autenticados.

Los desarrolladores pueden emitir enlaces y códigos de forma programática sin enviarlos automáticamente, permitiendo entrega personalizada a través de SMS, notificaciones push o mailables personalizados mediante la fachada EmailMagicLink. El paquete incluye una ResendGuard para prevenir abusos, con tiempos de espera escalonados (30 segundos, 60 segundos, 120 segundos) y un límite móvil de cinco intentos por hora. Un comando programado limpia automáticamente los tokens expirados diariamente.

El paquete requiere PHP 8.4 y Laravel 13, siendo Fortify opcional. La instalación se realiza mediante `composer require pushery/email-magic-link-for-laravel`, seguido del comando de instalación y migraciones de base de datos.