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