Browse Source

Fix #2250 : en edition d'un auteur on dispose d'un bouton qui permet de "Générer un nouveau mot de passe et l'envoyer par email"

Le bouton apparait si la personne qui edite a le droit de modifier le mot de passe.
Un nouveau mot de passe aleatoire est defini et on envoi un mail sur la base de modeles/mail_nouveaux_identifiants.html qui peut etre personalise
svn/root/tags/spip-3.2.0beta2
Cerdic 6 years ago
parent
commit
4b36089130
  1. 1
      .gitattributes
  2. 1
      ecrire/lang/ecrire_fr.php
  3. 3
      ecrire/lang/spip_fr.php
  4. 4
      prive/formulaires/editer_auteur.html
  5. 65
      prive/formulaires/editer_auteur.php
  6. 29
      prive/modeles/mail_nouveaux_identifiants.html

1
.gitattributes vendored

@ -485,6 +485,7 @@ prive/javascript/login.js -text
prive/javascript/sha256.js -text
prive/modeles/formulaire.html -text
prive/modeles/mail_inscription.html -text
prive/modeles/mail_nouveaux_identifiants.html -text
prive/modeles/mail_oubli.html -text
prive/modeles/object_jobs_list.html -text
prive/modeles/pagination.html -text

1
ecrire/lang/ecrire_fr.php

@ -61,6 +61,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'bouton_radio_non_envoi_annonces_editoriales' => 'Ne pas envoyer d’annonces éditoriales',
'bouton_redirection' => 'REDIRECTION',
'bouton_relancer_installation' => 'Relancer l’installation',
'bouton_reset_password' => 'Générer un nouveau mot de passe et l\'envoyer par email',
'bouton_suivant' => 'Suivant',
'bouton_tenter_recuperation' => 'Tenter une réparation',
'bouton_test_proxy' => 'Essayer le proxy',

3
ecrire/lang/spip_fr.php

@ -545,6 +545,9 @@ le site "@nom_site_spip@" (@adresse_login@) :',
// M
'masquer_colonne' => 'Masquer cette colonne',
'masquer_trad' => 'masquer les traductions',
'message_nouveaux_identifiants_ok' => 'Les nouveaux identifiants de connexion ont été envoyés à @email@.',
'message_nouveaux_identifiants_echec_envoi' => 'Les nouveaux identifiants de connexion n\'ont pas pu être envoyés.',
'message_nouveaux_identifiants_echec' => 'Impossible de générer de nouveaux identifiants.',
'module_fichiers_langues' => 'Fichiers de langue',
// N

4
prive/formulaires/editer_auteur.html

@ -103,6 +103,10 @@
<label for='new_pass2'><:info_confirmer_passe:></label>[
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{new_pass2})</span>
]<input type='password' autocomplete="off" class='password' name='new_pass2' id='new_pass2' value="" />
[(#ENV{config/edit_pass}|oui)
<input type="submit" class="over offscreen" name="submit" value="submit" />
<button class="submit reset_password" type="submit" name="reset_password" value="1"><:bouton_reset_password:></button>
]
</div>]
</div>
</fieldset>

65
prive/formulaires/editer_auteur.php

@ -205,6 +205,24 @@ function formulaires_editer_auteur_verifier_dist(
}
}
if (!count($erreurs) and _request('reset_password')) {
$auteur = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
$config = auteurs_edit_config($auteur);
if ($config['edit_pass']) {
if ($email = auteur_regenerer_identifiants($id_auteur)) {
$erreurs['message_ok'] = _T('message_nouveaux_identifiants_ok', array('email' => $email));
$erreurs['message_erreur'] = '';
} elseif ($email === false) {
$erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec_envoi');
} else {
$erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec_creation');
}
} else {
$erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec_creation');
}
return $erreurs;
}
// corriger un cas si frequent : www.example.org sans le http:// qui precede
if ($url = _request('url_site') and !tester_url_absolue($url)) {
if (strpos($url, ':') === false and strncasecmp($url, 'www.', 4) === 0) {
@ -350,3 +368,50 @@ function formulaires_editer_auteur_traiter_dist(
return $res;
}
/**
* Renvoyer des identifiants
* @param int $id_auteur
* @param bool $notifier
* @param array $contexte
* @return string
*/
function auteur_regenerer_identifiants($id_auteur, $notifier=true, $contexte = array()) {
if ($id_auteur){
$set = array();
include_spip('inc/access');
$set['pass'] = creer_pass_aleatoire();
include_spip('action/editer_auteur');
auteur_modifier($id_auteur,$set);
$row = sql_fetsel('*','spip_auteurs','id_auteur='.intval($id_auteur));
include_spip('inc/filtres');
if ($notifier
and $row['email']
and email_valide($row['email'])
and trouver_fond($fond = 'modeles/mail_nouveaux_identifiants')){
// envoyer l'email avec login/pass
$c = array(
'id_auteur' => $id_auteur,
'nom' => $row['nom'],
'mode' => $row['statut'],
'email' => $row['email'],
'pass' => $set['pass'],
);
// on merge avec les champs fournit en appel, qui sont passes au modele de notification donc
$contexte = array_merge($contexte, $c);
$message = recuperer_fond($fond, $contexte);
include_spip("inc/notifications");
notifications_envoyer_mails($row['email'],$message);
return $row['email'];
}
return false;
}
return '';
}

29
prive/modeles/mail_nouveaux_identifiants.html

@ -0,0 +1,29 @@
[(#REM)
Squelette
(c) 2009 SPIP
Distribue sous licence GPL
][(#HTTP_HEADER{Content-type: text/plain[; charset=(#CHARSET)]})]
[\[(#NOM_SITE_SPIP|concat{'\] : ',<:form_forum_identifiants:>}|nettoyer_titre_email)]
<:form_forum_message_auto:>
<:form_forum_bonjour{nom=#ENV{nom}}:>
#SET{url_site,#URL_SITE_SPIP/}
[(#ENV{mode}|=={6forum}|oui)
#SET{url_login,#URL_PAGE{login}}
<:form_forum_voici1{nom_site_spip=#NOM_SITE_SPIP,adresse_site=#GET{url_site},adresse_login=#GET{url_login}}:>
]
[(#ENV{mode}|=={6forum}|non)
#SET{url_login,#URL_SITE_SPIP|concat{'/',#EVAL{_DIR_RESTREINT_ABS}}}
<:form_forum_voici2{nom_site_spip=#NOM_SITE_SPIP,adresse_site=#GET{url_site},adresse_login=#GET{url_login}}:>
]
- <:form_forum_login:>[ (#ENV{email,email})]
- <:form_forum_pass:>[ (#ENV{pass,pass})]
#FILTRE{supprimer_tags|filtrer_entites|trim}
Loading…
Cancel
Save