create confirmEmailChange method in User controller

This commit is contained in:
2026-03-28 18:53:43 +01:00
parent 8e110244bb
commit f4caf50f40
+35
View File
@@ -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);
}
}
}