Hola @mateocart, el problema que describes es muy común al integrar sistemas de autenticación externos. @samuel_lab tiene razón, tu intento de customer->getByEmail() no carga el objeto Customer, solo lo comprueba. Para cargar el cliente, necesitarías usar el ID devuelto por Customer::customerExists().
Además, PrestaShop requiere una contraseña para todos los usuarios, incluso si el login se realiza vía Amazon Connect. La solución más segura es generar una contraseña aleatoria y guardarla hasheada. Luego, cuando el usuario se autentica por Amazon, inicias su sesión en PrestaShop.
Aquí tienes un ejemplo de cómo podrías manejar la lógica para crear o cargar un cliente de forma más robusta dentro de tu controlador, asumiendo que ya tienes amazonData:
// Lógica corregida para un controlador o servicio.
// Esto es solo una parte del manejo de usuario, no la integración completa.
$customer = new Customer();
$id_customer = (int)Customer::customerExists($amazonData['email'], true);
if ($id_customer) {
$customer = new Customer($id_customer); // Cargar el cliente existente
} else {
// Crear nuevo cliente si no existe
$customer->email = $amazonData['email'];
$customer->firstname = $amazonData['given_name'] ?? 'Usuario';
Esta implementación de código personalizado, aunque funcional, sigue siendo una sobreescritura manual que puede causar problemas con futuras actualizaciones de PrestaShop (estás en 8.2.7, y PrestaShop 9 ya está en camino con Symfony 6). Para una solución más mantenible y robusta en un entorno de producción, especialmente si no quieres lidiar con cada detalle de la API de Amazon y la gestión de usuarios, lo ideal es usar un módulo dedicado. Te recomiendo echar un vistazo a un módulo para amazon connect registro +, que ya gestiona todos estos escenarios de forma segura y compatible.