4
4
5
5
use App \Http \Controllers \Controller ;
6
6
use Illuminate \Foundation \Auth \ResetsPasswords ;
7
+ use Illuminate \Http \Request ;
8
+ use App \Models \User ;
9
+ use Illuminate \Support \Facades \Mail ;
10
+ use Auth ;
7
11
8
12
class PasswordController extends Controller
9
13
{
10
- /*
11
- |--------------------------------------------------------------------------
12
- | Password Reset Controller
13
- |--------------------------------------------------------------------------
14
- |
15
- | This controller is responsible for handling password reset requests
16
- | and uses a simple trait to include this behavior. You're free to
17
- | explore this trait and override any methods you wish to tweak.
18
- |
19
- */
20
-
21
14
use ResetsPasswords;
22
15
23
16
/**
@@ -27,11 +20,81 @@ class PasswordController extends Controller
27
20
*/
28
21
protected $ redirectTo = '/dashboard ' ;
29
22
23
+ protected $ request ;
24
+ protected $ user ;
25
+
30
26
/**
31
27
* Create a new password controller instance.
32
28
*/
33
- public function __construct ()
29
+ public function __construct (User $ user , Request $ request )
34
30
{
35
31
$ this ->middleware ('guest ' );
32
+ $ this ->request = $ request ;
33
+ $ this ->user = $ user ;
34
+ }
35
+
36
+ public function postEmail ()
37
+ {
38
+ error_reporting (-1 );
39
+ ini_set ('display_errors ' , 'On ' );
40
+
41
+
42
+ $ params = $ this ->request ->all ();
43
+
44
+ $ validator = $ this ->validate ($ this ->request , [
45
+ 'email ' => 'required|email|exists:users '
46
+ ], [
47
+ 'exists ' => 'There is no user against the given email '
48
+ ]);
49
+
50
+ $ user = $ this ->user ->findByEmail ($ params ['email ' ]);
51
+ $ user ->token = str_random (32 );
52
+ $ user ->save ();
53
+
54
+ Mail::send ('auth.emails.password ' , [
55
+ 'token ' => $ user ->token ,
56
+ 'email ' => $ user ->email
57
+ ], function ($ message ) use ($ user ){
58
+ $ message ->to ($ user ->email , $ user ->name )->subject ('Dingo - Reset Password ' );
59
+ });
60
+
61
+ return redirect ('/ ' )->with ('status ' , 'A reset link been sent to your email address ' );
62
+ }
63
+
64
+ /**
65
+ * Reset the given user's password.
66
+ *
67
+ * @param \Illuminate\Http\Request $request
68
+ * @return \Illuminate\Http\Response
69
+ */
70
+ public function reset ()
71
+ {
72
+ $ request = $ this ->request ;
73
+ $ this ->validate ($ request , [
74
+ 'token ' => 'required ' ,
75
+ 'email ' => 'required|email|exists:users ' ,
76
+ 'password ' => 'required|confirmed|min:6 ' ,
77
+ ]);
78
+
79
+ $ credentials = $ request ->only (
80
+ 'email ' , 'password ' , 'password_confirmation ' , 'token '
81
+ );
82
+
83
+ $ user = $ this ->user ->findByEmail ($ credentials ['email ' ]);
84
+
85
+ if ($ user ->token != $ credentials ['token ' ]) {
86
+ return redirect ()->back ()
87
+ ->withInput ($ request ->only ('email ' ))
88
+ ->withErrors (['email ' => 'Invalid authentication token ' ]);
89
+ }
90
+
91
+ $ user ->password = bcrypt ($ credentials ['password ' ]);
92
+ $ user ->token = '' ;
93
+
94
+ $ user ->save ();
95
+
96
+ Auth::loginUsingId ($ user ->id );
97
+
98
+ return redirect ($ this ->redirectTo )->with ('status ' , 'Password successfuly reset ' );
36
99
}
37
100
}
0 commit comments