🔹 เกริ่นนำ
ระบบ “ลืมรหัสผ่าน” เป็นฟีเจอร์สำคัญในเว็บแอปพลิเคชัน Laravel มีระบบ Password Reset ให้พร้อมใช้งานทันทีผ่าน Starter Kit เช่น Breeze ซึ่งรวมทั้งหน้าแบบฟอร์มสำหรับใส่อีเมล ลิงก์ reset ผ่านอีเมล และฟอร์มสำหรับตั้งรหัสผ่านใหม่
บทนี้จะแนะนำการตั้งค่าและใช้งานระบบ password reset อย่างรวดเร็ว พร้อมจุดที่สามารถปรับแต่งได้ เช่น การเปลี่ยนรูปแบบอีเมล หรือปรับ validation
🔸 Route ที่เกี่ยวข้อง (Laravel Breeze)
Route::get('/forgot-password', [PasswordResetLinkController::class, 'create'])->name('password.request');
Route::post('/forgot-password', [PasswordResetLinkController::class, 'store'])->name('password.email');
Route::get('/reset-password/{token}', [NewPasswordController::class, 'create'])->name('password.reset');
Route::post('/reset-password', [NewPasswordController::class, 'store'])->name('password.update');
🔸 ขั้นตอนการใช้งาน
- ผู้ใช้เข้า
/forgot-password
และใส่อีเมล - Laravel จะส่งลิงก์ที่มี token ไปยังอีเมลนั้น
- ผู้ใช้คลิกลิงก์แล้วกรอกรหัสผ่านใหม่ที่
/reset-password/{token}
🔸 การตั้งค่า Mail ใน .env
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=your_username
MAIL_PASSWORD=your_password
MAIL_ENCRYPTION=null
[email protected]
MAIL_FROM_NAME="My App"
💡 ในการใช้งานจริงควรเชื่อมต่อกับ SMTP จริง เช่น Gmail, SendGrid หรือ Mailgun