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:
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:















