Подтверждение Email
Введение
Многие веб-приложения требуют, чтобы пользователи подтверждали свои адреса электронной почты перед использованием приложения. Вместо того, чтобы заставлять вас повторно внедрять это в каждом приложении, Laravel предоставляет удобные методы для отправки и проверки адреса электронной почты пользователя.
Подготовка модели
Для начала убедитесь, что ваша модель App\User
реализует контракт Illuminate\Contracts\Auth\MustVerifyEmail
:
<?php
namespace App;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
class User extends Authenticatable implements MustVerifyEmail
{
use Notifiable;
// ...
}
Настройки базы данных
Столбец подтверждения Email
Ваша таблица users
должна содержать столбец email_verified_at
для хранения даты и времени, когда адрес электронной почты был проверен. По умолчанию миграция таблиц пользователей, включенная в инфраструктуру Laravel, уже включает этот столбец. Итак, все, что вам нужно сделать, это запустить миграцию базы данных:
php artisan migrate
Роутинг
Laravel включает класс Auth\VerificationController
, который содержит необходимую логику для отправки ссылок подтверждения email и проверки электронной почты. Чтобы зарегистрировать необходимые роуты для этого контроллера, передайте опцию verify
методу Auth::routes
Auth::routes(['verify' => true]);
Защита роутов
Посредников роута (Route middleware
) можно использовать, чтобы разрешить доступ только проверенным пользователям к данному роуту. Laravel поставляется с посредником verified
, который определен в Illuminate\Auth\Middleware\EnsureEmailIsVerified
. Поскольку это посредник уже зарегистрирован в app/Http/Kernel.php
вашего приложения, все, что вам нужно сделать, это подключить посредника к определению роута:
Route::get('profile', function () {
// Только для пользователей с подтвержденным адресом электронной почты...
})->middleware('verified');
Шаблоны
Для того чтобы сгенерировать все необходимые шаблоны для подтверждения электронной почты, Вы можете использовать пакет laravel/ui
для Composer:
composer require laravel/ui "^1.2" --dev
php artisan ui vue --auth
Шаблон подтверждения email адреса находится в resources/views/auth/verify.blade.php
. Вы можете изменять его на свое усмотрение.
Действие после подтверждения Email
После проверки адреса электронной почты пользователь будет автоматически перенаправлен на URL /home
. Вы можете настроить местоположение перенаправления после проверки, определив метод или свойство redirectTo
в VerificationController
:
protected $redirectTo = '/dashboard';
События
Laravel отправляет события во время процесса подтверждения email. Вы можете объявить слушателей этих событий в Вашем EventServiceProvider
:
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
'Illuminate\Auth\Events\Verified' => [
'App\Listeners\LogVerifiedUser',
],
];