Sarl Vladis Posted October 12, 2009 Share Posted October 12, 2009 Bonjour.Je m'explique...Ayant deux magasin réels dans le 56, je désirerai que mes clients existant se log par leur nom (à la place de leur émail), et par leur n° de client interne à mes boutiques (à la place du password).1 -J'ai crée un client exemple donc son nom est dupont et son n° de client est clt01.2 - Je voudrais rendre le champ email non obligatoire.Mon vrai problème c'est quoi changé dans authentification et mon compte pour faire passé la vérification de l'email au nom.Le numéro de client est enregistré dans le champs password (je n'ai qu'a changer la traduction de "mot de passe" à "numéro de client").J'ai essayé de changer dans authentification.tpl la vérif par email par lastname <form action="{$base_dir_ssl}authentication.php" method="post" id="login_form" class="std"> {l s='Already registered ?'} {l s='Votre nom'} <input type="text" id="lastname" name="lastname" value="{if isset($smarty.post.lastname)}{$smarty.post.lastname|escape:'htmlall'|stripslashes}{/if}" class="account_input" /></span> {l s='Password'} <input type="password" id="passwd" name="passwd" value="{if isset($smarty.post.passwd)}{$smarty.post.passwd|escape:'htmlall'|stripslashes}{/if}" class="account_input" /></span> {if isset($back)}<input type="hidden" class="hidden" name="back" value="{$back|escape:'htmlall':'UTF-8'}" />{/if} <input type="submit" id="SubmitLogin" name="SubmitLogin" class="button" value="{l s='Log in'}" /> {l s='Forgot your password?'} </form> ca donne http://vladis.fr/authentication.php?back=my-account.phpdans authentification.php j'ai changé if (Tools::isSubmit('SubmitLogin')) { $passwd = trim(Tools::getValue('passwd')); $lastname = trim(Tools::getValue('lastname')); if (empty($lastname)) $errors[] = Tools::displayError('Votre nom est requis !'); elseif (!Validate::isEmail($lastname)) $errors[] = Tools::displayError('Votre nom est inconnu !'); elseif (empty($passwd)) $errors[] = Tools::displayError('Votre n° de client est requis !'); elseif (Tools::strlen($passwd) > 32) $errors[] = Tools::displayError('Votre n° de client est trop long !'); elseif (!Validate::isPasswd($passwd)) $errors[] = Tools::displayError('n° de client inconnu !'); else Mais je ne doit pas aller assez loin....J'obtiens Il y a 1 erreur : 1. Votre nom est inconnu ! Si je change elseif (!Validate::isEmail($lastname)) par elseif (!Validate::isLastname($lastname)) comme ceci if (Tools::isSubmit('SubmitLogin')) { $passwd = trim(Tools::getValue('passwd')); $lastname = trim(Tools::getValue('lastname')); if (empty($lastname)) $errors[] = Tools::displayError('Votre nom est requis !'); elseif (!Validate::isLastname($lastname)) $errors[] = Tools::displayError('Votre nom est inconnu !'); elseif (empty($passwd)) $errors[] = Tools::displayError('Votre n° de client est requis !'); elseif (Tools::strlen($passwd) > 32) $errors[] = Tools::displayError('Votre n° de client est trop long !'); elseif (!Validate::isPasswd($passwd)) $errors[] = Tools::displayError('n° de client inconnu !'); else J'ai une page blanche...Suis-je sur la bonne voie.Doit on changer quelque chose dans smarty, j'ose pas trop toucher...Toutes les idées sont bonnes à prendreMerci d'avance[EDIT] Je ne rien toucher à la création du compte, juste à l'authentification, car j'ai un portefeuille de plus de 1000 clts et je veux créer pour eux leur compte sous prestashop, pour qu'ils n'aient pas a le faire (enlever la barrière de création pour les anciens clients)[EDIT] Première erreur c'est lastname et pas firstname CORRIGE Link to comment Share on other sites More sharing options...
Julien Breux Posted October 12, 2009 Share Posted October 12, 2009 Je te donne réponse dans quelques minutes Link to comment Share on other sites More sharing options...
Julien Breux Posted October 12, 2009 Share Posted October 12, 2009 Fichier: classes/customer.phpLigne: 179Ajouter /** * Return customer instance from its lastname (optionnaly check password) * * @param string $lastname lastname * @param string $passwd Password is also checked if specified * @return Customer instance */ public function getByLastname($lastname, $passwd = NULL) { if (!Validate::isName($lastname) OR ($passwd AND !Validate::isPasswd($passwd))) die (Tools::displayError()); $result = Db::getInstance()->GetRow(' SELECT * FROM `'._DB_PREFIX_ .'customer` WHERE `active` = 1 AND `lastname` = \''.pSQL($lastname).'\''.(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; } Fichier: authentication.phpLigne: 121 à 125Remplacer par $lastname = trim(Tools::getValue('lastname')); if (empty($lastname)) $errors[] = Tools::displayError('lastname is required'); elseif (!Validate::isName($lastname)) $errors[] = Tools::displayError('invalid lastname'); Fichier: authentication.phpLigne: 135Remplacer par $authentication = $customer->getByLastname(trim($lastname), trim($passwd)); Fichier: themes/prestashop/authentifiaction.tplLigne: 54 à 55Remplacer par {l s='Last name'} <input type="text" id="lastname" name="lastname" value="{if isset($smarty.post.lastname)}{$smarty.post.lastname|escape:'htmlall'|stripslashes}{/if}" class="account_input" /></span> Link to comment Share on other sites More sharing options...
Sarl Vladis Posted October 12, 2009 Author Share Posted October 12, 2009 Milles merci JulienC'est exactement ça, j'avoue que je n'avais pas pensé à la class customer...., même pas un petit coup d'oeil, pour dire...Je pense que cette petite modif peut servir à d'autres, donc...Sans tomber dans la caricature... Encore merci pour la justesse de la réponse et sa rapidité, ça c'est du forum.... Link to comment Share on other sites More sharing options...
Julien Breux Posted October 12, 2009 Share Posted October 12, 2009 Avec grand plaisir, si tu as un quelconque besoin, je suis là. Link to comment Share on other sites More sharing options...
Sarl Vladis Posted October 12, 2009 Author Share Posted October 12, 2009 Une dernière petite question (pour aujourd'hui... lol)Comment faire pour ne pas passer par la vérification de doublon de l'adresse Email.Je m'expliques:Quand je crée la fiche pour le compte du client je voudrais mettre dans le champ Email "[email protected]" ou quelque chose comme ça.Mais Prestashop fait une vérification et me dit, impossible...Une idée sans doute, et est-ce possible...Merci d'avance Link to comment Share on other sites More sharing options...
Pierre-Yves Posted October 12, 2009 Share Posted October 12, 2009 Allais j'y met ma graine aussi Fichier: authentification.phpLigne: 32Tu supprimes ce bout de code elseif (Customer::customerExists($email)) $errors[] = Tools::displayError('someone has already registered with this e-mail address'); Link to comment Share on other sites More sharing options...
Pierre-Yves Posted October 12, 2009 Share Posted October 12, 2009 En plus de cela, tu dois modifier la table "ps_customer" pour que le champs "email" ne soit plus unique Link to comment Share on other sites More sharing options...
Sarl Vladis Posted October 12, 2009 Author Share Posted October 12, 2009 Ok, Je...Merci Link to comment Share on other sites More sharing options...
Julien Breux Posted October 12, 2009 Share Posted October 12, 2009 Petit coucou à P-Y par l'intermédiaire de PS ! Link to comment Share on other sites More sharing options...
Sarl Vladis Posted October 12, 2009 Author Share Posted October 12, 2009 Heu J'ai bien enlevé le code dans auth...php.J'ai enlevé le clé unique dans la table customerMais il me dit que l'email existe....Pourquoi, une idée... Link to comment Share on other sites More sharing options...
Pierre-Yves Posted October 12, 2009 Share Posted October 12, 2009 Oups pardon!! J'ai oublié ça :Fichier: authentification.phpLigne: 51Tu supprimes ce bout de code encore elseif (Customer::customerExists($email)) $errors[] = Tools::displayError('someone has already registered with this e-mail address'); Coucou tit Julien Link to comment Share on other sites More sharing options...
Sarl Vladis Posted October 12, 2009 Author Share Posted October 12, 2009 Ok cool c'est bon...Merci en cœur à Pierre-Yves et JulienBonne soirée les gars.Patrick Link to comment Share on other sites More sharing options...
Pierre-Yves Posted October 12, 2009 Share Posted October 12, 2009 De rien Bonne soirée à toi! Link to comment Share on other sites More sharing options...
jolvil Posted October 12, 2009 Share Posted October 12, 2009 Bon c'est pas authentification.php ou authentifiaction.phpc'est authentication.phpNom de Zeus ! :shut: Link to comment Share on other sites More sharing options...
Pierre-Yves Posted October 12, 2009 Share Posted October 12, 2009 Hehe, oui tu as raison en plus! Milles excuses 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