(Bu çözüm zaten laravel içerisinde mevcut
https://laravel.com/docs/5.2/authentication#resetting-passwords
Öncelikle ayrı bir tablonuz olacak. Tablo alanları:
email, token, created_at
Kullanıcı şifresini sıfırlamak istediğinde şifremi unuttum linkini tıklayacak. Karşısına çıkan formda email adresini girecek (ekstra bilgiler de isteyebilirsiniz).
Formu gönderdiğinde emaili kontrol edeceksiniz, email varsa şifre sıfırlama tablosuna:
- email adresini işleyeceksiniz
- rastgele bir token oluşturup token alanına işleyecesiniz (FRpLwcuxmdFEKf5P gibi).
- sıfırlama isteğinin oluşturulduğu tarihi created_at alanına işleyeceksiniz.
Daha sonra kullanıcının email adresine içerisinde şifre sıfırlamasını sağlayacak bir link göndereceksiniz. Bu link şu şekilde olacak örneğin:
http://domain.com/password/reset/FRpLwcuxmdFEKf5P
Bu link için bir route ve controller olacak, örneğin PasswordController
reset yöntemi içerisinde tokenı şifre sıfırlama tablonuzdan kontrol edeceksiniz:
- Böyle bir token var mı
- Oluşturulalı 24 saat geçti mi (ya da linkin kaç saat geçerli olmasını istiyorsanız)
Şartlara uyuyorsa tablodan kullanıcı emailini de alıp bir formda email, şifre ve şifre tekrarı isteyeceksiniz. Forma ayrıca tokenı da hidden olarak eklemeyi unutmayın
Kullanıcı bilgileri girdikten sonra tekrar tokeni email, şifre tekrarı kontrolleri yapıp kullanıcının şifresini girdiği email ve şifreye göre değiştireceksiniz.
Şifre sıfırlama tablosundan ilgili tokenın bulunduğu satırı sildireceksiniz.