ระบบสมัครสมาชิกในเว็บทั่วไปนั้นหลายๆครั้งจำเป็นต้องยืนยัน email ก่อนที่จะเข้าสู่ระบบซึ่งทริควันนี้เราจะมาดูวิธีการทำระบบยืนยัน email โดยใช้ mailtrap.io หรือใครจะใช้ Email service ส่งจริงๆก็ได้ โดยสามารถ สมัคร Sendinblue บริการ email service
1. สร้าง project ด้วยคำสั่ง
laravel new emailProject && cd emailProject
หลังจากเข้ามาใน Folder emailProject ให้ทำการติดตั้ง package laravel/ui ผ่าน composer ด้วยคำสั่ง
composer require laravel/ui --dev && php artisan ui vue --auth
2. Implement Class MustVerifyEmail ใน User Model
ให้เราเข้าไปที่ App\User.php และเพิ่ม code ในบรรทัดที่ 5 และ 9 ซึ่ง class ที่เราจะนำมา implements คือ 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;
// ...
}
หลังจากนั้นรันคำสั่ง migrate เพื่อสร้าง database ที่เกี่ยวข้อง
php artisan migrate
3. แก้ไข Route ในไฟล์ web.php
ให้เราเข้าไปที่ Folder routes/web.php จากนั้นทำการเพิ่ม code ดังนี้
Auth::routes(['verify' => true]);
// ถ้าใครที่มี Auth::routes() อยู่แล้วให้เพิ่ม array เข้าไปแทน
['verify' => true]
4. ตั้งค่า Email smtp ใน Laravel สำหรับส่ง email
ในขั้นตอนนี้ต้องขออนุญาตใช้ smtp ที่เป็น fake smtp สำหรับทดลองส่งเมลด้วย Mailtrap.io หรือใครจะใช้ smtp ของ sendinblue เพื่อส่งเมลของจริงก็ได้ วิธีการการใช้งาน Mailtrap ผมจะขอมาเขียนโดยละเอียดทีหลังนะครับยังไงลองสมัครสมาชิกและเข้าไปในหน้า dashboard เราจะเจอหน้าตาแบบนี้
ให้เข้าไปที่ Demo Inbox จากนั้นเราจะเจอหน้าตาแบบนี้ ในส่วนของลูกศรสีแดงให้เลือกเป็น laravel
ให้เราทำการ copy config ในกล่องแรกมาเนื่องจากเป็น config ของไฟล์ .env จะได้หน้าตาแบบนี้ ให้ในไปใส่ในไฟล์ .env ของ project เราได้เลย
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=d7ad5be95c6c22
MAIL_PASSWORD=81cf9dd3495d8b
[email protected]
MAIL_FROM_NAME=Example
// เราสามารถเปลี่ยน MAIL_FROM_ADDRESS และ MAIL_FROM_NAME ได้ถ้าต้องการ เช่น
[email protected]
MAIL_FROM_NAME="เว็บไซต์ทดสอบ"
5. ตั้งค่า redirect เมื่อกดลิงก์ใน email
ในขั้นตอนนี้เราสามารถลองสมัครเว็บของเราได้ทันทีเราจะได้รับเมลที่ส่งไปยัง mailtrap.io ให้เราเปิดหน้า dashboard ค้างไว้เลยครับจะได้รับเมลแล้วให้ลองกดลิงก์จากในเมลเพื่อกลับมาเว็บเราได้เลย หลังจากที่ระบบยืนยันแล้วเราสามารถตั้งค่าได้ว่าจะส่งไปที่ path ไหนของเว็บไซต์โดยการตั้งค่าที่ไฟล์ app\VerificationController.php โดยตั้งค่าตัวแปร $redirect ได้ดังนี้
protected $redirectTo = '/dashboard';
สรุป
เท่านี้เราก็จะได้ระบบ Email Verification เรียบร้อยแล้ว ยังไงก็ฝากติดตาม page เพื่ออัพเดทข่าวสาร Laravel กันด้วยนะครับ