diff --git a/src/Providers/AppServiceProvider.php b/src/Providers/AppServiceProvider.php index eb86a32e02a..b9aa25e36ed 100644 --- a/src/Providers/AppServiceProvider.php +++ b/src/Providers/AppServiceProvider.php @@ -357,7 +357,7 @@ private function registerElevatedSessionMacros() } return Carbon::createFromTimestamp($lastElevated) - ->addMinutes(config('statamic.users.elevated_session_duration', 15)) + ->addMinutes((float) config('statamic.users.elevated_session_duration', 15)) ->timestamp; }); diff --git a/tests/Auth/ElevatedSessionTest.php b/tests/Auth/ElevatedSessionTest.php index 32b1324e9be..ae83c518ccf 100644 --- a/tests/Auth/ElevatedSessionTest.php +++ b/tests/Auth/ElevatedSessionTest.php @@ -76,6 +76,26 @@ public function it_can_get_status_of_elevated_session() ]); } + /** + * @see https://github.com/statamic/cms/pull/14771 + **/ + #[Test] + public function it_handles_string_config_value_for_elevated_session_duration() + { + config(['statamic.users.elevated_session_duration' => '15.5']); + + $this + ->withElevatedSession(now()->subMinutes(5)) + ->actingAs($this->user) + ->get('/cp/elevated-session') + ->assertOk() + ->assertJson([ + 'elevated' => true, + 'expiry' => now()->addMinutes(10.5)->timestamp, + 'method' => 'password_confirmation', + ]); + } + #[Test] public function it_can_get_status_of_elevated_session_when_session_key_does_not_exist() {