Selain login dan register, fitur reset password adalah bagian vital dari setiap sistem otentikasi. Fitur ini memungkinkan pengguna untuk mendapatkan kembali akses ke akun mereka jika mereka lupa kata sandinya. Proses ini melibatkan pengiriman email, pembuatan token unik, dan validasi data.
Untungnya, Laravel telah mengintegrasikan semua logika ini secara default melalui paket seperti Laravel Breeze, yang kita gunakan di tutorial sebelumnya. Jika kamu sudah mengikuti tutorial #26, sebagian besar pekerjaan sudah selesai. Pada tutorial ini, kita akan belajar cara menggunakan dan menguji fitur reset password yang sudah ada.
1. Memahami Alur Kerja Reset Password
Secara teknis, fitur reset password di Laravel bekerja melalui alur yang terstruktur dan aman:
- Permintaan: Pengguna mengklik “Lupa Kata Sandi?” dan memasukkan alamat email mereka.
- Pembuatan Token: Laravel mencari akun dengan alamat email tersebut. Jika ditemukan, ia akan membuat token unik dan menyimpannya di tabel
password_reset_tokensdi database. - Pengiriman Email: Sebuah email dikirim ke alamat pengguna yang berisi tautan khusus dengan token tersebut.
- Validasi & Reset: Ketika pengguna mengklik tautan, mereka akan dibawa ke halaman untuk memasukkan kata sandi baru. Laravel memvalidasi token dari URL dengan yang ada di database. Jika cocok, kata sandi diupdate, dan token dihapus.
- Selesai: Pengguna berhasil masuk dengan kata sandi baru mereka.
2. Persiapan Awal: Konfigurasi Email
Fitur reset password membutuhkan kemampuan aplikasi untuk mengirim email. Untuk tujuan pengembangan dan pengujian, cara terbaik adalah menggunakan Mailtrap atau sejenisnya, yang berfungsi sebagai server SMTP palsu yang menangkap semua email yang dikirim.
- Daftar akun gratis di Mailtrap.
- Di dashboard Mailtrap, temukan kredensial SMTP Settings (host, port, username, password).
- Buka file
.envdi root folder proyek Laravel kamu. Ubah konfigurasiMAIL_sesuai dengan kredensial dari Mailtrap.BashMAIL_MAILER=smtp MAIL_HOST=smtp.mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=your_mailtrap_username MAIL_PASSWORD=your_mailtrap_password MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=hello@example.com MAIL_FROM_NAME="${APP_NAME}"Ganti
your_mailtrap_usernamedanyour_mailtrap_passworddengan kredensial milikmu. - Pastikan tabel
password_reset_tokenssudah ada di database kamu. Tabel ini dibuat secara otomatis oleh perintahphp artisan migratesaat menginstal Breeze.
3. Menggunakan Fitur Reset Password
Jika kamu sudah menginstal Laravel Breeze, semua views (tampilan) dan routes (rute) untuk reset password sudah tersedia.
- Akses Halaman Login: Buka browser dan kunjungi halaman login di
http://127.0.0.1:8000/login. - Klik Lupa Kata Sandi: Di bawah form login, kamu akan menemukan tautan “Forgot your password?“. Klik tautan tersebut.
- Masukkan Email: Kamu akan diarahkan ke halaman
/forgot-password. Masukkan alamat email yang sudah terdaftar di aplikasi (misalnya, email yang kamu gunakan saat mendaftar di tutorial #26) dan klik tombol “Email Password Reset Link”. - Cek Email di Mailtrap: Buka akun Mailtrap kamu. Kamu seharusnya akan melihat email baru yang masuk dari aplikasi Laravel kamu. Buka email tersebut dan klik tautan “Reset Password”.
- Atur Kata Sandi Baru: Tautan tersebut akan mengarahkanmu ke halaman
/reset-password. Di sana, kamu bisa memasukkan kata sandi baru. Setelah mengisi dan mengkonfirmasi kata sandi, klik tombol “Reset Password”.
Jika berhasil, kamu akan dialihkan kembali ke halaman login. Kamu sekarang bisa login dengan kata sandi yang baru saja kamu buat.
4. Kustomisasi (Opsional)
Seluruh proses reset password yang disediakan oleh Laravel sangat bisa diubah sesuai kebutuhanmu.
- Tampilan: Kamu bisa mengedit tampilan halaman-halaman reset password di direktori
resources/views/auth/. - Logika: Untuk mengkustomisasi logika pengiriman email, validasi token, atau proses reset, kamu bisa memodifikasi atau memperluas controller yang relevan di
app/Http/Controllers/Auth/.
Dengan memahami alur kerja dan konfigurasi yang sudah kita bahas, kamu bisa yakin bahwa fitur reset password di aplikasi Laravel kamu berjalan dengan aman dan efisien.