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',
    ],
];