Skip to content

Commit 8f1ea9f

Browse files
authored
[6.x] Fix color mode preference values (#14242)
1 parent 202d0eb commit 8f1ea9f

2 files changed

Lines changed: 24 additions & 1 deletion

File tree

src/Auth/User.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,9 @@ public function setPreferredLocale($locale)
358358

359359
public function preferredColorMode()
360360
{
361-
return $this->getPreference('color_mode') ?? 'auto';
361+
$mode = $this->getPreference('color_mode') ?? 'auto';
362+
363+
return in_array($mode, ['auto', 'light', 'dark'], true) ? $mode : 'auto';
362364
}
363365

364366
public function isTwoFactorAuthenticationRequired(): bool

tests/Auth/UserContractTests.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,27 @@ public function it_gets_preferred_locale()
357357
$this->assertEquals('en', $this->user()->preferredLocale());
358358
}
359359

360+
#[Test]
361+
#[DataProvider('preferredColorModeProvider')]
362+
public function it_gets_preferred_color_mode($stored, $expected)
363+
{
364+
$user = $this->makeUser();
365+
$user->setPreference('color_mode', $stored);
366+
367+
$this->assertEquals($expected, $user->preferredColorMode());
368+
}
369+
370+
public static function preferredColorModeProvider(): array
371+
{
372+
return [
373+
'null' => [null, 'auto'],
374+
'light' => ['light', 'light'],
375+
'dark' => ['dark', 'dark'],
376+
'auto' => ['auto', 'auto'],
377+
'invalid' => ['invalid', 'auto'],
378+
];
379+
}
380+
360381
#[Test]
361382
public function it_encrypts_a_password()
362383
{

0 commit comments

Comments
 (0)