Как отправить письмо активации в 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
