diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 79bc1d6..f548689 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -418,5 +418,40 @@ class UserController extends Controller } } + public function confirmEmailChange(Request $request): JsonResponse + { + try { + $request->validate([ + 'token' => ['required', 'string'], + ]); + $user = User::where('email_change_token', hash('sha256', $request['token'])) + ->where('email_change_token_expires_at', '>', now()) + ->firstOrFail(); + + $newEmail = $user->pending_email; + $oldEmail = $user->email; + + $user->email = $newEmail; + $user->pending_email = null; + $user->email_change_token = null; + $user->email_change_token_expires_at = null; + $user->save(); + + $data = [ + 'name' => $user->name, + 'lastname' => $user->lastname, + 'newEmail' => $newEmail + ]; + Mail::to($newEmail)->send(new EmailChangeConfirmedMail($data)); + Mail::to($oldEmail)->send(new EmailChangeConfirmedMail($data)); + + return response()->json(['message' => 'Email mis à jour avec succès']); + } catch (ModelNotFoundException $e) { + return response()->json(['message' => 'Token invalide ou expiré'], 400); + } catch (\Exception $e) { + Log::error($e->getMessage()); + return response()->json(['message' => 'Server error'], 500); + } + } }