source: spip-zone/_core_/plugins/dist/formulaires/oubli.php @ 99431

Last change on this file since 99431 was 99431, checked in by cedric@…, 3 years ago

l'URL de rappel de mot de passe doit etre une URL safe, on la force sur l'adresse_site parametree dans la configuration du site

File size: 3.2 KB
Line 
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
13if (!defined('_ECRIRE_INC_VERSION')) {
14        return;
15}
16
17// chargement des valeurs par defaut des champs du formulaire
18function formulaires_oubli_charger_dist() {
19        $valeurs = array('oubli' => '', 'nobot' => '');
20
21        return $valeurs;
22}
23
24// http://code.spip.net/@message_oubli
25function message_oubli($email, $param) {
26        $r = formulaires_oubli_mail($email);
27        if (is_array($r) and $r[1]) {
28                include_spip('inc/texte'); # pour corriger_typo
29
30                include_spip('action/inscrire_auteur');
31                $cookie = auteur_attribuer_jeton($r[1]['id_auteur']);
32
33                // l'url_reset doit etre une URL de confiance, on force donc un url_absolue sur adresse_site
34                include_spip('inc/filtres');
35                $msg = recuperer_fond(
36                        "modeles/mail_oubli",
37                        array(
38                                'url_reset' => url_absolue(generer_url_public('spip_pass', "$param=$cookie"),$GLOBALS['meta']['adresse_site'])
39                        )
40                );
41                include_spip("inc/notifications");
42                notifications_envoyer_mails($email, $msg);
43
44                return _T('pass_recevoir_mail');
45        }
46
47        return _T('pass_erreur_probleme_technique');
48}
49
50// la saisie a ete validee, on peut agir
51function formulaires_oubli_traiter_dist() {
52
53        $message = message_oubli(_request('oubli'), 'p');
54
55        return array('message_ok' => $message);
56}
57
58
59// fonction qu'on peut redefinir pour filtrer les adresses mail
60// http://code.spip.net/@test_oubli
61function test_oubli_dist($email) {
62        include_spip('inc/filtres'); # pour email_valide()
63        if (!email_valide($email)) {
64                return _T('pass_erreur_non_valide', array('email_oubli' => spip_htmlspecialchars($email)));
65        }
66
67        return array('mail' => $email);
68}
69
70function formulaires_oubli_verifier_dist() {
71        $erreurs = array();
72
73        $email = strval(_request('oubli'));
74
75        $r = formulaires_oubli_mail($email);
76
77        if (!is_array($r)) {
78                $erreurs['oubli'] = $r;
79        } else {
80                if (!$r[1]) {
81                        $erreurs['oubli'] = _T('pass_erreur_non_enregistre', array('email_oubli' => spip_htmlspecialchars($email)));
82                } elseif ($r[1]['statut'] == '5poubelle' or $r[1]['pass'] == '') {
83                        $erreurs['oubli'] = _T('pass_erreur_acces_refuse');
84                }
85        }
86
87        if (_request('nobot')) {
88                $erreurs['message_erreur'] = _T('pass_rien_a_faire_ici');
89        }
90
91        return $erreurs;
92}
93
94function formulaires_oubli_mail($email) {
95        if (function_exists('test_oubli')) {
96                $f = 'test_oubli';
97        } else {
98                $f = 'test_oubli_dist';
99        }
100        $declaration = $f($email);
101
102        if (!is_array($declaration)) {
103                return $declaration;
104        } else {
105                include_spip('base/abstract_sql');
106
107                return array(
108                        $declaration,
109                        sql_fetsel("id_auteur,statut,pass", "spip_auteurs", "email =" . sql_quote($declaration['mail']))
110                );
111        }
112}
Note: See TracBrowser for help on using the repository browser.