You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
1.5 KiB

  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Requests\ProfileUpdateRequest;
  4. use Illuminate\Contracts\Auth\MustVerifyEmail;
  5. use Illuminate\Http\RedirectResponse;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Support\Facades\Auth;
  8. use Illuminate\Support\Facades\Redirect;
  9. use Inertia\Inertia;
  10. use Inertia\Response;
  11. class ProfileController extends Controller
  12. {
  13. /**
  14. * Display the user's profile form.
  15. */
  16. public function edit(Request $request): Response
  17. {
  18. return Inertia::render('Profile/Edit', [
  19. 'mustVerifyEmail' => $request->user() instanceof MustVerifyEmail,
  20. 'status' => session('status'),
  21. ]);
  22. }
  23. /**
  24. * Update the user's profile information.
  25. */
  26. public function update(ProfileUpdateRequest $request): RedirectResponse
  27. {
  28. $request->user()->fill($request->validated());
  29. if ($request->user()->isDirty('email')) {
  30. $request->user()->email_verified_at = null;
  31. }
  32. $request->user()->save();
  33. return Redirect::route('profile.edit');
  34. }
  35. /**
  36. * Delete the user's account.
  37. */
  38. public function destroy(Request $request): RedirectResponse
  39. {
  40. $request->validate([
  41. 'password' => ['required', 'current_password'],
  42. ]);
  43. $user = $request->user();
  44. Auth::logout();
  45. $user->delete();
  46. $request->session()->invalidate();
  47. $request->session()->regenerateToken();
  48. return Redirect::to('/');
  49. }
  50. }