Jump to content

he pasado clientes de un prestashop a otro


juanunlin

Recommended Posts

he pasado clientes de un prestashop a otro de la misma versin con sus direcciones y con sus grupos a traves de mysql y ahora cuando intento entrar con la cuenta de esos clientes a la parte de mi cuenta en el frontpage me dice error de autentificacion

Link to comment
Share on other sites

he pasado clientes de un prestashop a otro de la misma versin con sus direcciones y con sus grupos a traves de mysql y ahora cuando intento entrar con la cuenta de esos clientes a la parte de mi cuenta en el frontpage me dice error de autentificacion

¿Pero lo has realizado con el tema de la cookie key?

  • Like 1
Link to comment
Share on other sites

Pues ahí está tu problema, que la contraseña no está bien encriptada. Como dice nadie, en el fichero settings.inc.php tienes la constante COOKIE_KEY que se usa para encriptar/desencriptar las contraseñas. Al ser diferente en cada instalación, no te sirve de una tienda a otra.

 

Una solución es copiar el valor que tiene en tu anterior tienda y así los clientes tendrán acceso, pero por otro lado perderás la contraseña para entrar a la administración de la tienda. Como supongo que será mas sencillo cambiar tus contraseñas de la administración que las de los clientes, copia la cookie_key de tu tienda de origen y la pegas en tu tienda nueva. Después vete a http://www.md5.fr/ copias la cookie_key seguido de una contraseña que quieras, le das a generar md5 y el resultado lo pegas como contraseña en tu usuario de administración. Esto lo tendrás que hacer directamente sobre la bbdd.

Link to comment
Share on other sites

Pues ahí está tu problema, que la contraseña no está bien encriptada. Como dice nadie, en el fichero settings.inc.php tienes la constante COOKIE_KEY que se usa para encriptar/desencriptar las contraseñas. Al ser diferente en cada instalación, no te sirve de una tienda a otra.

 

 

http://www.prestasho...ost__p__1062466

 

Edit file ../config/settings.inc.php , and add :

define('_COOKIE_KEY_OLD_', 'YOUR_PS_V.1.4.9_COOKIE_KEY_');

 

Edit file ../override/classes/Customer.php, and add :

	public function getByEmail_old($email, $passwd = null, $ignore_guest = true)
{
	if (!Validate::isEmail($email) || ($passwd && !Validate::isPasswd($passwd)))
		die (Tools::displayError());

	$sql = 'SELECT *
			FROM `'._DB_PREFIX_.'customer`
			WHERE `email` = \''.pSQL($email).'\'
				'.Shop::addSqlRestriction(Shop::SHARE_CUSTOMER).'
				'.(isset($passwd) ? 'AND `passwd` = \''.Tools::encrypt_old($passwd).'\'' : '').'
				AND `deleted` = 0'.
				($ignore_guest ? ' AND `is_guest` = 0' : '');

	$result = Db::getInstance()->getRow($sql);

	if (!$result)
		return false;
	$this->id = $result['id_customer'];
	foreach ($result as $key => $value)
		if (key_exists($key, $this))
			$this->{$key} = $value;

	return $this;
}

 

 

Edit file ../override/classes/Tools.php, and add :

	public static function encrypt_old($passwd)
{
	return md5(_COOKIE_KEY_OLD_.$passwd);
}

 

Edit file ../override/controllers/front/AuthController.php, and add :

 

	protected function processSubmitLogin()
{
	Hook::exec('actionBeforeAuthentication');
	$passwd = trim(Tools::getValue('passwd'));
	$email = trim(Tools::getValue('email'));
	if (empty($email))
		$this->errors[] = Tools::displayError('E-mail address required');
	elseif (!Validate::isEmail($email))
		$this->errors[] = Tools::displayError('Invalid e-mail address');
	elseif (empty($passwd))
		$this->errors[] = Tools::displayError('Password is required');
	elseif (!Validate::isPasswd($passwd))
		$this->errors[] = Tools::displayError('Invalid password');
	else
	{
		$customer = new Customer();
		$authentication = $customer->getByEmail(trim($email), trim($passwd));
		$authentication_old = $customer->getByEmail_old(trim($email), trim($passwd));
		if ((!$authentication AND !$authentication_old) || !$customer->id)
			$this->errors[] = Tools::displayError('Authentication failed');
		else
		{
			$this->context->cookie->id_compare = isset($this->context->cookie->id_compare) ? $this->context->cookie->id_compare: CompareProduct::getIdCompareByIdCustomer($customer->id);
			$this->context->cookie->id_customer = (int)($customer->id);
			$this->context->cookie->customer_lastname = $customer->lastname;
			$this->context->cookie->customer_firstname = $customer->firstname;
			$this->context->cookie->logged = 1;
			$customer->logged = 1;
			$this->context->cookie->is_guest = $customer->isGuest();
			$this->context->cookie->passwd = $customer->passwd;
			$this->context->cookie->email = $customer->email;

			// Add customer to the context
			$this->context->customer = $customer;

			if (Configuration::get('PS_CART_FOLLOWING') && (empty($this->context->cookie->id_cart) || Cart::getNbProducts($this->context->cookie->id_cart) == 0))
				$this->context->cookie->id_cart = (int)Cart::lastNoneOrderedCart($this->context->customer->id);

			// Update cart address
			$this->context->cart->id = $this->context->cookie->id_cart;
			$this->context->cart->setDeliveryOption(null);
			$this->context->cart->id_address_delivery = Address::getFirstCustomerAddressId((int)($customer->id));

			$this->context->cart->id_address_invoice = Address::getFirstCustomerAddressId((int)($customer->id));
			$this->context->cart->secure_key = $customer->secure_key;
			$this->context->cart->update();
			$this->context->cart->autosetProductAddress();

			Hook::exec('actionAuthentication');

			// Login information have changed, so we check if the cart rules still apply
			CartRule::autoRemoveFromCart($this->context);
			CartRule::autoAddToCart($this->context);

			if (!$this->ajax)
			{
				if ($back = Tools::getValue('back'))
					Tools::redirect(html_entity_decode($back));
				Tools::redirect('index.php?controller=my-account');
			}
		}
	}
	if ($this->ajax)
	{
		$return = array(
			'hasError' => !empty($this->errors),
			'errors' => $this->errors,
			'token' => Tools::getToken(false)
		);
		die(Tools::jsonEncode($return));
	}
	else
		$this->context->smarty->assign('authentification_error', $this->errors);
}

 

