Skip to content

Commit 14215a7

Browse files
committed
Refactor a little bit...
1 parent 92d2592 commit 14215a7

File tree

3 files changed

+28
-21
lines changed

3 files changed

+28
-21
lines changed

src/Auth/User.php

+5
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,11 @@ public function getCpSearchResultBadge(): string
358358
return __('User');
359359
}
360360

361+
public function getElevatedSessionMethod(): string
362+
{
363+
return $this->password() ? 'password_confirmation' : 'verification_code';
364+
}
365+
361366
protected function getComputedCallbacks()
362367
{
363368
return Facades\User::getComputedCallbacks();

src/Http/Controllers/CP/Auth/ElevatedSessionController.php

+8-21
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,11 @@ public function status(Request $request)
1818
$response = [
1919
'elevated' => $request->hasElevatedSession(),
2020
'expiry' => $request->getElevatedSessionExpiry(),
21-
'method' => $user->password() ? 'password_confirmation' : 'verification_code',
21+
'method' => $user->getElevatedSessionMethod(),
2222
];
2323

24-
if (! $request->hasElevatedSession() && $response['method'] === 'verification_code') {
25-
session()->put(
26-
key: 'statamic_elevated_session_verification_code',
27-
value: $verificationCode = Str::random(20)
28-
);
29-
30-
$user->notify(new ElevatedSessionVerificationCode($verificationCode));
24+
if (! $request->hasElevatedSession() && $user->getElevatedSessionMethod() === 'verification_code') {
25+
session()->sendElevatedSessionVerificationCode();
3126
}
3227

3328
return $response;
@@ -36,19 +31,13 @@ public function status(Request $request)
3631
public function showForm()
3732
{
3833
$user = User::current();
39-
$method = $user->password() ? 'password_confirmation' : 'verification_code';
40-
41-
if ($method === 'verification_code') {
42-
session()->put(
43-
key: 'statamic_elevated_session_verification_code',
44-
value: $verificationCode = Str::random(20)
45-
);
4634

47-
$user->notify(new ElevatedSessionVerificationCode($verificationCode));
35+
if ($user->getElevatedSessionMethod() === 'verification_code') {
36+
session()->sendElevatedSessionVerificationCode();
4837
}
4938

5039
return view('statamic::auth.confirm-password', [
51-
'method' => $method,
40+
'method' => $user->getElevatedSessionMethod(),
5241
]);
5342
}
5443

@@ -61,15 +50,13 @@ public function confirm(Request $request)
6150
'verification_code' => 'required_without:password',
6251
]);
6352

64-
$method = $request->password ? 'password_confirmation' : 'verification_code';
65-
6653
if ($request->password && ! Hash::check($request->password, $user->password())) {
6754
throw ValidationException::withMessages([
6855
'password' => [__('statamic::validation.current_password')],
6956
]);
7057
}
7158

72-
if ($request->verification_code && $request->verification_code !== $request->session()->get('statamic_elevated_session_verification_code')) {
59+
if ($request->verification_code && $request->verification_code !== $request->getElevatedSessionVerificationCode()) {
7360
throw ValidationException::withMessages([
7461
'verification_code' => [__('statamic::validation.elevated_session_verification_code')],
7562
]);
@@ -79,6 +66,6 @@ public function confirm(Request $request)
7966

8067
return $request->wantsJson()
8168
? $this->status($request)
82-
: redirect()->intended(cp_route('index'))->with('success', $method === 'password_confirmation' ? __('Password confirmed') : __('Code verified'));
69+
: redirect()->intended(cp_route('index'))->with('success', $user->getElevatedSessionMethod() === 'password_confirmation' ? __('Password confirmed') : __('Code verified'));
8370
}
8471
}

src/Providers/CpServiceProvider.php

+15
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use Illuminate\Support\Facades\Session;
1010
use Illuminate\Support\Facades\View;
1111
use Illuminate\Support\ServiceProvider;
12+
use Illuminate\Support\Str;
1213
use Statamic\CP\Utilities\UtilityRepository;
1314
use Statamic\Extensions\Translation\Loader;
1415
use Statamic\Extensions\Translation\Translator;
@@ -22,6 +23,7 @@
2223
use Statamic\Http\View\Composers\SessionExpiryComposer;
2324
use Statamic\Licensing\LicenseManager;
2425
use Statamic\Licensing\Outpost;
26+
use Statamic\Notifications\ElevatedSessionVerificationCode;
2527

2628
class CpServiceProvider extends ServiceProvider
2729
{
@@ -127,8 +129,21 @@ private function registerElevatedSessionMacros()
127129
->timestamp;
128130
});
129131

132+
Request::macro('getElevatedSessionVerificationCode', function () {
133+
return session()->get('statamic_elevated_session_verification_code');
134+
});
135+
130136
Session::macro('elevate', function () {
131137
$this->put('statamic_elevated_session', now()->timestamp);
132138
});
139+
140+
Session::macro('sendElevatedSessionVerificationCode', function () {
141+
session()->put(
142+
key: 'statamic_elevated_session_verification_code',
143+
value: $verificationCode = Str::random(20)
144+
);
145+
146+
User::current()->notify(new ElevatedSessionVerificationCode($verificationCode));
147+
});
133148
}
134149
}

0 commit comments

Comments
 (0)