Jak wysłać e-mail aktywacyjny w Laravel po rejestracji użytkownika?
Laravel jest wyposażony w przepływ uwierzytelniania, gdy go instalujemy. Obejmuje logowanie, rejestrację, przepływ zapomnianego hasła w samym rdzeniu Laravel. Korzystając z tego wbudowanego przepływu, po zarejestrowaniu użytkownik uzyskuje bezpośredni dostęp do systemu. Ale co, jeśli ktoś chce wysłać e-mailowy kod weryfikacyjny przed zezwoleniem użytkownikowi na korzystanie z aplikacji. W tym artykule dowiemy się, jak wysłać e-mail aktywacyjny w Laravel.
Wyślemy użytkownikowi wiadomość e-mail z potwierdzeniem. Gdy użytkownik kliknie w link weryfikacyjny przesłany w wiadomości e-mail, tylko on będzie mógł korzystać z systemu.
Pierwsze kroki
Aby rozpocząć, najpierw instalujemy pakiet w naszym projekcie Laravel. Otwórz terminal w katalogu głównym projektu i uruchom polecenie:
composer require beyondcode/laravel-confirm-email
Ten pakiet, który dodaje weryfikację e-mail do twoich projektów Laravel.
Po zainstalowaniu pakietu powinniśmy uruchomić polecenie, aby opublikować migrację i plik konfiguracyjny.
php artisan vendor:publish --provider=BeyondCodeEmailConfirmationEmailConfirmationServiceProvider
W users
tabeli ten pakiet dodaje dwie kolumny confirmed_at
i confirmation_code
. Uruchommy polecenie migracji, aby dodać te kolumny.
php artisan migrate
Konfiguracja
Aby wysłać e-mail aktywacyjny, musimy zamienić AuthenticatesUsers
, RegistersUsers
a SendsPasswordResetEmails
cechy na te, które zapewnia ten pakiet.
Najpierw otwórz poniższe pliki w swoim edytorze, a następnie zastąpimy cechy jeden po drugim.
- appHttpControllersAuthLoginController.php
- appHttpControllersAuthRegisterController.php
- appHttpControllersAuthForgotPasswordController.php
Z powyższych plików zastąp oświadczenia
use IlluminateFoundationAuthAuthenticatesUsers;
use IlluminateFoundationAuthRegistersUsers;
use IlluminateFoundationAuthSendsPasswordResetEmails;
Z
use BeyondCodeEmailConfirmationTraitsAuthenticatesUsers;
use BeyondCodeEmailConfirmationTraitsRegistersUsers;
use BeyondCodeEmailConfirmationTraitsSendsPasswordResetEmails;
Ponieważ wysyłamy link weryfikacyjny w e-mailu aktywacyjnym, dodaj następujące dwie trasy w routes/web.php
pliku.
Route::name('auth.resend_confirmation')->get('/register/confirm/resend', 'AuthRegisterController@resendConfirmation');
Route::name('auth.confirm')->get('/register/confirm/{confirmation_code}', 'AuthRegisterController@confirm');
Gdy użytkownik kliknie łącze weryfikacyjne, ten pakiet dodaje wiadomości flash, które zawierają komunikat o błędzie/informację dla użytkowników. Aby wyświetlić tę wiadomość flash użytkownikom, dodaj poniższy kod w 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
.....
Musimy również dodać poniższy kod w resourcesviewsauthpasswordsemail.blade.php
.....
<div class="panel-body">
@if ($errors->has('confirmation') > 0) <div class="alert alert-danger" role="alert">
{!! $errors->first('confirmation') !!}
</div>
@endif
.....
Otóż to! Teraz, gdy użytkownik dokona rejestracji w Twojej witrynie, otrzyma e-mail aktywacyjny, aby potwierdzić swoje konto. Podziel się swoimi przemyśleniami w sekcji komentarzy poniżej.
Powiązane artykuły
- Jak używać Laravel Passport do uwierzytelniania REST API?
- Jak przesłać plik do S3 za pomocą systemu plików Laravel?