From 24c0a94e33911efd14e56dd136afc7afe37fbc61 Mon Sep 17 00:00:00 2001 From: RVxLab Date: Sun, 28 Mar 2021 21:01:22 +0200 Subject: [PATCH] Add the ability to define a post logout route This defaults to filament.auth.login --- config/filament.php | 11 +++++++++++ src/Http/Livewire/Auth/Logout.php | 2 +- tests/Feature/Auth/LogoutTest.php | 24 ++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/config/filament.php b/config/filament.php index 16ca354fa1..5cc5f2641b 100644 --- a/config/filament.php +++ b/config/filament.php @@ -51,6 +51,17 @@ return [ 'guard' => env('FILAMENT_AUTH_GUARD', 'filament'), ], + /* + |-------------------------------------------------------------------------- + | Logout redirect URL + |-------------------------------------------------------------------------- + | + | Sometimes you may wish to lead to a different route after logging out. + | + */ + + 'logout_redirect_route' => 'filament.auth.login', + /* |-------------------------------------------------------------------------- | Pages diff --git a/src/Http/Livewire/Auth/Logout.php b/src/Http/Livewire/Auth/Logout.php index 737eec15fd..97a1bd9a20 100644 --- a/src/Http/Livewire/Auth/Logout.php +++ b/src/Http/Livewire/Auth/Logout.php @@ -18,6 +18,6 @@ class Logout extends Component { Filament::auth()->logout(); - return redirect()->route('filament.auth.login'); + return redirect()->route(config('filament.logout_redirect_route', 'filament.auth.login')); } } diff --git a/tests/Feature/Auth/LogoutTest.php b/tests/Feature/Auth/LogoutTest.php index 865632c330..26c4e4123a 100644 --- a/tests/Feature/Auth/LogoutTest.php +++ b/tests/Feature/Auth/LogoutTest.php @@ -5,6 +5,7 @@ namespace Filament\Tests\Feature\Auth; use Filament\Http\Livewire\Auth\Logout; use Filament\Models\User; use Filament\Tests\TestCase; +use Illuminate\Support\Facades\Route; use Livewire\Livewire; class LogoutTest extends TestCase @@ -22,4 +23,27 @@ class LogoutTest extends TestCase $this->assertGuest(); } + + /** @test */ + public function can_log_out_with_user_defined_route() + { + Route::get('/custom-post-logout', [ + 'as' => 'logout.custom', + 'action' => function () { + return 'This is a custom logout route'; + }, + ]); + + config()->set('filament.logout_redirect_route', 'logout.custom'); + + $user = User::factory()->create(); + + $this->be($user); + + Livewire::test(Logout::class) + ->call('submit') + ->assertRedirect(route('logout.custom')); + + $this->assertGuest(); + } }