رفتن به نوشته‌ها

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

در این مقاله قصد داریم نحوه تایید آدرس ایمیل در لاراول 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 را به آسانی پیاده کنیم.

منتشر شده در برنامه نویسیLaravel (لاراول)