Skip to content

Commit 1f14184

Browse files
committed
wip
1 parent 8aebc30 commit 1f14184

File tree

5 files changed

+28
-3
lines changed

5 files changed

+28
-3
lines changed

src/Http/Controllers/Auth/LoginController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff 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!'));

src/Http/Controllers/Auth/TwoFactorController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff 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

src/Interfaces/Models/User.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace Cone\Root\Interfaces\Models;
66

7+
use Cone\Root\Models\AuthCode;
78
use Illuminate\Database\Eloquent\Relations\HasMany;
89
use Illuminate\Database\Eloquent\Relations\HasOne;
910
use 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
}

src/Models/AuthCode.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff 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.

src/Models/User.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Illuminate\Foundation\Auth\User as Authenticatable;
1616
use Illuminate\Http\Request;
1717
use Illuminate\Notifications\Notifiable;
18+
use Illuminate\Support\Facades\Date;
1819

1920
class 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
*/

0 commit comments

Comments
 (0)