Esempio n. 1
0
    if (!$result) {
        exit_error($TITRE, 'Le code transmis est invalide ou périmé (base inexistante).');
    }
}
// Récupération des données de l'utilisateur
$DB_ROW = DB_STRUCTURE_PUBLIC::DB_recuperer_user_for_new_mdp('user_pass_key', $user_pass_key);
if (empty($DB_ROW)) {
    exit_error($TITRE, 'Le code transmis est invalide ou périmé (absence de correspondance).');
}
if (crypter_mdp($DB_ROW['user_id'] . $DB_ROW['user_email'] . $DB_ROW['user_password'] . $DB_ROW['user_connexion_date']) != $user_pass_key) {
    exit_error($TITRE, 'Le code transmis est périmé (incompatible avec les données actuelles).');
}
// Prendre en compte la demande de changement de mdp
$newpass = fabriquer_mdp();
// On ne transmet pas de profil car necessite sinon une variable de session non définie à ce stade.
DB_STRUCTURE_PUBLIC::DB_modifier_user_password_or_key($DB_ROW['user_id'], crypter_mdp($newpass), '');
// Affichage du résultat (confirmation + identifiants)
?>
<p><label class="valide">Nouveau mot de passe généré avec succès !</label></p>
<p>Veuillez noter vos identifiants de connexion :</p>
<form>
  <label class="tab">Nom d'utilisateur :</label><b><?php 
echo html($DB_ROW['user_login']);
?>
</b><br />
  <label class="tab">Mot de passe :</label><b><?php 
echo $newpass;
?>
</b>
</form>
<p><span class="astuce">Le code transmis étant à usage unique, il ne peut pas être utilisé de nouveau.</span></p>
    $DB_ROW = DB_STRUCTURE_PUBLIC::DB_recuperer_user_for_new_mdp('user_id', $user_id);
    if (empty($DB_ROW)) {
        $_SESSION['FORCEBRUTE'][$PAGE]['DELAI']++;
        $_SESSION['FORCEBRUTE'][$PAGE]['TIME'] = $_SERVER['REQUEST_TIME'];
        exit_json(FALSE, 'Utilisateur inconnu ! Nouvelle tentative autorisée dans ' . $_SESSION['FORCEBRUTE'][$PAGE]['DELAI'] . 's.');
    }
    // On vérifie que l'adresse mail concorde
    if ($DB_ROW['user_email'] != $courriel) {
        $_SESSION['FORCEBRUTE'][$PAGE]['DELAI']++;
        $_SESSION['FORCEBRUTE'][$PAGE]['TIME'] = $_SERVER['REQUEST_TIME'];
        exit_json(FALSE, 'Adresse mail non concordante ! Nouvelle tentative autorisée dans ' . $_SESSION['FORCEBRUTE'][$PAGE]['DELAI'] . 's.');
    }
    // On enregistre un ticket pour cette demande
    $user_pass_key = crypter_mdp($DB_ROW['user_id'] . $DB_ROW['user_email'] . $DB_ROW['user_password'] . $DB_ROW['user_connexion_date']);
    $code_mdp = $BASE ? $user_pass_key . 'g' . $BASE : $user_pass_key;
    DB_STRUCTURE_PUBLIC::DB_modifier_user_password_or_key($DB_ROW['user_id'], '', $user_pass_key);
    // On envoi le courriel à l'utilisateur
    $mail_contenu = 'Bonjour,' . "\r\n";
    $mail_contenu .= "\r\n";
    $mail_contenu .= 'Une demande de nouveaux identifiants a été formulée pour le compte SACoche de ' . $DB_ROW['user_prenom'] . ' ' . $DB_ROW['user_nom'] . '.' . "\r\n";
    $mail_contenu .= "\r\n";
    $mail_contenu .= 'Pour confirmer la génération d\'un nouveau mot de passe, veuillez cliquer sur ce lien :' . "\r\n";
    $mail_contenu .= URL_DIR_SACOCHE . '?code_mdp=' . $code_mdp . "\r\n";
    $mail_contenu .= Sesamail::texte_pied_courriel(array('excuses_derangement', 'info_connexion', 'no_reply', 'signature'), $DB_ROW['user_email']);
    $courriel_bilan = Sesamail::mail($DB_ROW['user_email'], 'Demande de nouveaux identifiants', $mail_contenu, $DB_ROW['user_email']);
    if (!$courriel_bilan) {
        exit_json(FALSE, 'Erreur lors de l\'envoi du courriel !');
    }
    // OK !
    exit_json(TRUE);
}
 {
   $_SESSION['FORCEBRUTE'][$PAGE]['DELAI']++;
   $_SESSION['FORCEBRUTE'][$PAGE]['TIME'] = $_SERVER['REQUEST_TIME'];
   exit_json( FALSE , 'Utilisateur inconnu ! Nouvelle tentative autorisée dans '.$_SESSION['FORCEBRUTE'][$PAGE]['DELAI'].'s.' );
 }
 // On vérifie que l'adresse mail concorde
 if( $DB_ROW['user_email'] != $courriel )
 {
   $_SESSION['FORCEBRUTE'][$PAGE]['DELAI']++;
   $_SESSION['FORCEBRUTE'][$PAGE]['TIME'] = $_SERVER['REQUEST_TIME'];
   exit_json( FALSE , 'Adresse mail non concordante ! Nouvelle tentative autorisée dans '.$_SESSION['FORCEBRUTE'][$PAGE]['DELAI'].'s.' );
 }
 // On enregistre un ticket pour cette demande
 $user_pass_key = crypter_mdp($DB_ROW['user_id'].$DB_ROW['user_email'].$DB_ROW['user_password'].$DB_ROW['user_connexion_date']);
 $code_mdp = ($BASE) ? $user_pass_key.'g'.$BASE : $user_pass_key ;
 DB_STRUCTURE_PUBLIC::DB_modifier_user_password_or_key ($DB_ROW['user_id'] , '' /*user_password*/ , $user_pass_key /*user_pass_key*/ );
 // On envoi le courriel à l'utilisateur
 $mail_contenu = 'Bonjour,'."\r\n";
 $mail_contenu.= "\r\n";
 $mail_contenu.= 'Une demande de nouveaux identifiants a été formulée pour le compte SACoche de '.$DB_ROW['user_prenom'].' '.$DB_ROW['user_nom'].'.'."\r\n";
 $mail_contenu.= "\r\n";
 $mail_contenu.= 'Pour confirmer la génération d\'un nouveau mot de passe, veuillez cliquer sur ce lien :'."\r\n";
 $mail_contenu.= URL_DIR_SACOCHE.'?code_mdp='.$code_mdp."\r\n";
 $mail_contenu.= Sesamail::texte_pied_courriel( array('excuses_derangement','info_connexion','no_reply','signature') , $DB_ROW['user_email'] );
 $courriel_bilan = Sesamail::mail( $DB_ROW['user_email'] , 'Demande de nouveaux identifiants' , $mail_contenu , $DB_ROW['user_email'] /*replyto*/ );
 if(!$courriel_bilan)
 {
   exit_json( FALSE , 'Erreur lors de l\'envoi du courriel !' );
 }
 // OK !
 exit_json( TRUE );