rasdri Posted March 23, 2009 Share Posted March 23, 2009 Bonjour,aprés avoir lu avec attention ces 2 posts :http://www.prestashop.com/forums/viewthread/10016/installatie___configuratie/migratie_vanaf_oscommercehttp://www.prestashop.com/forums/viewthread/4872/general_discussion/solvedresolu_import_customer_and_encrypt_passwordje ne troouve pas de solutions à mon problème:je cherche à importer mes clients de mon ancien oscommerce vers prestashop. Le problème que certains ont déjà du rencontrer est que les mots de passe dans oscommerce sont crypté différemment que sur prestashop. Est ce que quelqu'un aurait déjà réussi à récupérer les mots de passe oscommerce pour quils soient valides prestashop.J ai bien saisi que sur presta, les mots de passe sont crypté de cette facon :md5(_COOKIE_KEY_.mot_de_passe_du_client)le pb serait de décrypter les mot de passe de oscommerce pour les obtenir et les réencrypter à la sauce prestashop mais je vois mal comment réussir à décrypter du md5.Quelqu'un a t il déjà fait cela ?? si oui merci de poster votre solution Link to comment Share on other sites More sharing options...
Damien Metzger Posted March 23, 2009 Share Posted March 23, 2009 Tu ne peux pas décrypter.L'astuce consiste donc à rajouter un bout de code dans le login qui crypte les mots de passe entrés par les utilisateurs comme OSC. Si la comparaison est bonne, hop tu le ré-enregistres comme PrestaShop.C'est donc l'utilisateur qui rempli automatiquement son mot de passe à la prochaine identification. Link to comment Share on other sites More sharing options...
rasdri Posted March 23, 2009 Author Share Posted March 23, 2009 merci pour la réponse rapideje suis pas sur d avoir tout compris...peux tu me détailler un tout petit peu stp :>>L’astuce consiste donc à rajouter un bout de code dans le login qui crypte les mots de passe entrés par les utilisateurs comme OSCC'est sur quelle page qu'il faut que je fasse ca stp je vois pas bien là...? moi je cherche à importer les clients via l'import de presta qui marche trés bien; que doiis je renseigner pour le mot de passe lors de l'import car c est un champ obligatoire?>>Si la comparaison est bonne, hop tu le ré-enregistres comme PrestaShop.tu veux dire qu'il faut que je vérifie sur mon ancienne table de clients??si tu peux me détailler un tout petit peu ca serait trés sympa, je te demande pas de m'écrire le code mais juste les étapes avec les peges correspondantes si possible...merci d'avance Link to comment Share on other sites More sharing options...
rasdri Posted March 23, 2009 Author Share Posted March 23, 2009 Ok alors je me répond pour ceux que ca interresse...merci pour le tuyau Damien j ai fini par comprendre, dis moi si je me trompe ou s'il y a plus simple...dans la classe customer.php j ai donc rajouté une vérification. j ai importé ma table customer de oscommerce dans la base prestashopsi le pwd est pas bon pour la table customer de presta, je regarde s'il existe un client avec cet email sur customer de osc, si oui, je recupère son pwd, je regarde si le pwd renseigné correspond avec le pwd oscommerce en utilisant la fonction tep_validate_password de osc.si c est bon je prend le pwd renseigné par le client et je l'encode à la manière prestashop, et j insère le client avec les données que j avais sur la table customer de osc.La prochaine étape : récupérer ses commandes !!!à+ Link to comment Share on other sites More sharing options...
Damien Metzger Posted March 23, 2009 Share Posted March 23, 2009 C'est une des nombreuses manières de faire ce que j'ai dit oui Link to comment Share on other sites More sharing options...
Marc Posted March 23, 2009 Share Posted March 23, 2009 BonsoirCela me parait bien compliqué il n'y a pas plus simple ??Pour ma part j'avais penser d'envoyer un mail aux clients en leur signalant que n'ayant pas accès à leurs mots passe, il clique sur le lien "j'ai oublié mon mot de passe" , bien entendu j'aurais mis leurs mails en login , mais je l'avoue c'est pas très professionnel :-S D'où je suis prneur pour une explication un peu plus détaillée :-) Merci Link to comment Share on other sites More sharing options...
whitespirit Posted March 23, 2009 Share Posted March 23, 2009 ce n'est pas si compliqué que ça de décrypter du md5. T'as combien de client dans ta base ? Je me souviens que j'avais un site sous OsCommerce, à chaque fois j'oubliais mon mot de passe, du coup j'avais l'habitude de récupérer mon mot de passe en md5 sans souci. Donne moi un md5 que je test d'abord (avec un mot de passe test) pour être sur de ne pas raconter de bétises.Pour les commandes, ça serait très complexe... Moi je ne m'y aventurerai pas. D'ailleurs si ta boutique fonctionne bien sous OsCommerce, pourquoi tu veux changer ? Prestashop c'est cool pour les nouveaux sites et il y'a le panier en ajax mais sinon ça fait la même chose que OsCommerce en moins bien (j'insiste, si ta boutique est déjà en production, car pour la création de boutique, j'ai mis un mois avant de prendre en main OsCommerce contre 1 semaine pour Prestashop). C'est un avis.N'oublie pas de me donner le nombre de client que t'as dans ta base, si y'a trop, ce sera très très long ! Link to comment Share on other sites More sharing options...
Marc Posted March 24, 2009 Share Posted March 24, 2009 Bonjour@ whitespirit moi aussi je suis en creloaded , je vais changer à la sortie de prestashop 1.2.Je trouve que Osc et la creloaded n'avance plus , la ms3 sortira-t-elle un jour et la creloaded 6.3 c'est pas génial. L'avantage de prestashop c'est la langue française et les système de module , sans compter que les forums sont plus dynamiques , je veux dire par là qu'on obtient beaucoup plus vite un renseignement valable. Link to comment Share on other sites More sharing options...
rasdri Posted March 24, 2009 Author Share Posted March 24, 2009 @ Marc :c'est sur que si y a plus simple, je suis preneur...j'ai pas trouvé mieux pour l'instant...si Damien veut nous proposer gentillement dans le détail une autre de ses nombreuses manières de faire ca serait sympa pour la communauté...;-)et puis comme tu le dis , je trouve pas ça pro de dire aux client qu'ils doivent générer un autre mdp; je pense que ça doit être transparent pour eux le changement de plateforme. @ whitespiritalors déjà j ai 1200 clientstiens par exemple décodes moi ce pwd : a5ccbafbe9ce2ee34fecd729b17ec50a et dis moi combien de temps tu met...parce qu'avec mes 1200 clients si le script met 1 mois pour décoder tous les pwd ça m'intéresse moyen..lolPour le changement, comme le dit Marc oscommerce n'avance plus , y a plein de ptits modules et fonctionnalités de prestashop qui sont bien sympa et c'est aussi pour me faire la main sur presta , apprendre comment ca fonctionne et pouvoir l'utiliser rapidement pour d'autres sites futursPour les commandes j'ai lu sur quelques posts que certains y sont parvenus, ca doit etre faisable...je vous dirais si j'y arrive Link to comment Share on other sites More sharing options...
whitespirit Posted March 24, 2009 Share Posted March 24, 2009 Donne moi un md5 que je test d'abord (avec un mot de passe test) pour être sur de ne pas raconter de bétises. J'ai testé, ça n'a pas marché ! Etant donné que j'ai eu le même problème que toi, et que j'utilisais aussi la Creloaded 6.2, normalement ça devrait passer (et crois moi mes mots de passes n'étaient pas du genre "citron" ou "spiritwhite" (tiens, c'est pas bête comme mot de passe spiritewhite ceci dit) et j'ai pu décrypter. Est-ce que les mots de passes sont codés en dur dans la base de données en md5 ou est-ce qu'il sont d'abord codé avec une clé (comme prestashop) ? Au cas ou donne moi en d'autre si t'es sûr que t'as pas de clé intermediaire.Petite parenthèse: comme je disais, j'étais aussi sous la Creload, c'est sûr que c'est un CMS des années 2000 et si je ne me trompe pas OsCommerce date de 2002. Moi aussi j'ai attendu longtemps la version 3 et c'est clair qu'elle date de l'antiquité. Par contre, elle avait l'avantage d'être complète et tous les modules étaient entièrement gratuit (surtout les modules de payement, chronopost, etc.). Ca reste le gros avantage pour moi face à Prestashop. Mais bon, pour mettre en production une boutique, fallait être bien entouré, d'un graphiste et d'un développeur, sinon qu'est-ce que c'est moche ! Link to comment Share on other sites More sharing options...
Marc Posted March 24, 2009 Share Posted March 24, 2009 Module gratuit d'accord mais pas toujours facile à mettre en place et même des fois très difficile :-S Et quand il y a une mise a jour tu peux recommencer beaucoup de tes modif voir toutes %-P Link to comment Share on other sites More sharing options...
whitespirit Posted March 24, 2009 Share Posted March 24, 2009 @marc: oui t'as tout à fait raison, trop pénible. C'est pour ça que j'ai pris la Creload qui comprenait déjà pas mal de modules intéressant. Mais c'est sûr que plus bidouillage que OSCommerce, tu meurs. C'est horrible. En plus c'est codé en cochon, sans tabulation, sans commentaire, sans classes en pure PHP3... Arf, ça me rappel de mauvais souvenir... C'est pour cette raison que je disais que quand t'as fini et t'as boutique est en prod, t'as un résultat super... Quel cauchemar pour arriver à ce point. En plus le moteur de template, la BTS... Sans commentaire ! Mais au final j'avais un très beau résultat (c'était une boutique pour un client) Link to comment Share on other sites More sharing options...
web-enjoy Posted April 29, 2009 Share Posted April 29, 2009 Je suis moi aussi en pleine migration de oscommerce vers prestashop, pour moi osc commence à s'éssouffler(même si c'est un très bon CMS) et il est codé sous forme de tableaux là où PS utilise les div(oui je sais c'est pas là que réside la différence entre ces 2 CMS) ce qui est normalement recommandé pour le réf. Je voulais aussi me faire la main sur PS, bref c'est pas l'topic. Je n'arrive pas à importer ma bdd client non plus(enfin le transfert de mdp), j'ai testé la solution donnée, sans succès(pê m'y suis-je mal pris).Je relance la demande si quelqu'un à une autre solution...Merci d'avance. Link to comment Share on other sites More sharing options...
mrsoyer Posted September 27, 2009 Share Posted September 27, 2009 Je relance le sujet.La solution de Damien m'intéresse car transparente pour le client.Damien pourrai tu mettre en ligne le code de ta page customer, je suppose que c'est la seule page dont tu as modifier le code.Merci Link to comment Share on other sites More sharing options...
Fugu Design Posted January 13, 2010 Share Posted January 13, 2010 Bonjour,Je me suis réécrit ce système pour l'un de mes projets.Voici le code de ma classe customer.php.En espérant que cela pourra servir... Customer.php Link to comment Share on other sites More sharing options...
Midimix Posted February 5, 2010 Share Posted February 5, 2010 Bonjour FuguPeux tu nous dire dans quel contexte utilises-tu tes classes Customer, je ne fais pas le lien avec les posts précédents.J'ai un projet de migration d'une creloaded vers ps Link to comment Share on other sites More sharing options...
seb73 Posted February 15, 2010 Share Posted February 15, 2010 Bonjour à tous, je cherche également une solution pour importer 535 clients os-commerce sur Prestashop j'essaye de comprendre ce qui ce dit plus haut mais pas évident pour moi Link to comment Share on other sites More sharing options...
samos421 Posted March 17, 2010 Share Posted March 17, 2010 BonjourJe suis également en train d'importer ma base de clients OSC vers prestashop 1.2.5 et comme tout le monde, ou presque, je bute sur l'importation des mots de passe du fait des deux protocoles d'encryption différents utilisés par OSC et Prestahop...[Je pense sincèrement que la PrestaTeam aurait d'excellentes retombées si elle publiait ce petit bout de code que Damien décrit plus haut - c'est commercialement très sensé car un énorme réservoir d'utilisateurs d'OSC existe qui ne demande qu'à passer le pas vers Prestashop, si les barrières ne sont pas trop nombreuses. Récupérer son précieux fichier client est un impératif stratégique de premier ordre]Ceci dit - J'ai utilisé ta classe customer.php Fugu, après avoir créé au préalable, dans la base de prestashop, la table customer de ma base oscommerce.J'ai également importé ma base OSC via la fonction import de prestashopTout fonctionne très bien à deux détails près : Si un client d'Osc clique 'J"ai oublié mon mot de passe' et rentre son adresse mail pour le récupérer, alors Prestashop indique "il n'y a aucun compte enregistré avec cette adresse e-mail" alors même que ce compte existe à la fois dans la table customer importée et aussi dans la table ps_customers nativeAutre point que j'ai remarqué dans le comportement de ce script : même si le client change son ancien mot de passe OSC par un nouveau, il suffit qu'à n'importe quel moment, il retape son ancien mot de passe - et cela réinitialisera le processus, à savoir : c'est le vieux mot de passe OSC qui lui permettra de se logger, tandis que l'autre est invalidé.Merci pour votre aide; Link to comment Share on other sites More sharing options...
David Niry Posted April 14, 2010 Share Posted April 14, 2010 Je rencontre la même problématique avec un client qui veut récupérer son fichier clients OSC mais en même temps n'a qu'un tout petit budget pour la migration, donc pas trop le temps de tester des trucs expérimentaux ni de peaufiner.J'ai donc choisi une solution très simple: 1) importer la base OSC soit avec l'un des scripts existants postés dans les threads sur ce sujet, soit avec un script fait main puis mettre tous les mots de passe en blanc (passwd = '')2) Faire un petit script maison qui boucle sur la table clients de Presta (ps_customer) et pour chacun:- Génèrer un mot de passe aléatoire et l'encrypte façon Presta pour le mettre à jour en base- Envoyer un mail au client pour l'informer que le site a migré et l'inviter à venir découvrir la nouvelle boutique, et en profiter pour lui communiquer son nouveau mot de passe (non-encrypté bien sûr). Ca permet en plus de relancer au passage des clients qui n'auraient visité la boutique depuis longtemps... ;-)Le client peut ensuite aller changer son mot de passe dans son compte lors de sa première identification. Voilou, c'est hyper simpliste, et peut-être que ça ne conviendra pas pour certaines boutiques, mais ça à l'avantage d'être facile et rapide à faire, sans risque de bugs. Link to comment Share on other sites More sharing options...
Melki-Tsedeq Posted April 14, 2010 Share Posted April 14, 2010 Bonjour. Il y a un module payant de Grazulex qui envoi un mail avec un reset de mot de passe à tout les clients. Je ne l’ai pas testé mais cela lui a servie après une importation de clients.Voir le module en question : Pas de lien direct sur site externe pour des prestation. merci -yoya971Et pour plus d’infos voir ce poste.[MODULE] Divers nouveaux/adaptations de modulesJe ne sais pas si cela peut vous servir.Cordialement.Melki-Tsedeq Link to comment Share on other sites More sharing options...
Melki-Tsedeq Posted April 15, 2010 Share Posted April 15, 2010 Bonjour.Désolé Pierre je ferais plus attention la prochaine fois.Cordialement.Melki-Tsedeq Link to comment Share on other sites More sharing options...
Yoya Posted April 15, 2010 Share Posted April 15, 2010 Y'a pas de mal Melki Cdlt,Pierre. Link to comment Share on other sites More sharing options...
Tafou Posted June 10, 2010 Share Posted June 10, 2010 Bonjour,Je viens d'utiliser la technique de FUGU adaptée à un Joomla et cela s'est parfaitement déroulé.Concernant le problème évoqué par samos421 (même si l'utilisateur change son mot de passe il peut toujours utiliser son ancien mot de passe), je l'ai résolu en "bloquant" l'utilisateur de l'ancienne base une fois que celui-ci a été identifié.Voici mon code du fichier classes/Customer.php : public function getByEmail($email, $passwd = NULL) { if (!Validate::isEmail($email) OR ($passwd AND !Validate::isPasswd($passwd))) die (Tools::displayError()); /* !Gestion anciens password joomla - START */ // Récup des infos clients $result1 = Db::getInstance()->GetRow(' SELECT * FROM `'._DB_PREFIX_ .'customer` WHERE `active` = 1 AND `email` = \''.pSQL($email).'\''); // Si le mdp existe mais qu'il ne correspond pas à celui de prestashop if (empty($result1['passwd']) || $result1['passwd'] != md5(pSQL(_COOKIE_KEY_.$passwd))) { // Récupération des anciennes infos client $result_old = Db::getInstance()->GetRow(' SELECT * FROM `jos_users` WHERE `email` = \''.pSQL($email).'\' AND `block` = 0'); // Encodage du password envoyé selon la méthode Joomla $salt = explode(':', $result_old['password']); $new = md5($passwd.$salt[1]); // Si les mots de passe sont tjrs différents if ($new != $salt[0]) return false; // On met à jour le mot de passe prestashop Db::getInstance()->Execute(' UPDATE `'._DB_PREFIX_ .'customer` SET `passwd` = \''.md5(pSQL(_COOKIE_KEY_.$passwd)).'\' WHERE `email` = \''.pSQL($email).'\''); // On bloque l'ancien compte Db::getInstance()->Execute(' UPDATE `jos_users` SET `block` = 1 WHERE `id` = '.pSQL($result_old['id'])); } /* !Gestion anciens password joomla - END */ $result = Db::getInstance()->GetRow(' SELECT * FROM `'._DB_PREFIX_ .'customer` WHERE `active` = 1 AND `email` = \''.pSQL($email).'\''.(isset($passwd) ? 'AND `passwd` = \''.md5(pSQL(_COOKIE_KEY_.$passwd)).'\' AND `deleted` = 0' : '')); if (!$result) return false; $this->id = $result['id_customer']; foreach ($result AS $key => $value) if (key_exists($key, $this)) $this->{$key} = $value; return $this; } J'aime quand un plan se déroule sans accrocs! Link to comment Share on other sites More sharing options...
knr34 Posted August 6, 2010 Share Posted August 6, 2010 Bonjour,je déterre un peu ce topic suite à ma compilation / contribution de tout ce qui a été fait / dit au sujet de l'import de clients d'oscommerce vers prestashop, compte tenu du fait que j'en avais besoin.Comme le soulignait samos421, les modifications de Fugu sur la classe customer sont bonnes, mais 2 problèmes restaient :- quand un client change son mot de passe, l'ancien reste valide- quand on fait une demande de nouveau mot de passe, aucun compte associé au mail fourni n'est trouvé (même si celui-ci existe, bien entendu)Les modifications de Tafou corrigent le soucis de l'ancien mot de passe (une fois qu'un client importé se log sur PS, son "ancien" compte osc est désactivé sur la table parallèle, et son compte est définitivement migré sur PS). Les modifications pour son Joomla ont été adaptées à un OSC.Restait le soucis de la demande de nouveau mot de passe, réglé avec un petit isset().Les tests sont bons, pas de soucis avec un nouveau client indépendant d'osc etcvoici le bout de classes/Customer.php concerné : /////// modif pour OSC static public function tep_validate_password($plain, $encrypted) { if (!empty($plain) && !empty($encrypted)) { $stack = explode(':', $encrypted); if (count($stack) != 2) return false; if (md5($stack[1] . $plain) == $stack[0]) { return true; } } return false; } /////// fin modif pour OSC /** * Return customer instance from its e-mail (optionnaly check password) * * @param string $email e-mail * @param string $passwd Password is also checked if specified * @return Customer instance */ public function getByEmail($email, $passwd = NULL) { if (!Validate::isEmail($email) OR ($passwd AND !Validate::isPasswd($passwd))) die (Tools::displayError()); /////// modif pour OSC if (isset($passwd)) { // on esquive le cas ou un utilisateur envoie son mail sans pass défini : demande de nouveau mot de passe $result1 = Db::getInstance()->GetRow(' SELECT * FROM `'._DB_PREFIX_ .'customer` WHERE `active` = 1 AND `email` = \''.pSQL($email).'\''); // Si le mdp existe mais qu'il ne correspond pas à celui de prestashop if (empty($result1['passwd']) || $result1['passwd'] != md5(pSQL(_COOKIE_KEY_.$passwd)) ) { // récupération des anciennes infos client, en partant du principe que la table de clients OSC s appelle customers $result_old = Db::getInstance()->GetRow(' SELECT * FROM `customers` WHERE `customers_email_address` = \''.pSQL($email).'\' AND `block`= 0'); if (!self::tep_validate_password($passwd, $result_old['customers_password'])) return false; // On met à jour le mot de passe prestashop Db::getInstance()->Execute(' UPDATE `'._DB_PREFIX_ .'customer` SET `passwd` = \''.md5(pSQL(_COOKIE_KEY_.$passwd)).'\' WHERE `email` = \''.pSQL($email).'\''); // On bloque l'ancien compte - toujours sur la table clients OSC Db::getInstance()->Execute(' UPDATE `customers` SET `block` = 1 WHERE `customers_id` = '.pSQL($result_old['customers_id'])); } } /////// fin modif pour OSC $result = Db::getInstance()->GetRow(' SELECT * FROM `'._DB_PREFIX_ .'customer` WHERE `active` = 1 AND `email` = \''.pSQL($email).'\' '.(isset($passwd) ? 'AND `passwd` = \''.md5(pSQL(_COOKIE_KEY_.$passwd)).'\'' : '').' AND `deleted` = 0'); if (!$result) return false; $this->id = $result['id_customer']; foreach ($result AS $key => $value) if (key_exists($key, $this)) $this->{$key} = $value; return $this; } Notez qu'il faut votre table customers qui vient d'OSC dans votre db pour PS, qu'il faut ajouter un champ "block", mettre tous les clients à 0 sur ce champ, et qu'il faut avoir importé (en adaptant) vos clients dans votre table ps_customer.Je pense avoir testé l'ensemble des cas de figures pouvant éventuellement survenir avec ces modifications, hésitez pas à le signaler s'il y a un soucis. 1 Link to comment Share on other sites More sharing options...
WDi Posted September 9, 2010 Share Posted September 9, 2010 Merci beaucoup pour cette petite passerelle, simple et facile à adapter pour toute importation de clients de n'importe quelle autre gestionnaire eshop, il suffit d'implémenter la fonction de check login de l'ancien. Top :snake: ! Link to comment Share on other sites More sharing options...
eclick Posted November 25, 2010 Share Posted November 25, 2010 Bonsoir à tous,Le module d'importation osc => couvre t'il une version d'osc datant de 2004 ?Merci, car je ne connais pas les dates des versions osCommerce Link to comment Share on other sites More sharing options...
CasaDoRock.com Posted March 22, 2011 Share Posted March 22, 2011 Alteration for oscomerce importer prestashop 1.4 final /** * Return customers list * * @return array Customers */ static public function getCustomers() { return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' SELECT `id_customer`, `email`, `firstname`, `lastname` FROM `'._DB_PREFIX_.'customer` ORDER BY `id_customer` ASC'); } /** alteration for oscommerce password prestashop 1.4 final */ static public function tep_validate_password($plain, $encrypted) { if (!empty($plain) && !empty($encrypted)) { $stack = explode(':', $encrypted); if (count($stack) != 2) return false; if (md5($stack[1] . $plain) == $stack[0]) { return true; } } return false; } /** * Return customer instance from its e-mail (optionnaly check password) * * @param string $email e-mail * @param string $passwd Password is also checked if specified * @return Customer instance */ public function getByEmail($email, $passwd = NULL) { if (!Validate::isEmail($email) OR ($passwd AND !Validate::isPasswd($passwd))) die (Tools::displayError()); // alteration for oscommerce password prestashop 1.4 final $result1 = Db::getInstance()->GetRow(' SELECT * FROM `'._DB_PREFIX_ .'customer` WHERE `active` = 1 AND `email` = \''.pSQL($email).'\''); if (empty($result1['passwd']) || $result1['passwd'] != md5(pSQL(_COOKIE_KEY_.$passwd))) { if (!self::tep_validate_password($passwd, $result1['passwd_importerosc'])) return false; Db::getInstance()->Execute(' UPDATE `'._DB_PREFIX_ .'customer` SET `passwd` = \''.md5(pSQL(_COOKIE_KEY_.$passwd)).'\' WHERE `email` = \''.pSQL($email).'\''); } /////// eof osc importer 1.4 final $result = Db::getInstance()->getRow(' SELECT * FROM `'._DB_PREFIX_ .'customer` WHERE `active` = 1 AND `email` = \''.pSQL($email).'\' '.(isset($passwd) ? 'AND `passwd` = \''.md5(pSQL(_COOKIE_KEY_.$passwd)).'\'' : '').' AND `deleted` = 0 AND `is_guest` = 0'); if (!$result) return false; $this->id = $result['id_customer']; foreach ($result AS $key => $value) if (key_exists($key, $this)) $this->{$key} = $value; return $this; } Thanks Schillinghttp://www.casadorock.com Link to comment Share on other sites More sharing options...
AV_Jumper Posted April 1, 2011 Share Posted April 1, 2011 Bonjour, je reviens un peu sur le sujet, je ne parviens pas à récupérer les mots de passe clients depuis oscommerce et ce malgré la modif de la classe customer dans ps et ajout de la table customer de osc dans la base ps.Pour l'importation, j'utilise l'outil de la version 1.4 . Les clients sont bien importés mais le password ne fonctionne toujours pas à l'authentification sur le fo.J'ai constaté cependant qu'après import, dans la table concernée, un morceau du hash de ps est identique à celui de la table customer de osc à ceci près qu'il manque les 6 derniers caracteres et ceci meme en incrémentant le varchar qui ne comptait que 32 caractères dans la table ps contre 40 dans la table de osc.Alors si quelqu'un peux me mettre sur la voie .....ou alors j'ai rien compris à la manip...merci d'avance Link to comment Share on other sites More sharing options...
AV_Jumper Posted April 1, 2011 Share Posted April 1, 2011 J'ai enfin pu avancer un peu a force de bidouillage mais il reste encore quelques bugs.Pour l'import clients ça fonctionne mot de passe compris mais j'ai encore un souci avec le carnet d'adresses.En effet les adresses sont bonnes mais le pays lui n'est pas bon. Pour mon adresse personnelle par exemple, je me retrouve avec "allemagne(alabama)" comme pays , pourtant sur osc c'est bien la france.J'ai egalement importé, les pays et les zones pensant que ça pouvait venir de là mais j'ai toujours le meme problème. Pour toutes les adresses en france c'est "allemagne(alabama)" qui s'affiche. Une idée ??Merci d'avance Link to comment Share on other sites More sharing options...
kostini Posted October 17, 2012 Share Posted October 17, 2012 Bonjour,je déterre un peu ce topic suite à ma compilation / contribution de tout ce qui a été fait / dit au sujet de l'import de clients d'oscommerce vers prestashop, compte tenu du fait que j'en avais besoin. Comme le soulignait samos421, les modifications de Fugu sur la classe customer sont bonnes, mais 2 problèmes restaient : - quand un client change son mot de passe, l'ancien reste valide - quand on fait une demande de nouveau mot de passe, aucun compte associé au mail fourni n'est trouvé (même si celui-ci existe, bien entendu) Les modifications de Tafou corrigent le soucis de l'ancien mot de passe (une fois qu'un client importé se log sur PS, son "ancien" compte osc est désactivé sur la table parallèle, et son compte est définitivement migré sur PS). Les modifications pour son Joomla ont été adaptées à un OSC. Restait le soucis de la demande de nouveau mot de passe, réglé avec un petit isset(). Les tests sont bons, pas de soucis avec un nouveau client indépendant d'osc etc voici le bout de classes/Customer.php concerné : /////// modif pour OSC static public function tep_validate_password($plain, $encrypted) { if (!empty($plain) && !empty($encrypted)) { $stack = explode(':', $encrypted); if (count($stack) != 2) return false; if (md5($stack[1] . $plain) == $stack[0]) { return true; } } return false; } /////// fin modif pour OSC /** * Return customer instance from its e-mail (optionnaly check password) * * @param string $email e-mail * @param string $passwd Password is also checked if specified * @return Customer instance */ public function getByEmail($email, $passwd = NULL) { if (!Validate::isEmail($email) OR ($passwd AND !Validate::isPasswd($passwd))) die (Tools::displayError()); /////// modif pour OSC if (isset($passwd)) { // on esquive le cas ou un utilisateur envoie son mail sans pass défini : demande de nouveau mot de passe $result1 = Db::getInstance()->GetRow(' SELECT * FROM `'._DB_PREFIX_ .'customer` WHERE `active` = 1 AND `email` = \''.pSQL($email).'\''); // Si le mdp existe mais qu'il ne correspond pas à celui de prestashop if (empty($result1['passwd']) || $result1['passwd'] != md5(pSQL(_COOKIE_KEY_.$passwd)) ) { // récupération des anciennes infos client, en partant du principe que la table de clients OSC s appelle customers $result_old = Db::getInstance()->GetRow(' SELECT * FROM `customers` WHERE `customers_email_address` = \''.pSQL($email).'\' AND `block`= 0'); if (!self::tep_validate_password($passwd, $result_old['customers_password'])) return false; // On met à jour le mot de passe prestashop Db::getInstance()->Execute(' UPDATE `'._DB_PREFIX_ .'customer` SET `passwd` = \''.md5(pSQL(_COOKIE_KEY_.$passwd)).'\' WHERE `email` = \''.pSQL($email).'\''); // On bloque l'ancien compte - toujours sur la table clients OSC Db::getInstance()->Execute(' UPDATE `customers` SET `block` = 1 WHERE `customers_id` = '.pSQL($result_old['customers_id'])); } } /////// fin modif pour OSC $result = Db::getInstance()->GetRow(' SELECT * FROM `'._DB_PREFIX_ .'customer` WHERE `active` = 1 AND `email` = \''.pSQL($email).'\' '.(isset($passwd) ? 'AND `passwd` = \''.md5(pSQL(_COOKIE_KEY_.$passwd)).'\'' : '').' AND `deleted` = 0'); if (!$result) return false; $this->id = $result['id_customer']; foreach ($result AS $key => $value) if (key_exists($key, $this)) $this->{$key} = $value; return $this; } Notez qu'il faut votre table customers qui vient d'OSC dans votre db pour PS, qu'il faut ajouter un champ "block", mettre tous les clients à 0 sur ce champ, et qu'il faut avoir importé (en adaptant) vos clients dans votre table ps_customer. Je pense avoir testé l'ensemble des cas de figures pouvant éventuellement survenir avec ces modifications, hésitez pas à le signaler s'il y a un soucis. Simple et efficace ! Merci Link to comment Share on other sites More sharing options...
dschoorens Posted January 6, 2015 Share Posted January 6, 2015 Bonjour, je ne sais pas si cela peut encore servir à quelqu'un ? Voici la solution que j'apporte sur mon blog : http://www.prestamod.fr/blog/2014/11/mots-de-passe-et-migration-oscommerce-vers-prestashop/ Cordialement. Link to comment Share on other sites More sharing options...
Oron Posted January 8, 2015 Share Posted January 8, 2015 Bonjour, je ne sais pas si cela peut encore servir à quelqu'un ? Voici la solution que j'apporte sur mon blog : http://www.prestamod.fr/blog/2014/11/mots-de-passe-et-migration-oscommerce-vers-prestashop/ Cordialement. Bonjour Évitez de déterrer des topic datant de plus de 2 ans. Merci de créer un nouveau topic pour les actualités récentes. A partir qu'il existe une nouvelle version 1.3 _1.4 _1.5 _1.6 etc.. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now