Verificação por Email com Laravel

Laravel
Tempo de leitura: 4 minutos

Verificação por Email com Laravel: A verificação por e-mail é um passo crucial para validar a identidade dos usuários recém-registrados, prevenindo cadastros falsos e garantindo a integridade dos dados na aplicação. O Laravel simplifica essa funcionalidade através de traits e rotas prontas para uso, exigindo apenas configuração mínima.

1. ⚙️ Preparação Essencial (Model e Banco de Dados)

O sistema de verificação depende de um contrato (interface) para funcionar corretamente.

A. Model MustVerifyEmail

Seu modelo de usuário (App\Models\User) deve implementar a interface Illuminate\Contracts\Auth\MustVerifyEmail.

PHP

namespace App\Models;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
// ...

class User extends Authenticatable implements MustVerifyEmail // <--- Interface
{
    use Notifiable;
    // ...
    protected $casts = [
        // Certifica-se de que o campo é tratado como data/hora
        'email_verified_at' => 'datetime', 
    ];
}

B. Migração do Banco de Dados

O campo email_verified_at é necessário para armazenar o timestamp da verificação.

PHP

// Na sua migração da tabela 'users'
Schema::create('users', function (Blueprint $table) {
    // ...
    $table->string('email')->unique();
    // Campo que será preenchido após a verificação
    $table->timestamp('email_verified_at')->nullable(); 
    // ...
});

Certifique-se de rodar o comando migrate: php artisan migrate.

2. 🛣️ Rotas e Controller Prontos

O Laravel já fornece a lógica de backend para o processo de verificação através do trait VerifiesEmails.

A. Roteamento

Para ativar todas as rotas de verificação (aviso, envio e validação), basta usar o método Auth::routes() com a opção verify.

PHP

// routes/web.php

use Illuminate\Support\Facades\Auth;

// Inclui rotas de login, registro, reset de senha E verificação de e-mail
Auth::routes(['verify' => true]); 

Isso registrará rotas como:

  • /email/verify (Página de aviso)
  • /email/verify/{id}/{hash} (Link de verificação clicável)

B. Protegendo Rotas

Para proteger rotas sensíveis, use o middleware verified. O Laravel só permitirá o acesso se o usuário estiver autenticado e tiver email_verified_at preenchido.

PHP

Route::get('/dashboard', function () {
    return view('dashboard');
})->middleware(['auth', 'verified']); // <--- Acesso restrito

3. 📤 Envio do E-mail de Verificação

Ao se registrar, o usuário precisa receber o e-mail contendo o link único e seguro.

A. Disparo Automático

O trait MustVerifyEmail automaticamente envia o e-mail de verificação após o registro, assumindo que você está usando os Controllers padrão de autenticação do Laravel.

B. Disparo Manual (Se Necessário)

Se você tiver um fluxo de registro customizado, pode disparar o e-mail manualmente após a criação do usuário:

PHP

use Illuminate\Support\Facades\Auth;

// ... após o login do novo usuário
if (Auth::user() instanceof MustVerifyEmail && ! Auth::user()->hasVerifiedEmail()) {
    // Garante que o usuário tem o trait e ainda não verificou
    Auth::user()->sendEmailVerificationNotification();
}

4. 🎨 Personalizando o E-mail de Verificação

O e-mail padrão do Laravel é genérico. Você pode substituí-lo criando uma Notificação personalizada.

A. Notificação Customizada

Crie uma notificação para substituir a nativa do Laravel:

Bash

php artisan make:notification CustomVerifyEmail

A chave é que esta notificação personalizada deve usar o método verificationUrl() do Laravel para gerar o link assinado e seguro.

PHP

// App/Notifications/CustomVerifyEmail.php

// ... imports

class CustomVerifyEmail extends Notification
{
    // ...

    public function toMail($notifiable)
    {
        // Gera o link de verificação assinado e seguro
        $verificationUrl = URL::temporarySignedRoute(
            'verification.verify',
            now()->addMinutes(60), // Link expira em 60 minutos
            [
                'id' => $notifiable->getKey(),
                'hash' => sha1($notifiable->getEmailForVerification()),
            ]
        );

        return (new MailMessage)
                    ->subject('Confirme seu endereço de Email')
                    ->line('Por favor, clique no botão abaixo para verificar seu endereço de e-mail.')
                    // O método action() usa o link gerado acima
                    ->action('Verificar Email', $verificationUrl) 
                    ->line('Se você não se registrou em nossa aplicação, ignore este e-mail.');
    }
}

B. Usando a Notificação Customizada

Finalmente, você informa ao modelo User para usar sua nova notificação, substituindo o método nativo:

PHP

// App/Models/User.php (Adicione este método)

public function sendEmailVerificationNotification()
{
    $this->notify(new \App\Notifications\CustomVerifyEmail);
}

5. ✅ Conclusão Verificação por Email com Laravel

Verificação por Email com Laravel: A implementação da verificação por e-mail no Laravel é notavelmente simples, focada na inclusão da interface MustVerifyEmail no modelo User e no uso do middleware verified para proteger as rotas. A flexibilidade do sistema de Notificações permite personalizar completamente o conteúdo do e-mail, garantindo um processo de onboarding seguro e profissional para seus usuários.

Mas antes de dominar o Laravel, se for o seu caso, toda jornada tem um início. Vamos entender quais são os conhecimentos básicos necessários para aproveitar ao máximo este poderoso framework. Para iniciar seus estudos no Laravel, você precisará dominar as seguintes tecnologias:

HTML
HTML
CSS
CSS
Javascript
JavaScript
SQL
SQL
Capa Curso PHP
PHP

E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados:

Hospedagem Hostinger
Ofertas Amazon
Amazon Prime
Author: Thiago Rossi
Com mais de 20 anos de experiência em tecnologia, atuo como Engenheiro de Computação, desenvolvedor de sistemas, escritor e produtor de conteúdo. Minha trajetória passa pelo ensino técnico, desenvolvimento web, arquitetura de sistemas e criação de soluções voltadas para a indústria de jogos digitais. Acredito que conhecimento deve ser acessível e aplicável. Essa visão resultou em uma biblioteca com mais de 550 artigos gratuitos, abrangendo temas como desenvolvimento web, infraestrutura, inteligência artificial, Game Design, mercado de jogos e carreiras na indústria de games. Sou autor do livro "GDD – O Guia Definitivo", uma obra dedicada ao planejamento e documentação de jogos digitais, e criador do GameMeTRix, uma plataforma que auxilia desenvolvedores na análise e validação de ideias para jogos. Meu trabalho busca conectar planejamento, tecnologia e mercado para ajudar criadores a transformar boas ideias em projetos viáveis. Atualmente concentro meus estudos e projetos no desenvolvimento de jogos web, na criação de metodologias para validação de produtos digitais e na produção de conteúdo técnico voltado ao ecossistema de jogos. Meu compromisso é unir teoria, prática e experiência de mercado para contribuir com o crescimento de novos desenvolvedores e profissionais da área.