[RESOLU] Perte de mot de passe et changement

Suivi , trace , bugs, info , news sur les extensions, les plugins, les modules associé au moteur.

[RESOLU] Perte de mot de passe et changement

Messagepar moody_styley » Mer 03 Oct 2012, 11:43

Bonjour,

Voici une correction du code de changement de mot de passe car buggé pour l'affichage de l'email dans la boîte mail qui reçoit l'information.

Pour le fichier <Racine>/password_forgotten.php, il faut changer les lignes suivantes :
Code: Tout sélectionner
$myarray = array(
                  'from'=>STORE_OWNER,
                  'subject'=>'',
                  '_oLinks'=>tep_href_link(FILENAME_ACCOUNT, '', 'SSL'),
                  'email_use_html'=>_cst_bool('EMAIL_USE_HTML'),
                  'message'=>sprintf(EMAIL_PASSWORD_REMINDER_BODY, $new_password),
                  );

par :
Code: Tout sélectionner
$myarray = array(
                  'from'=>STORE_OWNER,
                  'subject'=>'',
                  '_oLinks'=>tep_href_link(FILENAME_ACCOUNT, '', 'SSL'),
                  'email_use_html'=>_cst_bool('EMAIL_USE_HTML'),
                  'message'=>sprintf(EMAIL_PASSWORD_REMINDER_BODY, $new_password),
                  'db'=> array('entry_firstname'=> $user['customers_firstname'],
                               'customers_email_address'=> $email_address,
                               'password'=> $new_password)
                  );


Ensuite, il faut modifier les 2 fichiers <Racine>/includes/languages/fr_FR/modules/template_email/password_forgotten.txt et <Racine>/includes/languages/en_EN/modules/template_email/password_forgotten.txt (pour ceux qui utilisent la langue anglaise car un gros problème de traduction inclu des &QUOT; et autres caractères non désirés) respectivement comme suit :
Code: Tout sélectionner
<?php
/**
  @licence GPL 2005-2011  The osCSS developers - osCSS Open Source E-commerce
  @portion code Copyright (c) 2002 osCommerce
  @package osCSS-2 <www http://www.oscss.org>
  @version 2.1.0
  @date  10/02/11, 21:56
  @author oscim <mail aurelien@oscim.fr> <www http://www.oscim.fr>
  @encode UTF-8
*/
$lang['EMAIL_SEPARATOR']="------------------------------------------------------" ;
$lang['EMAIL_TEXT_SUBJECT']="" ;
$lang['EMAIL_TEXT_FOOTER_LG1']=" " ;

$lang['EMAIL_WELCOME']="Renouvellemet de mot de passe.<BR>
Vous avez oublié votre mot de passe sur <strong>" . STORE_NAME . "</strong><BR>Cher(e) " ;

$lang['EMAIL_WELCOME_TEXT']="Ceci est un email afin de vous fournir votre nouvel accès<BR>" ;

$lang['EMAIL_TEXT'] ="Vos identifiants de connexion ci-dessous sont personnels et vous permettent de vous connecter à votre compte client.<BR>
<BR>
<BR>Voici les informations nécessaires à votre connexion : " ;
$lang['EMAIL_TEXT_LOGIN'] ="Email / login : " ;
$lang['EMAIL_TEXT_PASS'] ="Mot de passe : " ;

$lang['EMAIL_WARNING']="Conservez précieusement cet email afin de ne pas oublier vos identifiants ci-dessus.<BR>
         <strong class=\"notice\">REMARQUE :</strong> Si cette adresse e-mail vous a été communiqué par un de nos clients. Si vous n'êtes pas un membre, envoyez s'il vous plaît un e-mail à " . STORE_OWNER_EMAIL_ADDRESS . ".<BR>" ;

$lang['EMAIL_TEXT_LINK_CONFIRM']="Lien vers votre compte :" ;
$lang['EMAIL_TEXT_LINK_CONFIRM_DETAIL']="mon compte " ;
$lang['EMAIL_SUBJECT']="Bienvenue sur " . STORE_NAME. " " ;
$lang['EMAIL_GREET_MR']="Cher M. " ;
$lang['EMAIL_GREET_MS']="Chère M<sup>me</sup> " ;
$lang['EMAIL_GREET_ML']="Chère M<sup>lle</sup> " ;
$lang['EMAIL_GREET_NONE']="Cher " ;
?>

et :
Code: Tout sélectionner
<?php
/**
  @licence GPL 2005-2011  The osCSS developers - osCSS Open Source E-commerce
  @portion code Copyright (c) 2002 osCommerce
  @package osCSS-2 <www http://www.oscss.org>
  @version 2.1.0
  @date  10/02/11, 21:56
  @author oscim <mail aurelien@oscim.fr> <www http://www.oscim.fr>
  @encode UTF-8
*/
$lang['EMAIL_SEPARATOR']='-------------------------------------------------- ----' ;
$lang['EMAIL_TEXT_SUBJECT']='' ;
$lang['EMAIL_TEXT_FOOTER_LG1']='' ;

