آموزش نحوه تایید ایمیل در لاراول 5.7

31 شهریور 1397
Email-Verification-Laravel-5.7-New-Feature

در این مقاله قصد داریم نحوه تایید آدرس ایمیل در لاراول 5.7 را آموزش دهیم. برای شروع باید یک سری تنظیمات را پیکربندی کنید. تایید ایمیل یکی از قابلیت های پرکاربرد در توسعه وب است و لاراول این کار را برای شما خیلی آسان کرده است.

سرفصل های این آموزش

  • نصب لاراول 5.7 و پیکربندی پایگاه داده
  • چهارچوب بندی سیستم احراز هویت در لاراول 5.7
  • پیاده سازی اینترفیس mustVerity در مدل User
  • اضافه کردن روت تایید ایمیل
  • پیکربندی تظیمات ایمیل
  • تست قابلیت تایید ایمیل

1- نصب لاراول 5.7 و پیکربندی پایگاه داده

composer create-project laravel/laravel emailVerify --prefer-dist

# or

laravel new emailVerify

نصب لاراول 5.7

داخل فولدر بروید

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 برای این منظور استفاده می شود.

2- چهارچوب بندی سیستم احراز هویت در لاراول 5.7

به ترمینال رفته و دستور زیر را تایپ کنید.

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

3- پیاده سازی اینترفیس mustVerify در مدل User

در مدل 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',
    ];
}

4- اضافه کردن روت تایید ایمیل

فایل 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']);
    }

5- تنطیمات پیکربندی ایمیل

در این مقاله من از سایت 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

6- تست قابلیت تایید ایمیل

ابتدا مرورگر را باز کرده و به آدرس http://localhost:8000/register بروید.

نتیجه را در تصویر زیر می بینید.

ارسال متن برای تایید ایمیل

خب حالا به سایت mailtrap برگردید. همان طور که می بینید درخواست تایید ایمیل به آن ارسال شده است.

متن تایید ایمیل در سایت mailtrap

همچنین به پایگاه داده رفته و جدول user را مشاهده کنید. همان طور که می بینید ستون email_verified_at خالی است. حال درخواست تایید ایمیل که به سایت mailtrap ارسال شده است را تایید کنید. بعد از تایید همان طور که می بینید ستون email_verified_at با مقدار timestamp که مربوط به تاریخ و زمان تایید ایمیل توسط شما است، پر می شود.

به این ترتیب تواستیم قابلیت تایید ایمیل در لاراول 5.7 را به آسانی پیاده کنیم.

نویسنده شوید
دیدگاه‌های شما (3 دیدگاه)

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

امین
15 آذر 1397
سلام من میخام سیستم Sms هم اضاف کنم که برای کاربر هم sms فعالسازی بفرستم باید چیکار کنم با توجه به تغییرات جدید این نسخه از لاراول

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

حفاظ
17 آبان 1397
من در لاراول ۵.7 خود چنین فایل ندارم. verify.blade.php میشه توضیح بدهید؟

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

omid
22 مهر 1397
سلام عالی بود میشه طریقه تنظیم قالب ایمیل رو هم بگین که چه جوری میشه اختصاصی کرد متن و صفحه تایید ایمیل رو

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

سعید ایمانی
23 مهر 1397
سلام برای اینکار فایل verify.blade.php را مطابق با سلیقه خود ویرایش کنید

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.