Как отправить письмо активации в 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 Passport для аутентификации REST API
- Как загрузить файл на S3 с помощью файловой системы Laravel