Skip to content

Commit 3273e45

Browse files
committed
Adding a bit of refactoring
1 parent cb61623 commit 3273e45

File tree

3 files changed

+40
-17
lines changed

3 files changed

+40
-17
lines changed

app/Http/Controllers/Auth/AuthenticatedSessionController.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use App\Http\Controllers\Controller;
66
use App\Http\Requests\Auth\LoginRequest;
7+
use App\Models\User;
78
use Illuminate\Http\RedirectResponse;
89
use Illuminate\Http\Request;
910
use Illuminate\Support\Facades\Auth;
@@ -30,7 +31,7 @@ public function create(Request $request): Response
3031
public function store(LoginRequest $request): RedirectResponse
3132
{
3233
// Find user by email
33-
$user = \App\Models\User::where('email', $request->email)->first();
34+
$user = User::where('email', $request->email)->first();
3435

3536
// If user exists, password is correct, and 2FA is enabled, redirect to challenge
3637
if ($user && $user->two_factor_confirmed_at && \Illuminate\Support\Facades\Hash::check($request->password, $user->password)) {

app/Http/Controllers/Auth/TwoFactorAuthenticatedSessionController.php

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,11 @@
33
namespace App\Http\Controllers\Auth;
44

55
use App\Http\Controllers\Controller;
6+
use App\Models\User;
67
use Illuminate\Http\Request;
78
use Illuminate\Support\Facades\Auth;
89
use Inertia\Inertia;
9-
use Laravel\Fortify\Actions\ConfirmTwoFactorAuthentication;
10-
use Laravel\Fortify\Actions\DisableTwoFactorAuthentication;
11-
use Laravel\Fortify\Actions\EnableTwoFactorAuthentication;
12-
use Laravel\Fortify\Actions\GenerateNewRecoveryCodes;
13-
use Laravel\Fortify\Features;
10+
1411

1512
class TwoFactorAuthenticatedSessionController extends Controller
1613
{
@@ -43,7 +40,7 @@ public function store(Request $request)
4340
]);
4441

4542
$userId = $request->session()->get('login.id');
46-
$user = \App\Models\User::find($userId);
43+
$user = User::find($userId);
4744

4845
if (! $user) {
4946
return redirect()->route('login');
@@ -79,12 +76,21 @@ public function store(Request $request)
7976
}
8077
$user->two_factor_recovery_codes = encrypt(json_encode($updatedCodes));
8178
$user->save();
82-
Auth::login($user, $request->session()->get('login.remember', false));
83-
$request->session()->regenerate();
84-
$request->session()->forget(['login.id', 'login.remember']);
85-
return redirect()->intended(route('dashboard', absolute: false));
79+
return $this->completeLogin($request, $user);
8680
}
8781

8882
return back()->withErrors(['code' => __('Please provide a valid two factor authentication code.')]);
8983
}
84+
85+
/**
86+
* Complete login and session management after successful 2FA.
87+
*/
88+
private function completeLogin(Request $request, $user)
89+
{
90+
Auth::login($user, $request->session()->get('login.remember', false));
91+
$request->session()->regenerate();
92+
$request->session()->forget(['login.id', 'login.remember']);
93+
return redirect()->intended(route('dashboard', absolute: false));
94+
}
9095
}
96+

app/Http/Controllers/Settings/TwoFactorAuthController.php

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,10 @@ class TwoFactorAuthController extends Controller
2222
*/
2323
public function edit(Request $request)
2424
{
25-
26-
2725
return Inertia::render('settings/two-factor', [
28-
'enabled' => !is_null($request->user()->two_factor_secret),
26+
'enabled' => $this->twoFactorEnabled($request->user()),
2927
'confirmed' => !is_null($request->user()->two_factor_confirmed_at),
30-
'recoveryCodes' => $request->user()->two_factor_secret ? json_decode(decrypt($request->user()->two_factor_recovery_codes)) : [],
28+
'recoveryCodes' => $this->getRecoveryCodes($request->user()),
3129
]);
3230
}
3331

@@ -149,15 +147,33 @@ public function qrCode(Request $request)
149147
*/
150148
public function recoveryCodes(Request $request)
151149
{
152-
if (empty($request->user()->two_factor_secret)) {
150+
if (!$this->twoFactorEnabled($request->user())) {
153151
return response('', 404);
154152
}
155153

156154
return response()->json([
157-
'recoveryCodes' => json_decode(decrypt($request->user()->two_factor_recovery_codes)),
155+
'recoveryCodes' => $this->getRecoveryCodes($request->user()),
158156
]);
159157
}
160158

159+
/**
160+
* Helper to check if 2FA is enabled for a user.
161+
*/
162+
private function twoFactorEnabled($user)
163+
{
164+
return !is_null($user->two_factor_secret);
165+
}
166+
167+
/**
168+
* Helper to get recovery codes for a user, or empty array if not enabled.
169+
*/
170+
private function getRecoveryCodes($user)
171+
{
172+
return $this->twoFactorEnabled($user)
173+
? json_decode(decrypt($user->two_factor_recovery_codes))
174+
: [];
175+
}
176+
161177
/**
162178
* Generate new recovery codes for the user.
163179
*

0 commit comments

Comments
 (0)