123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- <?php
- /***************************************************************************\
- * SPIP, Systeme de publication pour l'internet *
- * *
- * Copyright (c) 2001-2014 *
- * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
- * *
- * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
- * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
- \***************************************************************************/
- if (!defined('_ECRIRE_INC_VERSION')) return;
- include_spip('base/abstract_sql');
- function retrouve_auteur($id_auteur,$jeton=''){
- if ($id_auteur=intval($id_auteur)) {
- return sql_fetsel('*','spip_auteurs',array('id_auteur='.intval($id_auteur),"statut<>'5poubelle'","pass<>''"));
- }
- elseif ($jeton) {
- include_spip('action/inscrire_auteur');
- if ($auteur = auteur_verifier_jeton($jeton)
- AND $auteur['statut']<>'5poubelle'
- AND $auteur['pass']<>''){
- return $auteur;
- }
- }
- return false;
- }
- // chargement des valeurs par defaut des champs du formulaire
- /**
- * Chargement de l'auteur qui peut changer son mot de passe.
- * Soit un cookie d'oubli fourni par #FORMULAIRE_OUBLI est passe dans l'url par &p=
- * Soit un id_auteur est passe en parametre #FORMULAIRE_MOT_DE_PASSE{#ID_AUTEUR}
- * Dans les deux cas on verifie que l'auteur est autorise
- *
- * @param int $id_auteur
- * @return array
- */
- function formulaires_mot_de_passe_charger_dist($id_auteur=null, $jeton=null){
- $valeurs = array();
- // compatibilite anciens appels du formulaire
- if (is_null($jeton)) $jeton = _request('p');
- $auteur = retrouve_auteur($id_auteur,$jeton);
- if ($auteur){
- $valeurs['id_auteur'] = $id_auteur; // a toutes fins utiles pour le formulaire
- if ($jeton)
- $valeurs['_hidden'] = '<input type="hidden" name="p" value="'.$jeton.'" />';
- }
- else {
- $valeurs['message_erreur'] = _T('pass_erreur_code_inconnu');
- $valeurs['editable'] = false; // pas de saisie
- }
- $valeurs['oubli']='';
- $valeurs['nobot']='';
- return $valeurs;
- }
- /**
- * Verification de la saisie du mot de passe.
- * On verifie qu'un mot de passe est saisi, et que sa longuer est suffisante
- * Ce serait le lieu pour verifier sa qualite (caracteres speciaux ...)
- *
- * @param int $id_auteur
- */
- function formulaires_mot_de_passe_verifier_dist($id_auteur=null, $jeton=null){
- $erreurs = array();
- if (!_request('oubli'))
- $erreurs['oubli'] = _T('info_obligatoire');
- else if (strlen($p=_request('oubli')) < _PASS_LONGUEUR_MINI)
- $erreurs['oubli'] = _T('info_passe_trop_court_car_pluriel',array('nb'=>_PASS_LONGUEUR_MINI));
- else {
- if (!is_null($c = _request('oubli_confirm'))){
- if (!$c)
- $erreurs['oubli_confirm'] = _T('info_obligatoire');
- elseif ($c!==$p)
- $erreurs['oubli'] = _T('info_passes_identiques');
- }
- }
- if (isset($erreurs['oubli'])){
- set_request('oubli');
- set_request('oubli_confirm');
- }
- if (_request('nobot'))
- $erreurs['message_erreur'] = _T('pass_rien_a_faire_ici');
- return $erreurs;
- }
- /**
- * Modification du mot de passe d'un auteur.
- * Utilise le cookie d'oubli fourni en url ou l'argument du formulaire pour identifier l'auteur
- *
- * @param int $id_auteur
- */
- function formulaires_mot_de_passe_traiter_dist($id_auteur=null, $jeton=null){
- $res = array('message_ok'=>'');
- refuser_traiter_formulaire_ajax(); // puisqu'on va loger l'auteur a la volee (c'est bonus)
- // compatibilite anciens appels du formulaire
- if (is_null($jeton)) $jeton = _request('p');
- $row = retrouve_auteur($id_auteur,$jeton);
- if ($row
- && ($id_auteur = $row['id_auteur'])
- && ($oubli = _request('oubli'))) {
- include_spip('action/editer_auteur');
- include_spip('action/inscrire_auteur');
- if ($err = auteur_modifier($id_auteur, array('pass'=>$oubli))){
- $res = array('message_erreur'=>$err);
- }
- else {
- auteur_effacer_jeton($id_auteur);
- $login = $row['login'];
- $res['message_ok'] = "<b>" . _T('pass_nouveau_enregistre') . "</b>".
- "<br />" . _T('pass_rappel_login', array('login' => $login));
- include_spip('inc/auth');
- $row = sql_fetsel("*","spip_auteurs","id_auteur=".intval($id_auteur));
- auth_loger($row);
- }
- }
- return $res;
- }
- ?>
|