Magic Link Login es un package de autenticación para Laravel que permite a los usuarios iniciar sesión en tu aplicación utilizando enlaces mágicos enviados por correo electrónico o proveedores externos como Google, Facebook, etc.
- PHP 8.2 o superior
- Laravel 10.x o 11.x
Puedes instalar el package mediante Composer:
composer require salvaterol/magic-link-login
Después de instalar el package, debes publicar el archivo de configuración y las migraciones:
php artisan vendor:publish --provider="SalvaTerol\MagicLinkLogin\MagicLinkLoginServiceProvider" --tag="config"
php artisan vendor:publish --provider="SalvaTerol\MagicLinkLogin\MagicLinkLoginServiceProvider" --tag="migrations"
Luego, ejecuta las migraciones:
php artisan migrate
En el archivo de configuración config/magic-link-login.php
, puedes personalizar varios aspectos del comportamiento de los enlaces mágicos:
return [
'user_model' => \App\Models\User::class, // Modelo de usuario
'token_expiry_minutes' => 15, // Tiempo de expiración de los enlaces mágicos
'redirect_after_login' => '/', // Redirección después del login exitoso
'max_attempts' => 3, // Intentos máximos para usar un token (si es aplicable)
];
Para enviar un enlace mágico al correo electrónico de un usuario, puedes hacer lo siguiente:
use SalvaTerol\MagicLinkLogin\Facades\MagicLinkLogin;
MagicLinkLogin::sendMagicLink($user);
El enlace mágico será enviado al correo electrónico del usuario y, cuando lo use, podrá iniciar sesión sin necesidad de ingresar una contraseña.
También puedes permitir que los usuarios se autentiquen mediante proveedores externos como Google o Facebook. Para esto, el package utiliza Laravel Socialite.
Configura los proveedores en tu archivo .env
:
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
FACEBOOK_CLIENT_ID=your-facebook-client-id
FACEBOOK_CLIENT_SECRET=your-facebook-client-secret
Después de configurar los proveedores, puedes redirigir a los usuarios a la página de autenticación con el siguiente código:
return Socialite::driver('google')->redirect();
Este package incluye un comando para eliminar automáticamente los enlaces mágicos expirados de la base de datos.
Puedes ejecutar el comando manualmente con:
php artisan magic-links:cleanup
Si deseas que este comando se ejecute automáticamente en tu aplicación, puedes añadirlo al scheduler de Laravel. Abre el archivo app/Console/Kernel.php
de tu aplicación Laravel y añade la siguiente línea en el método schedule
:
protected function schedule(Schedule $schedule)
{
$schedule->command('magic-links:cleanup')->weekly();
}
Esto hará que el comando se ejecute automáticamente una vez a la semana.
El package incluye pruebas básicas para garantizar su correcto funcionamiento. Puedes ejecutar las pruebas utilizando:
vendor/bin/pest
¡Las contribuciones son bienvenidas! Si encuentras algún problema o tienes sugerencias, siéntete libre de abrir un issue o enviar un pull request.
Este package está bajo la licencia MIT. Para más detalles, consulta el archivo LICENSE.md
.