Версия фреймворка: 6.x 5.4 4.2

Подтверждение 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',
    ],
];