Så här skickar du aktiverings-e-post i Laravel efter användarregistrering
Laravel kommer med autentiseringsflöde när vi installerar det. Det inkluderar inloggning, registrering, glömt lösenordsflöde i själva Laravel-kärnan. Med hjälp av det här inbyggda flödet får de direkt tillgång till systemet när användaren registrerar sig. Men vad händer om någon vill skicka e-postverifieringskod innan användaren får använda appen. I den här artikeln studerar vi hur man skickar aktiverings-e-post till Laravel.
Vi kommer att skicka ett bekräftelsemail till användaren. När en användare klickar på verifieringslänken som skickas i ett e-postmeddelande kommer bara han att kunna använda systemet.
Komma igång
För att komma igång installerar vi först paketet i vårt Laravel-projekt. Öppna terminalen i din projektkatalog och kör kommandot:
composer require beyondcode/laravel-confirm-email
Detta paket som lägger till e-postverifiering till dina Laravel-projekt.
Efter att ha installerat paketet ska vi köra ett kommando för att publicera migreringen och konfigurationsfilen.
php artisan vendor:publish --provider=BeyondCodeEmailConfirmationEmailConfirmationServiceProvider
I users
tabellen lägger detta paket till två kolumner confirmed_at
och confirmation_code
. Låt oss köra migreringskommandot för att lägga till dessa kolumner.
php artisan migrate
Konfiguration
För att skicka aktiveringsbrev vi behöver byta AuthenticatesUsers
, RegistersUsers
och SendsPasswordResetEmails
egenskaper med dem som tillhandahålls av detta paket.
Öppna nedanstående filer i din redigerare först ersätter vi egenskaperna en efter en.
- appHttpControllersAuthLoginController.php
- appHttpControllersAuthRegisterController.php
- appHttpControllersAuthForgotPasswordController.php
Från ovanstående filer ersätter uttalandena
use IlluminateFoundationAuthAuthenticatesUsers;
use IlluminateFoundationAuthRegistersUsers;
use IlluminateFoundationAuthSendsPasswordResetEmails;
Med
use BeyondCodeEmailConfirmationTraitsAuthenticatesUsers;
use BeyondCodeEmailConfirmationTraitsRegistersUsers;
use BeyondCodeEmailConfirmationTraitsSendsPasswordResetEmails;
När vi skickar en verifieringslänk i ett aktiverings-e-postmeddelande, lägg till följande två rutter i en routes/web.php
fil.
Route::name('auth.resend_confirmation')->get('/register/confirm/resend', 'AuthRegisterController@resendConfirmation');
Route::name('auth.confirm')->get('/register/confirm/{confirmation_code}', 'AuthRegisterController@confirm');
När en användare klickar på verifieringslänken lägger detta paket till flashmeddelanden som innehåller fel / informationsmeddelande för användarna. För att visa detta flashmeddelande för användare, lägg till nedanstående kod i 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
.....
Vi måste också lägga till nedanstående kod i resourcesviewsauthpasswordsemail.blade.php
.....
<div class="panel-body">
@if ($errors->has('confirmation') > 0) <div class="alert alert-danger" role="alert">
{!! $errors->first('confirmation') !!}
</div>
@endif
.....
Det är allt! Nu när en användare registrerar sig på din webbplats får de ett aktiverings-e-postmeddelande för att bekräfta sitt konto. Dela dina tankar i kommentarsektionen nedan.
relaterade artiklar
- Hur man använder Laravel Passport för REST API-autentisering
- Hur laddar jag upp filen till S3 med Laravel Filesystem