Ignore:
Timestamp:
Jan 11, 2018, 9:18:05 AM (3 years ago)
Author:
erational@…
Message:

Version SPIP 3.2: on met à jour les surcharges avec les évolutions du core
TODO: dans la fonction generer mot de passe il faudrait tenir compte des constraintes imposées par le plugin

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/motpassecomplexe/trunk/formulaires/editer_auteur.php

    r96779 r108447  
    162162        include_spip("motpassecomplexe_fonctions");   // PLUGIN MOTPASSECOMPLEXE
    163163        if (!nom_acceptable(_request('nom'))) {
    164                 $erreurs['nom'] = _T("info_nom_pas_conforme");
     164                $erreurs['nom'] = _T('info_nom_pas_conforme');
    165165        }
    166166
     
    187187                        if (intval($id_auteur) == 0) {
    188188                                #Un auteur existe deja avec cette adresse ?
    189                                 if (sql_countsel("spip_auteurs", "email=" . sql_quote($email)) > 0) {
     189                        if (sql_countsel('spip_auteurs', 'email=' . sql_quote($email)) > 0) {
    190190                                        $erreurs['email'] = _T('erreur_email_deja_existant');
    191191                                }
    192192                        } else {
    193193                                #Un auteur existe deja avec cette adresse ? et n'est pas le user courant.
    194                                 if ((sql_countsel("spip_auteurs",
    195                                                         "email=" . sql_quote($email)) > 0) and ($id_auteur != ($id_auteur_ancien = sql_getfetsel('id_auteur',
    196                                                         'spip_auteurs', "email=" . sql_quote($email))))
    197                                 ) {
     194                                if ((sql_countsel(
     195                                        'spip_auteurs',
     196                                        'email=' . sql_quote($email)
     197                                ) > 0) and ($id_auteur != ($id_auteur_ancien = sql_getfetsel(
     198                                        'id_auteur',
     199                                        'spip_auteurs',
     200                                        'email=' . sql_quote($email)
     201                                )))) {
    198202                                        $erreurs['email'] = _T('erreur_email_deja_existant');
    199203                                }
     
    202206        }
    203207
    204         if (preg_match(",^\s*javascript,i", _request('url_site'))) {
     208        if (!count($erreurs) and _request('reset_password')) {
     209                $auteur = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
     210                $config = auteurs_edit_config($auteur);
     211                if ($config['edit_pass']) {
     212                        if ($email = auteur_regenerer_identifiants($id_auteur)) {
     213                                $erreurs['message_ok'] = _T('message_nouveaux_identifiants_ok', array('email' => $email));
     214                                $erreurs['message_erreur'] = '';
     215                        } elseif ($email === false) {
     216                                $erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec_envoi');
     217                        } else {
     218                                $erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec_creation');
     219                        }
     220                } else {
     221                        $erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec_creation');
     222                }
     223                return $erreurs;
     224        }
     225
     226        // corriger un cas si frequent : www.example.org sans le http:// qui precede
     227        if ($url = _request('url_site') and !tester_url_absolue($url)) {
     228                if (strpos($url, ':') === false and strncasecmp($url, 'www.', 4) === 0) {
     229                        $url = 'http://' . $url;
     230                        set_request('url_site', $url);
     231                }
     232        }
     233        // traiter les liens implicites avant de tester l'url
     234        include_spip('inc/lien');
     235        if ($url = calculer_url(_request('url_site')) and !tester_url_absolue($url)) {
    205236                $erreurs['url_site'] = _T('info_url_site_pas_conforme');
    206237        }
     
    217248                                $erreurs['new_pass'] = _T('info_passes_identiques');
    218249                                $erreurs['message_erreur'] .= _T('info_passes_identiques');
    219                         }
    220                         elseif ($err = motpassecomplexe_verifier_pass(_request('new_pass'))){     // PLUGIN MOTPASSECOMPLEXE
     250                        } elseif ($err = motpassecomplexe_verifier_pass(_request('new_pass'))){     // PLUGIN MOTPASSECOMPLEXE
    221251                                $erreurs['new_pass'] = $err;
    222252                                $erreurs['message_erreur'] .= $err;
    223                         }
    224                         elseif ($err = auth_verifier_pass($auth_methode, _request('new_login'), $p, $id_auteur)) {
     253                        } elseif ($err = auth_verifier_pass($auth_methode, _request('new_login'), $p, $id_auteur)) {
    225254                                $erreurs['new_pass'] = $err;
    226255                                $erreurs['message_erreur'] .= $err;
     
    282311        $retour = parametre_url($retour, 'email_confirm', '');
    283312
    284         set_request('email',
    285                 email_valide(_request('email'))); // eviter d'enregistrer les cas qui sont acceptés par email_valide dans le verifier :
     313        set_request(
     314                'email',
     315                email_valide(_request('email'))
     316        ); // eviter d'enregistrer les cas qui sont acceptés par email_valide dans le verifier :
    286317        // "Marie@toto.com  " ou encore "Marie Toto <Marie@toto.com>"
    287318
     
    295326                // et de revenir sur son profil
    296327                if ($GLOBALS['visiteur_session']['id_auteur'] == $id_auteur
    297                         and $email_nouveau != ($email_ancien = sql_getfetsel('email', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)))
     328                        and $email_nouveau !=
     329                                ($email_ancien = sql_getfetsel('email', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)))
    298330                ) {
    299331                        $envoyer_mail = charger_fonction('envoyer_mail', 'inc');
    300                         $texte = _T('form_auteur_mail_confirmation',
     332                        $texte = _T(
     333                                'form_auteur_mail_confirmation',
    301334                                array(
    302                                         'url' => generer_action_auteur('confirmer_email', $email_nouveau, parametre_url($retour, 'email_modif', 'ok'))
    303                                 ));
     335                                        'url' => generer_action_auteur(
     336                                                'confirmer_email',
     337                                                $email_nouveau,
     338                                                parametre_url($retour, 'email_modif', 'ok')
     339                                        )
     340                                )
     341                        );
    304342                        $envoyer_mail($email_nouveau, _T('form_auteur_confirmation'), $texte);
    305343                        set_request('email_confirm', $email_nouveau);
     
    327365                        auteur_associer($id_auteur, array($objet => $id_objet));
    328366                        if (isset($res['redirect'])) {
    329                                 $res['redirect'] = parametre_url($res['redirect'], "id_lien_ajoute", $id_auteur, '&');
     367                                $res['redirect'] = parametre_url($res['redirect'], 'id_lien_ajoute', $id_auteur, '&');
    330368                        }
    331369                }
     
    334372        return $res;
    335373}
     374
     375
     376/**
     377 * Renvoyer des identifiants
     378 * @param int $id_auteur
     379 * @param bool $notifier
     380 * @param array $contexte
     381 * @return string
     382 */
     383function auteur_regenerer_identifiants($id_auteur, $notifier=true, $contexte = array()) {
     384        if ($id_auteur){
     385                $set = array();
     386                include_spip('inc/access');
     387                $set['pass'] = creer_pass_aleatoire();
     388
     389                include_spip('action/editer_auteur');
     390                auteur_modifier($id_auteur,$set);
     391
     392                $row = sql_fetsel('*','spip_auteurs','id_auteur='.intval($id_auteur));
     393                include_spip('inc/filtres');
     394                if ($notifier
     395                        and $row['email']
     396                        and email_valide($row['email'])
     397                  and trouver_fond($fond = 'modeles/mail_nouveaux_identifiants')){
     398                        // envoyer l'email avec login/pass
     399                        $c = array(
     400                                'id_auteur' => $id_auteur,
     401                                'nom' => $row['nom'],
     402                                'mode' => $row['statut'],
     403                                'email' => $row['email'],
     404                                'pass' => $set['pass'],
     405                        );
     406                        // on merge avec les champs fournit en appel, qui sont passes au modele de notification donc
     407                        $contexte = array_merge($contexte, $c);
     408                        $message = recuperer_fond($fond, $contexte);
     409                        include_spip("inc/notifications");
     410                        notifications_envoyer_mails($row['email'],$message);
     411
     412                        return $row['email'];
     413                }
     414
     415                return false;
     416
     417        }
     418
     419        return '';
     420}
Note: See TracChangeset for help on using the changeset viewer.