summaryrefslogtreecommitdiff
path: root/app/Http/Controllers/ProfileController.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/Http/Controllers/ProfileController.php')
-rw-r--r--app/Http/Controllers/ProfileController.php60
1 files changed, 60 insertions, 0 deletions
diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php
new file mode 100644
index 0000000..a48eb8d
--- /dev/null
+++ b/app/Http/Controllers/ProfileController.php
@@ -0,0 +1,60 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Http\Requests\ProfileUpdateRequest;
+use Illuminate\Http\RedirectResponse;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\Redirect;
+use Illuminate\View\View;
+
+class ProfileController extends Controller
+{
+ /**
+ * Display the user's profile form.
+ */
+ public function edit(Request $request): View
+ {
+ return view('profile.edit', [
+ 'user' => $request->user(),
+ ]);
+ }
+
+ /**
+ * Update the user's profile information.
+ */
+ public function update(ProfileUpdateRequest $request): RedirectResponse
+ {
+ $request->user()->fill($request->validated());
+
+ if ($request->user()->isDirty('email')) {
+ $request->user()->email_verified_at = null;
+ }
+
+ $request->user()->save();
+
+ return Redirect::route('profile.edit')->with('status', 'profile-updated');
+ }
+
+ /**
+ * Delete the user's account.
+ */
+ public function destroy(Request $request): RedirectResponse
+ {
+ $request->validateWithBag('userDeletion', [
+ 'password' => ['required', 'current_password'],
+ ]);
+
+ $user = $request->user();
+
+ Auth::logout();
+
+ $user->delete();
+
+ $request->session()->invalidate();
+ $request->session()->regenerateToken();
+
+ return Redirect::to('/');
+ }
+}