Come inviare e-mail di attivazione in Laravel dopo la registrazione dell’utente
Laravel viene fornito con il flusso di autenticazione quando lo installiamo. Include login, registrazione, flusso di password dimenticata nel core di Laravel stesso. Utilizzando questo flusso integrato, quando l’utente si registra, ottiene direttamente l’accesso al sistema. Ma cosa succede se qualcuno desidera inviare un codice di verifica e-mail prima di consentire a un utente di utilizzare l’applicazione. In questo articolo, studiamo come inviare e-mail di attivazione in Laravel.
Invieremo un’e-mail di conferma all’utente. Quando un utente fa clic sul collegamento di verifica inviato in un’e-mail, solo lui sarà in grado di utilizzare il sistema.
Iniziare
Per iniziare, installiamo prima il pacchetto nel nostro progetto Laravel. Apri il terminale nella directory principale del tuo progetto ed esegui il comando:
composer require beyondcode/laravel-confirm-email
Questo pacchetto che aggiunge la verifica e-mail ai tuoi progetti Laravel.
Dopo aver installato il pacchetto, dovremmo eseguire un comando per pubblicare la migrazione e il file di configurazione.
php artisan vendor:publish --provider=BeyondCodeEmailConfirmationEmailConfirmationServiceProvider
Nella users
tabella, questo pacchetto aggiunge due colonne confirmed_at
e confirmation_code
. Eseguiamo il comando di migrazione per aggiungere queste colonne.
php artisan migrate
Configurazione
Per inviare email di attivazione dobbiamo sostituire AuthenticatesUsers
, RegistersUsers
e SendsPasswordResetEmails
tratti con quelli forniti da questo pacchetto.
Apri prima i file sottostanti nel tuo editor, quindi sostituiamo i tratti uno per uno.
- appHttpControllersAuthLoginController.php
- appHttpControllersAuthRegisterController.php
- appHttpControllersAuthForgotPasswordController.php
Dai file di cui sopra sostituire le dichiarazioni
use IlluminateFoundationAuthAuthenticatesUsers;
use IlluminateFoundationAuthRegistersUsers;
use IlluminateFoundationAuthSendsPasswordResetEmails;
Con
use BeyondCodeEmailConfirmationTraitsAuthenticatesUsers;
use BeyondCodeEmailConfirmationTraitsRegistersUsers;
use BeyondCodeEmailConfirmationTraitsSendsPasswordResetEmails;
Poiché stiamo inviando il link di verifica in un’e-mail di attivazione, aggiungi i seguenti due percorsi in un routes/web.php
file.
Route::name('auth.resend_confirmation')->get('/register/confirm/resend', 'AuthRegisterController@resendConfirmation');
Route::name('auth.confirm')->get('/register/confirm/{confirmation_code}', 'AuthRegisterController@confirm');
Quando un utente fa clic sul collegamento di verifica, questo pacchetto aggiunge messaggi flash che contengono messaggi di errore/informazioni per gli utenti. Per mostrare questo messaggio flash agli utenti, aggiungi sotto il codice nel file 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
.....
Abbiamo anche bisogno di aggiungere sotto il codice nel resourcesviewsauthpasswordsemail.blade.php
.....
<div class="panel-body">
@if ($errors->has('confirmation') > 0) <div class="alert alert-danger" role="alert">
{!! $errors->first('confirmation') !!}
</div>
@endif
.....
Questo è tutto! Ora, quando un utente effettua la registrazione sul tuo sito Web, riceverà un’e-mail di attivazione per confermare il proprio account. Per favore condividi i tuoi pensieri nella sezione commenti qui sotto.
articoli Correlati
- Come utilizzare Laravel Passport per l’autenticazione API REST
- Come caricare file su S3 utilizzando Laravel Filesystem