diff --git a/app/Actions/Server/DeleteServer.php b/app/Actions/Server/DeleteServer.php deleted file mode 100755 index 08daec83..00000000 --- a/app/Actions/Server/DeleteServer.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php - -namespace App\Actions\Server; - -use App\Models\Server; -use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Validator; -use Illuminate\Validation\ValidationException; - -class DeleteServer -{ - /** - * @throws ValidationException - */ - public function delete(Server $server, array $input): void - { - $this->validateDelete($input); - - DB::transaction(function () use ($server) { - $server->cleanDelete(); - }); - } - - /** - * @throws ValidationException - */ - protected function validateDelete(array $input): void - { - Validator::make($input, [ - 'confirm' => 'required|in:delete', - ])->validateWithBag('deleteServer'); - } -} diff --git a/app/Actions/Site/DeleteSite.php b/app/Actions/Site/DeleteSite.php deleted file mode 100755 index e2adc27a..00000000 --- a/app/Actions/Site/DeleteSite.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php - -namespace App\Actions\Site; - -use App\Models\Site; -use Illuminate\Support\Facades\Validator; -use Illuminate\Validation\ValidationException; - -class DeleteSite -{ - /** - * @throws ValidationException - */ - public function handle(Site $site, array $input): void - { - $this->validateDelete($input); - - $site->update(['status' => 'deleting']); - - $site->remove(); - } - - /** - * @throws ValidationException - */ - protected function validateDelete(array $input): void - { - Validator::make($input, [ - 'confirm' => 'required|in:delete', - ])->validateWithBag('deleteSite'); - } -} diff --git a/app/Http/Controllers/Auth/AuthenticatedSessionController.php b/app/Http/Controllers/Auth/AuthenticatedSessionController.php index 494a1064..41a59ed9 100644 --- a/app/Http/Controllers/Auth/AuthenticatedSessionController.php +++ b/app/Http/Controllers/Auth/AuthenticatedSessionController.php @@ -5,10 +5,10 @@ use App\Http\Controllers\Controller; use App\Http\Requests\Auth\LoginRequest; use App\Providers\RouteServiceProvider; +use Illuminate\Contracts\View\View; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; -use Illuminate\View\View; class AuthenticatedSessionController extends Controller { @@ -43,6 +43,6 @@ public function destroy(Request $request): RedirectResponse $request->session()->regenerateToken(); - return redirect('/'); + return redirect()->route('login'); } } diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 00faa213..0b93dc9f 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -148,9 +148,10 @@ <x-slot name="content"> <x-dropdown-link :href="route('profile')">Profile</x-dropdown-link> <div class="border-t border-gray-100 dark:border-gray-700"></div> - <form> - <x-dropdown-link as="button"> - Log Out + <form method="POST" action="{{ route('logout') }}"> + @csrf + <x-dropdown-link :href="route('logout')" onclick="event.preventDefault(); this.closest('form').submit();"> + {{ __('Log Out') }} </x-dropdown-link> </form> </x-slot> diff --git a/tests/Feature/Http/Auth/LogoutTest.php b/tests/Feature/Http/Auth/LogoutTest.php new file mode 100644 index 00000000..05fc0d2a --- /dev/null +++ b/tests/Feature/Http/Auth/LogoutTest.php @@ -0,0 +1,29 @@ +<?php + +namespace Tests\Feature\Http\Auth; + +use Illuminate\Foundation\Testing\RefreshDatabase; +use Tests\TestCase; + +class LogoutTest extends TestCase +{ + use RefreshDatabase; + + public function test_logout(): void + { + $this->actingAs($this->user); + + $this->post(route('logout'))->assertRedirect(route('login')); + + $this->assertFalse(auth()->check()); + } + + public function test_user_still_logged_in(): void + { + $this->actingAs($this->user); + + $this->get(route('login'))->assertRedirect(route('servers')); + + $this->assertTrue(auth()->check()); + } +}