Skip to content

Commit fc8fe49

Browse files
committed
Adding restructure to routes and removing unneccessary controller
1 parent 691a917 commit fc8fe49

File tree

6 files changed

+65
-95
lines changed

6 files changed

+65
-95
lines changed

app/Http/Controllers/Settings/DeleteController.php

Lines changed: 0 additions & 48 deletions
This file was deleted.

app/Http/Controllers/Settings/ProfileController.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Illuminate\Contracts\Auth\MustVerifyEmail;
88
use Illuminate\Http\RedirectResponse;
99
use Illuminate\Http\Request;
10+
use Illuminate\Support\Facades\Auth;
1011
use Illuminate\Support\Facades\Redirect;
1112
use Inertia\Inertia;
1213
use Inertia\Response;
@@ -39,4 +40,25 @@ public function update(ProfileUpdateRequest $request): RedirectResponse
3940

4041
return Redirect::route('profile.edit');
4142
}
43+
44+
/**
45+
* Delete the user's profile.
46+
*/
47+
public function destroy(Request $request): RedirectResponse
48+
{
49+
$request->validate([
50+
'password' => ['required', 'current_password'],
51+
]);
52+
53+
$user = $request->user();
54+
55+
Auth::logout();
56+
57+
$user->delete();
58+
59+
$request->session()->invalidate();
60+
$request->session()->regenerateToken();
61+
62+
return Redirect::to('/');
63+
}
4264
}

resources/js/Components/Settings/DeleteUser.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export default function DeleteUser() {
2929
const deleteUser: FormEventHandler = (e) => {
3030
e.preventDefault();
3131

32-
destroy(route('delete.destroy'), {
32+
destroy(route('profile.destroy'), {
3333
preserveScroll: true,
3434
onSuccess: () => closeModal(),
3535
onError: () => passwordInput.current?.focus(),

routes/web.php

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,28 +16,24 @@
1616
]);
1717
})->name('home');
1818

19-
Route::middleware('auth')->group(function () {
19+
Route::get('dashboard', function(){
20+
return Inertia::render('Dashboard');
21+
})->middleware(['auth', 'verified'])->name('dashboard');
2022

21-
Route::get('/dashboard', function () {
22-
return Inertia::render('Dashboard');
23-
})->name('dashboard');
23+
Route::middleware('auth')->group(function () {
2424

2525
Route::redirect('settings', 'settings/profile');
2626

2727
Route::get('settings/profile', [ProfileController::class, 'edit'])->name('profile.edit');
2828
Route::patch('settings/profile', [ProfileController::class, 'update'])->name('profile.update');
29+
Route::delete('settings/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
2930

3031
Route::get('settings/password', [PasswordController::class, 'edit'])->name('password.edit');
3132
Route::put('settings/password', [PasswordController::class, 'update'])->name('password.update');
3233

3334
Route::get('settings/appearance', function () {
3435
return Inertia::render('Settings/Appearance');
3536
})->name('appearance');
36-
37-
Route::get('settings/delete', [DeleteController::class, 'edit'])->name('delete.edit');
38-
Route::delete('settings/delete', [DeleteController::class, 'destroy'])->name('delete.destroy');
39-
40-
//Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
4137
});
4238

4339
require __DIR__.'/auth.php';

tests/Feature/Settings/DeleteAccountTest.php

Lines changed: 0 additions & 37 deletions
This file was deleted.

tests/Feature/Settings/ProfileUpdateTest.php

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,40 @@
4949

5050
$this->assertNotNull($user->refresh()->email_verified_at);
5151
});
52+
53+
54+
// Delete Profile Tests
55+
56+
test('user can delete their account', function () {
57+
$user = User::factory()->create();
58+
59+
$response = $this
60+
->actingAs($user)
61+
->delete('/settings/profile', [
62+
'password' => 'password',
63+
]);
64+
65+
$response
66+
->assertSessionHasNoErrors()
67+
->assertRedirect('/');
68+
69+
$this->assertGuest();
70+
$this->assertNull($user->fresh());
71+
});
72+
73+
test('correct password must be provided to delete account', function () {
74+
$user = User::factory()->create();
75+
76+
$response = $this
77+
->actingAs($user)
78+
->from('/settings/profile')
79+
->delete('/settings/profile', [
80+
'password' => 'wrong-password',
81+
]);
82+
83+
$response
84+
->assertSessionHasErrors('password')
85+
->assertRedirect('/settings/profile');
86+
87+
$this->assertNotNull($user->fresh());
88+
});

0 commit comments

Comments
 (0)