source: spip-zone/_plugins_/motpassecomplexe/trunk/formulaires/mot_de_passe.php @ 96779

Last change on this file since 96779 was 96779, checked in by guillaume.wauquier@…, 5 years ago

Passage du plugin en version SPIP 3.1

File size: 4.5 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2014                                                *
7 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8 *                                                                         *
9 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
10 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11\***************************************************************************/
12
13if (!defined('_ECRIRE_INC_VERSION')) return;
14
15include_spip('base/abstract_sql');
16 
17function retrouve_auteur($id_auteur,$jeton=''){
18        if ($id_auteur=intval($id_auteur)) {
19                return sql_fetsel('*','spip_auteurs',array('id_auteur='.intval($id_auteur),"statut<>'5poubelle'","pass<>''"));
20        }
21        elseif ($jeton) {
22                include_spip('action/inscrire_auteur');
23                if ($auteur = auteur_verifier_jeton($jeton)
24                  AND $auteur['statut']<>'5poubelle'
25                  AND $auteur['pass']<>''){
26                        return $auteur;
27                }
28        }
29        return false;
30}
31 
32// chargement des valeurs par defaut des champs du formulaire
33/**
34 * Chargement de l'auteur qui peut changer son mot de passe.
35 * Soit un cookie d'oubli fourni par #FORMULAIRE_OUBLI est passe dans l'url par &p=
36 * Soit un id_auteur est passe en parametre #FORMULAIRE_MOT_DE_PASSE{#ID_AUTEUR}
37 * Dans les deux cas on verifie que l'auteur est autorise
38 *
39 * @param int $id_auteur
40 * @return array
41 */
42function formulaires_mot_de_passe_charger_dist($id_auteur=null, $jeton=null){
43
44        $valeurs = array();
45        // compatibilite anciens appels du formulaire
46        if (is_null($jeton)) $jeton = _request('p');
47        $auteur = retrouve_auteur($id_auteur,$jeton);
48
49        if ($auteur){
50                $valeurs['id_auteur'] = $id_auteur; // a toutes fins utiles pour le formulaire
51                if ($jeton)
52                        $valeurs['_hidden'] = '<input type="hidden" name="p" value="'.$jeton.'" />';
53        }
54        else {
55                $valeurs['message_erreur'] = _T('pass_erreur_code_inconnu');
56                $valeurs['editable'] =  false; // pas de saisie
57        }
58        $valeurs['oubli']='';
59        $valeurs['nobot']='';
60        return $valeurs;
61}
62
63/**
64 * Verification de la saisie du mot de passe.
65 * On verifie qu'un mot de passe est saisi, et que sa longueur est suffisante
66 * Ce serait le lieu pour verifier sa qualite (caracteres speciaux ...)
67 *
68 * @param int $id_auteur
69 */
70function formulaires_mot_de_passe_verifier_dist($id_auteur=null, $jeton=null){
71        include_spip("motpassecomplexe_fonctions");   // PLUGIN MOTPASSECOMPLEXE
72 
73  $erreurs = array();
74 
75  if (!_request('oubli')) 
76                $erreurs['oubli'] = _T('info_obligatoire');   
77  else if ( $erreur_motpasse = motpassecomplexe_verifier_pass($p = _request('oubli')) )      // PLUGIN MOTPASSECOMPLEXE
78    $erreurs['oubli'] = $erreur_motpasse;  // PLUGIN MOTPASSECOMPLEXE
79  else {               
80    if (!is_null($c = _request('oubli_confirm'))){
81                        if (!$c)
82                                $erreurs['oubli_confirm'] = _T('info_obligatoire');
83                        elseif ($c!==$p)
84                                $erreurs['oubli'] = _T('info_passes_identiques');
85                }
86        }
87
88        if (isset($erreurs['oubli'])){
89                set_request('oubli');
90                set_request('oubli_confirm');
91        }
92
93        if (_request('nobot'))
94                $erreurs['message_erreur'] = _T('pass_rien_a_faire_ici');
95       
96        return $erreurs;
97}
98
99/**
100 * Modification du mot de passe d'un auteur.
101 * Utilise le cookie d'oubli fourni en url ou l'argument du formulaire pour identifier l'auteur
102 *
103 * @param int $id_auteur
104 */
105function formulaires_mot_de_passe_traiter_dist($id_auteur=null, $jeton=null){
106        $res = array('message_ok'=>'');
107        refuser_traiter_formulaire_ajax(); // puisqu'on va loger l'auteur a la volee (c'est bonus)
108
109        // compatibilite anciens appels du formulaire
110        if (is_null($jeton)) $jeton = _request('p');
111        $row = retrouve_auteur($id_auteur,$jeton);
112
113        if ($row
114         && ($id_auteur = $row['id_auteur'])
115         && ($oubli = _request('oubli'))) {
116                include_spip('action/editer_auteur');
117                include_spip('action/inscrire_auteur');
118                if ($err = auteur_modifier($id_auteur, array('pass'=>$oubli))){
119                        $res = array('message_erreur'=>$err);
120                }
121                else {
122                        auteur_effacer_jeton($id_auteur);
123                        $login = $row['login'];
124                        $res['message_ok'] = "<b>" . _T('pass_nouveau_enregistre') . "</b>".
125                        "<br />" . _T('pass_rappel_login', array('login' => $login));
126
127                        include_spip('inc/auth');
128                        $row = sql_fetsel("*","spip_auteurs","id_auteur=".intval($id_auteur));
129                        auth_loger($row);
130                }
131        }
132        return $res;
133}
134?>
Note: See TracBrowser for help on using the repository browser.