diff --git a/src/Http/Controllers/CP/Auth/LoginController.php b/src/Http/Controllers/CP/Auth/LoginController.php index 736077df7cd..30ef753189a 100644 --- a/src/Http/Controllers/CP/Auth/LoginController.php +++ b/src/Http/Controllers/CP/Auth/LoginController.php @@ -52,7 +52,7 @@ public function showLoginForm(Request $request) private function oauthProviders() { - $redirect = parse_url(cp_route('index'))['path']; + $redirect = parse_url(cp_route('index'))['path'] ?? '/'; return OAuth::providers()->map(fn (Provider $provider) => [ 'name' => $provider->name(), diff --git a/tests/Auth/LoginTest.php b/tests/Auth/LoginTest.php index 8f4bd741145..3d71566815e 100644 --- a/tests/Auth/LoginTest.php +++ b/tests/Auth/LoginTest.php @@ -223,6 +223,31 @@ public function it_cant_logout_when_unauthenticated() $this->assertGuest(); } + #[Test] + #[DefineEnvironment('cpOnTopLevel')] + #[DefineEnvironment('addOauthProvider')] + public function it_shows_oauth_providers_even_if_cp_is_on_top_level() + { + $this + ->get(cp_route('login')) + ->assertInertia(fn ($page) => $page + ->component('auth/Login') + ->has('providers', 1) + ->where('oauthEnabled', true) + ); + } + + protected function cpOnTopLevel($app) + { + $app['config']->set('statamic.cp.route', ''); + } + + protected function addOauthProvider($app) + { + $app['config']->set('statamic.oauth.enabled', true); + $app['config']->set('statamic.oauth.providers', ['github']); + } + protected function disableTwoFactor($app) { $app['config']->set('statamic.users.two_factor_enabled', false);