$lang['EMAIL_WELCOME']='Password renewal.<BR>
You have forgotten your password on <strong>'. STORE_NAME .'</strong><BR>Dear ' ;

$lang['EMAIL_WELCOME_TEXT']='This is an email to provide you with your new access.<BR>' ;

$lang['EMAIL_TEXT'] ='Your login below are personal and allow you to log into your account.<BR>
<BR>
<BR>Here are the informations needed to connect:' ;
$lang['EMAIL_TEXT_LOGIN'] ='Email / login: ' ;
$lang['EMAIL_TEXT_PASS'] ='Password: ' ;

$lang['EMAIL_WARNING']='Keep this email carefully so as not to forget your login information above.<BR>
                        <strong class=\"notice\">NOTE:</strong> If this e-mail address has been given to you by one of our customers. If you are not a member, please send an email to '. STORE_OWNER_EMAIL_ADDRESS .'.<BR>' ;

$lang['EMAIL_TEXT_LINK_CONFIRM']='Link to your account: ' ;
$lang['EMAIL_TEXT_LINK_CONFIRM_DETAIL']='my account' ;
$lang['EMAIL_SUBJECT']='Welcome to '. STORE_NAME .' ' ;
$lang['EMAIL_GREET_MR']='Dear M<sup>r</sup> ' ;
$lang['EMAIL_GREET_MS']='Dear M<sup>s</sup>' ;
$lang['EMAIL_GREET_ML']='Dear M<sup>iss</sup>' ;
$lang['EMAIL_GREET_NONE']='Expensive' ;
?>


Il faut ensuite modifier le fichier <Racine>/includes/modules/template_email/password_forgotten.tpl comme suit :
Code: Tout sélectionner
{if $myarray.email_use_html}
{include "header.inc"}
 <div id="content" style="margin:0;padding:0;">
  <p>{$lg.EMAIL_WELCOME} {$myarray.db.entry_firstname},</p>
  <p>{$lg.EMAIL_WELCOME_TEXT}</p>
  <p>{$lg.EMAIL_TEXT_LINK_CONFIRM} <a href="{$myarray._oLinks}">{$myarray._oLinks}</a>
  <p>{$lg.EMAIL_TEXT}</p>
  <ul>
    <li>{$lg.EMAIL_TEXT_LOGIN} {$myarray.db.customers_email_address}</li>
    <li>{$lg.EMAIL_TEXT_PASS} {$myarray.db.password}</li>
  </ul>
  <p>{$lg.EMAIL_WARNING} </p>
 </div>
 {include "footer.inc"}
{else}

  {$lg.EMAIL_WELCOME}  {$myarray.db.entry_firstname},

  {$lg.EMAIL_WELCOME_TEXT}

  {$lg.EMAIL_TEXT_LINK_CONFIRM} {$myarray._oLinks}

  {$lg.EMAIL_TEXT}

  {$lg.EMAIL_TEXT_LOGIN} {$myarray.db.customers_email_address}

  {$lg.EMAIL_TEXT_PASS} {$myarray.db.password}

  {$lg.$myarray._oLinks}

  {$lg.EMAIL_WARNING}
{/if}


Et pour finir, mais là, je laisse les experts vérifier la cohérence du code, il faut modifier le fichier <Racine>/includes/classes/page.customer.php, chercher la fonction "private function checkPasswordProcess($current, $new, $confirmation, $mode=1)" et changer les lignes :
Code: Tout sélectionner
     if (tep_validate_password($current, $check_customer['customers_password'])) {
       self::PassmessageStack('account', SUCCESS_PASSWORD_UPDATED, 'success');
       return true;

par :
Code: Tout sélectionner
     if (tep_validate_password($current, $check_customer['customers_password'])) {
/*       self::PassmessageStack('account', SUCCESS_PASSWORD_UPDATED, 'success');*/
       return true;


Ceci afin d'éviter un affichage double du changement de mot de passe avec succès. Je pense que l'on peut virer le bloque complet, mais n'étant pas expert...

Sinon, il reste un dernier problème avec l'affichage de l'email au format texte pur si l'on choisit dans la configuration de sa boutique de n'envoyer des email qu'au format texte et non pas html.
Il y a dans le fichier <Racine>/includes/functions/general.php, dans la fonction "function tep_post_prepare_email($gabarit_template,$language,$myarray,$print=false)" la ligne :
Code: Tout sélectionner
$myarray['br']="\n";

qui apparement devrait permettre de changer les balises <BR> des fichiers "password_forgotten.txt" pour du "\n", mais il faut rajouter cet élément 'br' à l'array du fichier "password_forgotten.php", mais je ne sais pas ce que ça fait ni si ça marche... Encore une chose à vérifier par les experts.

Voilà pour ma petite contribution du jour.
moody_styley
Membre actif
 
Messages: 69
Inscription: Ven 29 Mai 2009, 17:12

Retourner vers Extensions [fr]

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron