create confirmEmailChange method in User controller
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user