Hola @hugoonline, @alejandrolab tiene razón. El problema con tu enfoque es que estás asignando propiedades directamente al objeto Context y Cookie sin pasar por el proceso completo de inicio de sesión que PrestaShop espera. Esto omite validaciones y la regeneración segura de la sesión, lo que lleva a sesiones inestables o que no persisten.
Para PrestaShop 1.7.x, la forma más limpia y segura de establecer un cliente en el contexto desde el Back Office (por ejemplo, en un override de AdminCustomersController o un módulo personalizado) es utilizando el método updateCustomer() del Context. Esto maneja la lógica de sesión de forma adecuada:
// En override/controllers/admin/AdminCustomersController.php
class AdminCustomersController extends AdminCustomersControllerCore
{
public function postProcess() // postProcess es mejor para manejar acciones POST
{
if (Tools::isSubmit('loginAsCustomer') && ($id_customer = Tools::getValue('id_customer'))) {
$customer = new Customer((int)$id_customer);
if (Validate::isLoadedObject($customer)) {
// Esta es la forma correcta de actualizar el contexto del cliente
Context::getContext()->updateCustomer($customer);
Este fragmento asegura que la sesión del cliente se establezca correctamente con todas las variables y seguridad necesarias. Recuerda que hacer overrides en el core siempre tiene el riesgo de conflictos con futuras actualizaciones. Para una solución más mantenible y robusta en un entorno de producción, especialmente si necesitas más funcionalidades, te recomiendo considerar un módulo dedicado como Iniciar sesión como cliente que gestiona estas complejidades de forma segura y sin modificar archivos core.