
Pendahuluan
Bayangin lagi ngerjain fitur sederhana, tapi pas mau handle forgot password malah pusing sendiri karena harus mikirin security dan flow email yang nggak boleh bocor. Jujur, pas awal-awal handle fitur ini, saya sering banget kena komplain user gara-gara token yang kedaluwarsa terlalu cepat atau email notifikasi yang masuk folder spam. Padahal, kalau kita manfaatin ekosistem Laravel dengan benar, fitur ini sebenernya bisa jadi salah satu bagian paling stabil di aplikasi kita.
Tips & Best Practices
- Di banyak project, biasanya saya mulai dari memisahkan logic pengiriman email ke dalam Job queue. Kita nggak mau user nunggu loading lama cuma gara-gara server smtp lagi lemot.
- Pengalaman saya, jangan pernah nampilin pesan error yang terlalu spesifik kayak 'Email tidak terdaftar'. Ini bahaya banget buat security, mending pakai pesan generik biar hacker nggak bisa scan user kita.
- Kalau lagi mantau log, selalu pastikan token password reset itu di-hash. Jangan simpen token mentah-mentah di database, cukup simpen hasil hash-nya aja buat verifikasi.
Contoh Kode
Biasanya saya pakai built-in feature dari Laravel dengan memodifikasi PasswordBroker. Nih, contoh gimana ngerjain custom logic buat handle request reset password:
public function sendResetLink(Request $request) {
$request->validate(['email' => 'required|email']);
$status = Password::broker()->sendResetLink($request->only('email'));
return $status === Password::RESET_LINK_SENT
? back()->with('status', 'Cek email kamu ya!')
: back()->withErrors(['email' => 'Gagal ngirim email.']);
}Variasi Implementasi
Beda project, beda kebutuhan. Kalau aplikasinya super secure, biasanya saya nambahin fitur 'one-time token' yang langsung angus setelah dipake sekali. Tapi, kalau aplikasi internal yang simpel, pake default Laravel Passport atau Fortify itu udah sangat cukup. Pilih yang sesuai sama skala aplikasi, jangan over-engineering kalau emang nggak perlu.
Kesalahan Umum
- Lupa ngetes email yang masuk ke spam, padahal usernya nungguin.
- Terlalu banyak ngasih info di halaman reset, bikin celah buat enum user.
- Nggak nge-set expiration time token di config, jadi tokennya bisa dipake selamanya.
- Lupa nambahin throttling di route, nanti endpoint-nya bisa di-brute force orang iseng.
- Nggak pake HTTPS, jadinya link reset password yang dikirim lewat email bisa disadap di tengah jalan.
Ringkasan
Intinya, fitur forgot password itu bukan cuma soal ngirim email, tapi soal gimana kita ngebangun kepercayaan user lewat alur yang mulus dan aman. Kalau kita udah paham cara kerja flow Laravel yang 'out-of-the-box', sisanya tinggal soal ngatur experience-nya aja biar user nggak bingung pas mereka lagi panik karena lupa password.
Komentar
Posting Komentar