source: spip-zone/_core_/plugins/dist/formulaires/mot_de_passe.php @ 113294

Last change on this file since 113294 was 113294, checked in by spip.franck@…, 22 months ago

Il parait que le futur c'est maintenant :-D

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