Cómo enviar un correo electrónico de activación en Laravel después del registro del usuario
Laravel viene con un flujo de autenticación cuando lo instalamos. Incluye inicio de sesión, registro, flujo de contraseña olvidada en el propio núcleo de Laravel. Con este flujo integrado, cuando el usuario se registra, obtiene acceso directo al sistema. Pero, ¿qué pasa si alguien quiere enviar un código de verificación por correo electrónico antes de permitir que un usuario use la aplicación? En este artículo, estudiamos cómo enviar un correo electrónico de activación en Laravel.
Vamos a enviar un correo electrónico de confirmación al usuario. Cuando un usuario hace clic en el enlace de verificación enviado en un correo electrónico, solo él podrá usar el sistema.
Empezando
Para comenzar, primero instalamos el paquete en nuestro proyecto Laravel. Abra la terminal en el directorio raíz de su proyecto y ejecute el comando:
composer require beyondcode/laravel-confirm-email
Este paquete que agrega verificación por correo electrónico a sus proyectos de Laravel.
Después de instalar el paquete, debemos ejecutar un comando para publicar la migración y el archivo de configuración.
php artisan vendor:publish --provider=BeyondCodeEmailConfirmationEmailConfirmationServiceProvider
En la users
tabla, este paquete agrega dos columnas confirmed_at
y confirmation_code
. Ejecutemos el comando de migración para agregar estas columnas.
php artisan migrate
Configuración
Para enviar correo electrónico de activación que necesitamos para reemplazar AuthenticatesUsers
, RegistersUsers
y SendsPasswordResetEmails
los rasgos con los proporcionados por este paquete.
Primero abra los archivos a continuación en su editor y luego reemplazamos los rasgos uno por uno.
- appHttpControllersAuthLoginController.php
- appHttpControllersAuthRegisterController.php
- appHttpControllersAuthForgotPasswordController.php
De los archivos anteriores reemplace las declaraciones
use IlluminateFoundationAuthAuthenticatesUsers;
use IlluminateFoundationAuthRegistersUsers;
use IlluminateFoundationAuthSendsPasswordResetEmails;
Con
use BeyondCodeEmailConfirmationTraitsAuthenticatesUsers;
use BeyondCodeEmailConfirmationTraitsRegistersUsers;
use BeyondCodeEmailConfirmationTraitsSendsPasswordResetEmails;
Como estamos enviando un enlace de verificación en un correo electrónico de activación, agregue las siguientes dos rutas en un routes/web.php
archivo.
Route::name('auth.resend_confirmation')->get('/register/confirm/resend', 'AuthRegisterController@resendConfirmation');
Route::name('auth.confirm')->get('/register/confirm/{confirmation_code}', 'AuthRegisterController@confirm');
Cuando un usuario hace clic en el enlace de verificación, este paquete agrega mensajes flash que contienen mensajes de error / información para los usuarios. Para mostrar este mensaje flash a los usuarios, agregue el siguiente código en el resourcesviewsauthlogin.blade.php
.
.....
<div class="panel-body">
@if (session('confirmation'))
<div class="alert alert-info" role="alert">
{!! session('confirmation') !!}
</div>
@endif
@if ($errors->has('confirmation') > 0) <div class="alert alert-danger" role="alert">
{!! $errors->first('confirmation') !!}
</div>
@endif
.....
También necesitamos agregar el siguiente código en el resourcesviewsauthpasswordsemail.blade.php
.....
<div class="panel-body">
@if ($errors->has('confirmation') > 0) <div class="alert alert-danger" role="alert">
{!! $errors->first('confirmation') !!}
</div>
@endif
.....
¡Eso es! Ahora, cuando un usuario se registre en su sitio web, recibirá un correo electrónico de activación para confirmar su cuenta. Comparta sus pensamientos en la sección de comentarios a continuación.
Artículos relacionados
- Cómo usar Laravel Passport para la autenticación de API REST
- Cómo cargar un archivo a S3 usando el sistema de archivos Laravel