Вступление

Многие веб-приложения требуют, чтобы пользователи проверяли свои адреса электронной почты перед использованием приложения. Вместо того, чтобы заставлять вас повторно внедрять это в каждом приложении, Laravel предоставляет удобные методы для отправки и проверки запросов на подтверждение электронной почты.

Подготовка модели

Для начала убедитесь, что ваша модель реализует контракт:App\UserIlluminate\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;

    // ...
}

 

База данных соображения

Столбец подтверждения по электронной почте

Затем ваша userтаблица должна содержать email_verified_atстолбец для хранения даты и времени проверки адреса электронной почты. По умолчанию usersмиграция таблиц, включенная в инфраструктуру Laravel, уже включает этот столбец. Итак, все, что вам нужно сделать, это запустить миграцию базы данных:

php artisan migrate

 

Маршрутизация

Laravel включает в себя класс, который содержит необходимую логику для отправки проверочных ссылок и проверки электронной почты. Чтобы зарегистрировать необходимые маршруты для этого контроллера, передайте опцию методу:Auth\VerificationControllerverifyAuth::routes

Auth::routes(['verify' => true]);

 

Защита маршрутов

Промежуточное программное обеспечение маршрута может использоваться, чтобы разрешить только проверенным пользователям доступ к данному маршруту. Laravel поставляется с verifiedпромежуточным программным обеспечением, которое определено в . Поскольку это промежуточное ПО уже зарегистрировано в ядре HTTP вашего приложения, все, что вам нужно сделать, это подключить промежуточное ПО к определению маршрута:Illuminate\Auth\Middleware\EnsureEmailIsVerified

Route::get('profile', function () {
    // Only verified users may enter...
})->middleware('verified');

 

Просмотры

Laravel создаст все необходимые виды проверки электронной почты при выполнении команды. Этот вид помещен в . Вы можете настроить это представление так, как вам нужно.make:authresources/views/auth/verify.blade.php

 

После проверки писем

После проверки адреса электронной почты пользователь будет автоматически перенаправлен на /home. Вы можете настроить местоположение перенаправления после проверки, определив redirectToметод или свойство в VerificationController:

protected $redirectTo = '/dashboard';

 

События

Laravel отправляет события в процессе проверки электронной почты. Вы можете прикрепить слушателей к этим событиям в своем EventServiceProvider:

/**
 * The event listener mappings for the application.
 *
 * @var array
 */
protected $listen = [
    'Illuminate\Auth\Events\Verified' => [
        'App\Listeners\LogVerifiedUser',
    ],
];