نسخه:

تایید ایمیل

معرفی

بسیاری از برنامه های کاربردی وب از کاربران می خواهند که آدرس ایمیل خود را قبل از استفاده از برنامه تأیید کنند. لاراول به جای اینکه شما را مجبور به اجرای مجدد آن در هر برنامه کند، روش های مناسبی برای ارسال و تأیید درخواست های تأیید ایمیل ارائه می دهد.

آماده سازی مدل

برای شروع، بررسی کنید که 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;
 
// ...
}

هنگامی که این رابط به مدل شما اضافه شد، کاربرانی که به تازگی ثبت نام کرده اند به طور خودکار ایمیلی حاوی پیوند تأیید ایمیل برای شما ارسال می شود. همانطور که با بررسی خود مشاهده می کنید EventServiceProvider ، لاراول از قبل حاوی SendEmailVerificationNotification شنونده ای است که به Illuminate\Auth\Events\Registered رویداد متصل شده است.

ملاحظات پایگاه داده

ستون تأیید ایمیل

در مرحله بعد، user جدول شما باید دارای email_verified_at ستونی برای ذخیره تاریخ و زمانی باشد که آدرس ایمیل تأیید شده است. به‌طور پیش‌فرض، users انتقال جدول همراه با فریمورک لاراول از قبل شامل این ستون می‌شود. بنابراین، تنها کاری که باید انجام دهید این است که مهاجرت های پایگاه داده خود را اجرا کنید:

php artisan migrate

مسیریابی

لاراول شامل Auth\VerificationController کلاسی است که حاوی منطق لازم برای ارسال لینک های تایید و تایید ایمیل ها است. برای ثبت مسیرهای لازم برای این کنترلر، verify گزینه را به Auth::routes متد ارسال کنید:

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

حفاظت از مسیرها

میان‌افزار Route می‌تواند فقط برای اجازه دسترسی کاربران تأیید شده به یک مسیر مشخص استفاده شود. لاراول با یک verified میان افزار ارسال می شود که در تعریف شده است Illuminate\Auth\Middleware\EnsureEmailIsVerified . از آنجایی که این میان افزار قبلاً در هسته HTTP برنامه شما ثبت شده است، تنها کاری که باید انجام دهید این است که میان افزار را به یک تعریف مسیر متصل کنید:

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

بازدیدها

برای ایجاد تمام نمای لازم برای تأیید ایمیل، می‌توانید از laravel/ui بسته Composer استفاده کنید:

composer require laravel/ui
 
php artisan ui vue --auth

نمای تأیید ایمیل در قرار داده شده است resources/views/auth/verify.blade.php . شما آزاد هستید که این نما را در صورت نیاز برای برنامه خود سفارشی کنید.

بعد از تایید ایمیل ها

پس از تأیید یک آدرس ایمیل، کاربر به طور خودکار به هدایت می شود /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',
],
];