در این مقاله قصد داریم نحوه تایید آدرس ایمیل در لاراول 5.7 را آموزش دهیم. برای شروع باید یک سری تنظیمات را پیکربندی کنید. تایید ایمیل یکی از قابلیت های پرکاربرد در توسعه وب است و لاراول این کار را برای شما خیلی آسان کرده است.
composer create-project laravel/laravel emailVerify --prefer-dist # or laravel new emailVerify
داخل فولدر بروید
cd emailVerify
ویرایشگر یا IDE مورد علاقه خود را انتخاب کنید.
code .
یک پایگاه داده MySql ایجاد و مشخصات آن را در فایل .env که در روت پروژه قرار دارد بنویسید.
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=emailVerify DB_USERNAME=root DB_PASSWORD=root
حال با دستور زیر جدول ها را ایجاد کنید.
php artisan migrate
در زیر فیلدهای جدول User را می بینید و همان طور که مشاهده می کنید یک فیلد به نام email_veried_at داریم که برای اعتبارسنجی ایمیل از این فیلد استفاده می کنیم.
ستون email_verified_at به تازگی در لاراول 5.7 اضافه شده است. هنگامی که کاربری در سایت ثبت نام کرد، و ایمیلش را تایید می کند، یک مقدار timestamp در این ستون اضافه می شود و به این طریق می توانیم کاربرانی که ایمیل شان را تایید کرده اند و آنهایی که تایید نکرده اند را شناسایی کنیم، قبلا برای پیاده سازی این قابلیت از یک ستون با مقدار بولین استفاده می شد، اما امروزه از یک فیلد timestamp برای این منظور استفاده می شود.
به ترمینال رفته و دستور زیر را تایپ کنید.
php artisan make:auth
این دستور یک ویو به نام verify.blade.php ایجاد می کند. این یک قابلیت جدید در لاراول 5.7 برای پیاده سازی سیستم اعتبارسنجی است.
@extends('layouts.app') @section('content') <div class="container"> <div class="row justify-content-center"> <div class="col-md-8"> <div class="card"> <div class="card-header">{{ __('Verify Your Email Address') }}</div> <div class="card-body"> @if (session('resent')) <div class="alert alert-success" role="alert"> {{ __('A fresh verification link has been sent to your email address.') }} </div> @endif {{ __('Before proceeding, please check your email for a verification link.') }} {{ __('If you did not receive the email') }}, <a href="{{ route('verification.resend') }}">{{ __('click here to request another') }}</a>. </div> </div> </div> </div> </div> @endsection
در مدل user.php می بینید که یک قرارداد به نام 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; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'email', 'password', ]; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; }
فایل routes > web.php را باز کرده و یک پارامتر دیگر داخل Auth::routes() اضافه کنید.
Auth::routes(['verify' => true]);
اینکار یک کنترلر برای تایید ایمیل به همراه روت مرتبط با آن ایجاد می کند. می بینید که یک کنترلر جدید به نام VerificationController.php اضافه شده است. همچنین باید یک سری ویژگی امنیتی را به روت HomeController اضافه کنیم، که اینکار را با اضافه کردن یک middleware انجام می دهیم.
/** HomeController.php * Create a new controller instance. * * @return void */ public function __construct() { $this->middleware(['auth', 'verified']); }
در این مقاله من از سایت mailtrap استفاده می کنم. برای اینکار وارد سایت http://mailtrap.io/signin شوید، سپس وارد demo inbox شده و مشخصات سرور ایمیل رسانی را کپی و در فایل .env، paste کنید.
MAIL_DRIVER=smtp MAIL_HOST=smtp.mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null
ابتدا مرورگر را باز کرده و به آدرس http://localhost:8000/register بروید.
نتیجه را در تصویر زیر می بینید.
خب حالا به سایت mailtrap برگردید. همان طور که می بینید درخواست تایید ایمیل به آن ارسال شده است.
همچنین به پایگاه داده رفته و جدول user را مشاهده کنید. همان طور که می بینید ستون email_verified_at خالی است. حال درخواست تایید ایمیل که به سایت mailtrap ارسال شده است را تایید کنید. بعد از تایید همان طور که می بینید ستون email_verified_at با مقدار timestamp که مربوط به تاریخ و زمان تایید ایمیل توسط شما است، پر می شود.
به این ترتیب تواستیم قابلیت تایید ایمیل در لاراول 5.7 را به آسانی پیاده کنیم.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.