DEV Community

Nahuel Segovia
Nahuel Segovia

Posted on

Implementado la verificación de email en Laravel 7

Bien, algunas de las cosas por las que es necesario implementar la verificación de email en nuestros proyectos son:

  • Evitar spam

  • Corroborar que realmente el usuario este usando su propio correo y no el de otra persona

Por eso vamos a hacerlo facilito y rápido, lo primero es hacerse una cuenta en https://mailtrap.io/, esto sirve para testear cosas como estas, o como el reseteo de password del usuario.

Una vez registrado nos dirigimos en el menu izquierdo a >Inboxes:

Alt Text

a la derecha nos va a salir un menu, tenemos que seleccionar SMTP Settings y vamos a ver algo como esto:

Alt Text

Vamos a copiar los datos de Host, Port, Username, Password
y lo configuramos en nuestro .env

MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=9hduas752d0940
MAIL_PASSWORD=d95sdd577f8cf8
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=nahuelprueba@gmail.com
MAIL_FROM_NAME="${APP_NAME}"
Enter fullscreen mode Exit fullscreen mode

Lo que queda es ir a nuestro modelo User e implementar MustVerifyEmail, agregar el Middleware a HomeController y configurar nuestras rutas web para poder recibir los datos

Modelo:

class User extends Authenticatable implements MustVerifyEmail
Enter fullscreen mode Exit fullscreen mode

HomeController:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware(['auth','verified']);
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Contracts\Support\Renderable
     */
    public function index()
    {
        return view('home');
    }
}
Enter fullscreen mode Exit fullscreen mode

Rutas:


<?php

use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Auth::routes(['verify' => true]); /*Activando la verificación de correo*/

Route::get('/', 'IndexController@index');
Route::get('/perfil', 'PerfilController@index');

Route::get('/home', 'HomeController@index')->name('home');
Enter fullscreen mode Exit fullscreen mode

Una vez registrado el usuario nos va a aparecer lo siguiente:

Alt Text

eso quiere decir que nuestro email de verificación ha sido enviado, así que si vamos a Mailtrap vamos a ver el correo para poder verificar nuestra cuenta:

Alt Text

Top comments (1)

Collapse
 
dabydat profile image
David Gómez

Hola amigo, tu explicación ha sido excelente para culminar mis dudas en cuanto a este tema que quería lograr.

Tengo una duda, ¿cómo haría para configurar mi entorno para que llegara directamente al correo de la persona que se registra en vez de a mailtrap.io?