File tree Expand file tree Collapse file tree 5 files changed +28
-3
lines changed
Expand file tree Collapse file tree 5 files changed +28
-3
lines changed Original file line number Diff line number Diff line change @@ -59,7 +59,7 @@ public function login(Request $request): RedirectResponse
5959
6060 if ($ request ->user ()->can ('viewRoot ' ) && $ request ->user ()->shouldTwoFactorAuthenticate ($ request )) {
6161 $ request ->user ()->notify (
62- new AuthCodeNotification ($ request ->user ()->authCodes ()-> create ())
62+ new AuthCodeNotification ($ request ->user ()->generateAuthCode ())
6363 );
6464
6565 $ request ->session ()->flash ('status ' , __ ('The two factor authentication link has been sent! ' ));
Original file line number Diff line number Diff line change @@ -79,7 +79,7 @@ public function verify(Request $request): RedirectResponse
7979 */
8080 public function resend (Request $ request ): RedirectResponse
8181 {
82- $ code = $ request ->user ()->authCodes ()-> create ();
82+ $ code = $ request ->user ()->generateAuthCode ();
8383
8484 $ request ->user ()->notify (new AuthCodeNotification ($ code ));
8585
Original file line number Diff line number Diff line change 44
55namespace Cone \Root \Interfaces \Models ;
66
7+ use Cone \Root \Models \AuthCode ;
78use Illuminate \Database \Eloquent \Relations \HasMany ;
89use Illuminate \Database \Eloquent \Relations \HasOne ;
910use Illuminate \Database \Eloquent \Relations \MorphMany ;
@@ -34,4 +35,9 @@ public function authCodes(): HasMany;
3435 * Determine whether the object requires two factor authentication.
3536 */
3637 public function requiresTwoFactorAuthentication (): bool ;
38+
39+ /**
40+ * Generate a new auth code for the user.
41+ */
42+ public function generateAuthCode (): AuthCode ;
3743}
Original file line number Diff line number Diff line change @@ -23,7 +23,9 @@ class AuthCode extends Model implements Contract
2323 *
2424 * @var list<string>
2525 */
26- protected $ fillable = [];
26+ protected $ fillable = [
27+ 'code ' ,
28+ ];
2729
2830 /**
2931 * The table associated with the model.
Original file line number Diff line number Diff line change 1515use Illuminate \Foundation \Auth \User as Authenticatable ;
1616use Illuminate \Http \Request ;
1717use Illuminate \Notifications \Notifiable ;
18+ use Illuminate \Support \Facades \Date ;
1819
1920class User extends Authenticatable implements Contract
2021{
@@ -103,6 +104,22 @@ public function shouldTwoFactorAuthenticate(Request $request): bool
103104 return ! $ request ->session ()->has ('root.auth.two-factor ' );
104105 }
105106
107+ /**
108+ * Generate a new auth code for the user.
109+ */
110+ public function generateAuthCode (): AuthCode
111+ {
112+ $ this ->authCodes ()->delete ();
113+
114+ $ code = $ this ->authCodes ()->make ()->forceFill ([
115+ 'expires_at ' => Date::now ()->addMinutes (5 ),
116+ ]);
117+
118+ $ code ->save ();
119+
120+ return $ code ;
121+ }
122+
106123 /**
107124 * Generate a device token.
108125 */
You can’t perform that action at this time.
0 commit comments