[SPIP] ~v3.0.20-->v3.0.25
[lhc/web/clavette_www.git] / www / squelettes-dist / formulaires / mot_de_passe.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2016 *
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
13 if (!defined('_ECRIRE_INC_VERSION')) return;
14
15 include_spip('base/abstract_sql');
16
17 function 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 */
42 function 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 longuer est suffisante
66 * Ce serait le lieu pour verifier sa qualite (caracteres speciaux ...)
67 *
68 * @param int $id_auteur
69 */
70 function formulaires_mot_de_passe_verifier_dist($id_auteur=null, $jeton=null){
71 $erreurs = array();
72 if (!_request('oubli'))
73 $erreurs['oubli'] = _T('info_obligatoire');
74 else if (strlen($p=_request('oubli')) < _PASS_LONGUEUR_MINI)
75 $erreurs['oubli'] = _T('info_passe_trop_court_car_pluriel',array('nb'=>_PASS_LONGUEUR_MINI));
76 else {
77 if (!is_null($c = _request('oubli_confirm'))){
78 if (!$c)
79 $erreurs['oubli_confirm'] = _T('info_obligatoire');
80 elseif ($c!==$p)
81 $erreurs['oubli'] = _T('info_passes_identiques');
82 }
83 }
84 if (isset($erreurs['oubli'])){
85 set_request('oubli');
86 set_request('oubli_confirm');
87 }
88
89 if (_request('nobot'))
90 $erreurs['message_erreur'] = _T('pass_rien_a_faire_ici');
91
92 return $erreurs;
93 }
94
95 /**
96 * Modification du mot de passe d'un auteur.
97 * Utilise le cookie d'oubli fourni en url ou l'argument du formulaire pour identifier l'auteur
98 *
99 * @param int $id_auteur
100 */
101 function formulaires_mot_de_passe_traiter_dist($id_auteur=null, $jeton=null){
102 $res = array('message_ok'=>'');
103 refuser_traiter_formulaire_ajax(); // puisqu'on va loger l'auteur a la volee (c'est bonus)
104
105 // compatibilite anciens appels du formulaire
106 if (is_null($jeton)) $jeton = _request('p');
107 $row = retrouve_auteur($id_auteur,$jeton);
108
109 if ($row
110 && ($id_auteur = $row['id_auteur'])
111 && ($oubli = _request('oubli'))) {
112 include_spip('action/editer_auteur');
113 include_spip('action/inscrire_auteur');
114 if ($err = auteur_modifier($id_auteur, array('pass'=>$oubli))){
115 $res = array('message_erreur'=>$err);
116 }
117 else {
118 auteur_effacer_jeton($id_auteur);
119 $login = $row['login'];
120 $res['message_ok'] = "<b>" . _T('pass_nouveau_enregistre') . "</b>".
121 "<br />" . _T('pass_rappel_login', array('login' => $login));
122
123 include_spip('inc/auth');
124 $row = sql_fetsel("*","spip_auteurs","id_auteur=".intval($id_auteur));
125 auth_loger($row);
126 }
127 }
128 return $res;
129 }
130 ?>