Як надіслати електронний лист для активації в Laravel після реєстрації користувача
Laravel поставляється з потоком автентифікації, коли ми його встановлюємо. Він включає вхід, реєстрацію, потік забутих паролів у самому ядрі Laravel. Використовуючи цей вбудований потік, при реєстрації користувача вони безпосередньо отримують доступ до системи. Але що, якщо хтось хоче надіслати код підтвердження електронної пошти, перш ніж дозволити користувачеві використовувати програму. У цій статті ми вивчаємо, як надіслати електронний лист для активації в Laravel.
Ми надішлемо користувачеві електронний лист із підтвердженням. Коли користувач натискає посилання для підтвердження, надіслане в електронному листі, тоді лише він зможе користуватися системою.
Починаємо
Для початку ми спочатку встановлюємо пакет у проект Laravel. Відкрийте термінал у кореневому каталозі проекту та запустіть команду:
composer require beyondcode/laravel-confirm-email
Цей пакет, який додає підтвердження електронної пошти до ваших проектів Laravel.
Після встановлення пакету нам слід запустити команду для публікації міграції та файлу конфігурації.
php artisan vendor:publish --provider=BeyondCodeEmailConfirmationEmailConfirmationServiceProvider
У users
таблицю цей пакет додає два стовпці confirmed_at
та confirmation_code
. Запустимо команду міграції, щоб додати ці стовпці.
php artisan migrate
Конфігурація
Для того, щоб відправити електронну пошту активації нам потрібно замінити AuthenticatesUsers
, RegistersUsers
і SendsPasswordResetEmails
чорт з тими, що надаються цим пакетом.
Спершу відкрийте наведені нижче файли у вашому редакторі, після чого ми замінюємо ознаки по черзі.
- appHttpControllersAuthLoginController.php
- appHttpControllersAuthRegisterController.php
- appHttpControllersAuthForgotPasswordController.php
З вищевказаних файлів замінюйте твердження
use IlluminateFoundationAuthAuthenticatesUsers;
use IlluminateFoundationAuthRegistersUsers;
use IlluminateFoundationAuthSendsPasswordResetEmails;
С
use BeyondCodeEmailConfirmationTraitsAuthenticatesUsers;
use BeyondCodeEmailConfirmationTraitsRegistersUsers;
use BeyondCodeEmailConfirmationTraitsSendsPasswordResetEmails;
Оскільки ми надсилаємо посилання для підтвердження в електронному листі для активації, додайте у routes/web.php
файл наступні два маршрути .
Route::name('auth.resend_confirmation')->get('/register/confirm/resend', 'AuthRegisterController@resendConfirmation');
Route::name('auth.confirm')->get('/register/confirm/{confirmation_code}', 'AuthRegisterController@confirm');
Коли користувач натискає посилання для підтвердження, цей пакет додає флеш-повідомлення, що містять повідомлення про помилку / інформацію для користувачів. Щоб показати це флеш-повідомлення користувачам, додайте нижче код в 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
.....
Нам також потрібно додати нижче код в resourcesviewsauthpasswordsemail.blade.php
.....
<div class="panel-body">
@if ($errors->has('confirmation') > 0) <div class="alert alert-danger" role="alert">
{!! $errors->first('confirmation') !!}
</div>
@endif
.....
Це воно! Тепер, коли користувач реєструється на вашому веб-сайті, він отримає електронне повідомлення про активацію для підтвердження свого облікового запису. Будь ласка, поділіться своїми думками в розділі коментарів нижче.
Пов’язані статті
- Як використовувати паспорт Laravel для автентифікації REST API
- Як завантажити файл на S3 за допомогою файлової системи Laravel