Finally

create csv file to update XX_customer_group table database for all id_customer

set group to 3 (customer), and import to your Prestashop database

 

Done :)

  • Like 1
Link to comment
Share on other sites

Me parece más sencillo cambiar la contraseña de los empleados, generalmente no suele haber muchos y en 2 minutos lo tienes hecho. De echo, la contraseña de los empleados posiblemente la conozcas y no hace falta cambiarla, simplemente generar su nuevo md5.

Link to comment
Share on other sites

No se cual de los dos caminos has tomado, supongo que será lo que te ha dicho Nadie porque son modificaciones de código.

En todo caso, si haces un cambio y deja de funcionar, la solución está en deshacer los cambios.

 

Primera norma para hacer cambios de código es siempre hacer una copia de seguridad de los ficheros que se van a cambiar y más cuando no sabes lo que estás haciendo.

Link to comment
Share on other sites

Bueno, habría que ver lo que significa la página totalmente cambiada, pero si cambias la cookie_key el único problema que deberías de tener sería el de acceder a tus cuentas tanto de clientes como de administración. Siempre que he realizado este cambio no me ha afectado para nada a la vista de la tienda.

 

A ver si alguien te puede decir si le ha pasado lo mismo. Estaría bien también ver la web para ver que problemas hay.

Link to comment
Share on other sites

Como decía a mi nunca me ha pasado esto, pero puede que se solucione limpiando las cookies cuando cambies la cookie_key. Vuelve a poner la que necesitas y limpia las cookies, debería de funcionarte perfectamente.

Link to comment
Share on other sites

Me parece más sencillo cambiar la contraseña de los empleados, generalmente no suele haber muchos y en 2 minutos lo tienes hecho. De echo, la contraseña de los empleados posiblemente la conozcas y no hace falta cambiarla, simplemente generar su nuevo md5.

Habia entendido que hablabamos de los clientes no de los empleados. (aunque hablemos de la misma cookie key)

 

De todos modos, la modificación que te he pasado, es muy sencilla, no creo que conlleve tanta dificultad si te dan ya el codigo preparado.

 

he eliminado las cookies del explorador y ya vuelve a ir bien, pero al cambiar la cookie key me cambia todo el aspecto de la pagina, como podria solucionar eso

?¿?

 

¿El aspecto en que sentido?

  • Like 1
Link to comment
Share on other sites

si a ver lo que hecho es cambiar los clientes de una tienda a otra, y le puesto a ambas la cookey-key de la nueva es decir, no me deja entrar en los clientes q ya tenia registrados y no solo eso sino q me cambia todo el aspecto del apartado mi cuenta. Nadie el codigo ese q pusiste no loo tienes para 1.5.4

jesa si quieres te lo djo por privado para ver la reaccion.

Link to comment
Share on other sites

le puesto a ambas la cookey-key de la nueva es decir, no me deja entrar en los clientes q ya tenia registrados

 

A ver...si tienes una tienda A con clientes registrados y los quieres pasar a una tienda B, tienes que copiar la cookie_key de la tienda A en la tienda B no al contrario porque si haces eso ahora no entrarás en ninguna de las dos...

 

Si quieres pasar por privado la tienda no hay problema, aunque antes de probar nada hay que tener claro que cambios hay realizados respecto a la cookie_key

Link to comment
Share on other sites

 

Gracias Nadie !

 

Con eso he conseguido mantener las contraseñas funcionando de los clientes de mi tienda actual, y conservar las contraseñas de los otros clientes que he importado de una tienda antigua que tenia, al tener las dos cookies_key metidas, la antigua y la nueva y al crear los overrides que se mencionan en el enlace que mencionas.

Edited by Raul Martinez (see edit history)
Link to comment
Share on other sites

nadie yo no encuentro la situacion de los archivos, nose donde esta tools y customer, los he buscado por otro lado pero me dan error

 

Hola,

 

Me llamo Raul Martinez,

 

Te comento como he probado yo el aporte que te ha comentado "Nadie"

 

Tienes que crear los fichero tu y meterlos en las rutas mencionadas, porque son overrides, (no están creados, tienes que crearlos y meter el contenido)

 

Esto a mi me ha servido para el caso de que yo ya tenia clientes en mi tienda, y habia importado clientes de otra tienda por sql, y queria conservar la contraseñas de ambos clientes, y lo del enlace me ha servido para eso.

 

Supongo que tu también buscas eso ¿no?

Link to comment
Share on other sites

ya e conseguido recuperar la cookie y ahora me deja entrar con los clientes q tenia, pero se carga todo el diseñpo de la pagina y cuando elimino el cookie q ha generado entoces se sale de la cuenta, a q se puede deber, cual es el paso q deberia seguir ahora??

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...