Como enviar e-mail de ativação no Laravel após o cadastro do usuário
O Laravel vem com fluxo de autenticação quando o instalamos. Inclui login, registro, fluxo de esquecimento de senha no próprio núcleo do Laravel. Usando esse fluxo integrado, ao se registrar, o usuário obtém acesso direto ao sistema. Mas e se alguém quiser enviar um código de verificação de e-mail antes de permitir que um usuário use o aplicativo. Neste artigo, estudamos como enviar e-mail de ativação no Laravel.
Enviaremos um email de confirmação ao usuário. Quando um usuário clica no link de verificação enviado por e-mail, somente ele poderá usar o sistema.
Começando
Para começar, primeiro instalamos o pacote em nosso projeto Laravel. Abra o terminal no diretório raiz do seu projeto e execute o comando:
composer require beyondcode/laravel-confirm-email
Este pacote que adiciona verificação de e-mail aos seus projetos Laravel.
Depois de instalar o pacote, devemos executar um comando para publicar a migração e o arquivo de configuração.
php artisan vendor:publish --provider=BeyondCodeEmailConfirmationEmailConfirmationServiceProvider
Na users
tabela, este pacote adiciona duas colunas confirmed_at
e confirmation_code
. Vamos executar o comando de migração para adicionar essas colunas.
php artisan migrate
Configuração
Para enviar e-mail de ativação precisamos substituir AuthenticatesUsers
, RegistersUsers
e SendsPasswordResetEmails
traits com os fornecidos por este pacote.
Abra os arquivos abaixo em seu editor primeiro e então substituiremos as características uma por uma.
- appHttpControllersAuthLoginController.php
- appHttpControllersAuthRegisterController.php
- appHttpControllersAuthForgotPasswordController.php
Dos arquivos acima, substitua as declarações
use IlluminateFoundationAuthAuthenticatesUsers;
use IlluminateFoundationAuthRegistersUsers;
use IlluminateFoundationAuthSendsPasswordResetEmails;
Com
use BeyondCodeEmailConfirmationTraitsAuthenticatesUsers;
use BeyondCodeEmailConfirmationTraitsRegistersUsers;
use BeyondCodeEmailConfirmationTraitsSendsPasswordResetEmails;
Como estamos enviando um link de verificação em um e-mail de ativação, adicione as duas rotas a seguir em um routes/web.php
arquivo.
Route::name('auth.resend_confirmation')->get('/register/confirm/resend', 'AuthRegisterController@resendConfirmation');
Route::name('auth.confirm')->get('/register/confirm/{confirmation_code}', 'AuthRegisterController@confirm');
Quando um usuário clica no link de verificação, este pacote adiciona mensagens flash que contêm mensagens de erro / informações para os usuários. Para mostrar esta mensagem flash aos usuários, adicione o código abaixo no 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
.....
Também precisamos adicionar o código abaixo no resourcesviewsauthpasswordsemail.blade.php
.....
<div class="panel-body">
@if ($errors->has('confirmation') > 0) <div class="alert alert-danger" role="alert">
{!! $errors->first('confirmation') !!}
</div>
@endif
.....
É isso! Agora, quando um usuário fizer o registro em seu site, ele receberá um e-mail de ativação para confirmar sua conta. Por favor, compartilhe suas idéias na seção de comentários abaixo.
Artigos relacionados
- Como usar o Laravel Passport para autenticação REST API
- Como fazer upload de arquivo para S3 usando o sistema de arquivos Laravel