Changeset 101782 in spip-zone


Ignore:
Timestamp:
Jan 17, 2017, 9:51:32 AM (3 years ago)
Author:
erational@…
Message:

Comme beaucoup de plugins (contact par ex.) detournent les statuts auteurs.
S'assurer qu'on ré-initialise uniquement les auteurs éditoriaux.
Un menu de configuration permet de choisir quels statuts, on désire ré-initialiser (par défaut Admin & rédactteur)

Location:
_plugins_/motpasseexpirable
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/motpasseexpirable/formulaires/configurer_motpasseexpirable.html

    r74998 r101782  
    1111
    1212                <ul>
    13         #SET{erreurs,#ENV**{erreurs}|table_valeur{delai}}
     13                                #SET{erreurs,#ENV**{erreurs}|table_valeur{delai}}
    1414                                <li class="editer editer_delai[ (#GET{erreurs}|oui)erreur]">
    15                                         <label for="editer_delai"><:motpasseexpirable:cfg_delai:></label>
    16           [<span class='erreur_message'>(#GET{erreurs})</span>]
    17           <input type="text" name="delai" class="text" value="#ENV*{delai,30}" id="delai" />
    18                                 </li>   
    19        
    20        
    21         <!-- TODO
    22                ajouter d'autres options:
    23                - exclure webmestres ?
    24                - exclure compte sans email ?
    25                
    26                .... -->
    27     </ul>
     15                                <label for="editer_delai"><:motpasseexpirable:cfg_delai:></label>
     16                                [<span class='erreur_message'>(#GET{erreurs})</span>]
     17                                <input type="text" name="delai" class="text" value="#ENV*{delai,30}" id="delai" />
     18                                </li>
     19
     20                                [(#SAISIE{statuts_auteurs,statuts,
     21                                        label=<:motpasseexpirable:cfg_status:>,
     22                                        explication=<:motpasseexpirable:cfg_status_explication:>,
     23                                        defaut=#LISTE{0minirezo,1comite},
     24                                        multiple=oui})]
     25                </ul>
    2826
    2927                <input type="hidden" name="_meta_casier" value="motpasseexpirable" />
  • _plugins_/motpasseexpirable/genie/motpasseexpirable.php

    r99504 r101782  
    44 *
    55 * @plugin     Mots de passe expirables
    6  * @copyright  2016
     6 * @copyright  2017
    77 * @author     erational
    88 * @licence    GNU/GPL
     
    1414function genie_motpasseexpirable_dist($t){
    1515
    16   // etape 1: mettre à jour la date expiration des comptes nouvellement crées
    17   $date = date("Y-m-d H:i:s");
    18   sql_updateq('spip_auteurs', array('pass_maj' => $date), "pass_maj='0000-00-00 00:00:00'");
     16        // etape 1: mettre à jour la date expiration des comptes nouvellement crées
     17        $date = date('Y-m-d H:i:s');
     18        sql_updateq('spip_auteurs', array('pass_maj' => $date), "pass_maj='0000-00-00 00:00:00'");
    1919
    20   // etape 2: recherche les comptes périmées
    21   include_spip('inc/config');
    22   $delai_expiration = lire_config('motpasseexpirable/delai',30);
    23   $delai_expiration = intval($delai_expiration);
    24   if ($delai_expiration<1)
    25                         $delai_expiration = 1; 
    26   $date_expiration = date("Y-m-d H:i:s", time() - $delai_expiration * 24 * 3600);                     
    27  
    28   $result = sql_select('id_auteur,email', "spip_auteurs", "pass_maj<'$date_expiration'");
    29   while ($row = sql_fetch($result)){
    30        $id_auteur = $row['id_auteur'];
    31        $email = $row['email'];
    32        sql_updateq('spip_auteurs', array('pass' => '*','pass_maj'=>$date), "id_auteur=$id_auteur");
    33        
    34        // notifications
    35        // inspi:  squelettes-idst/formulaires/oubli.php
    36        include_spip('inc/filtres'); # pour email_valide()
    37              if (email_valide($email)) {       
    38             include_spip('inc/texte'); # pour corriger_typo
    39      
    40                         include_spip('action/inscrire_auteur');
    41                         $cookie = auteur_attribuer_jeton($id_auteur);
    42        
    43                         $msg = recuperer_fond(
    44                                 "prive/modeles/mail_motpasseexpirable",
    45                                 array(
    46                                         'url_reset'=>generer_url_public('spip_pass',"p=$cookie", true, false)
    47                                 )
    48                         );
    49                         include_spip("inc/notifications");
    50                         notifications_envoyer_mails($email, $msg);
    51            
    52        }
     20        // etape 2: recherche les comptes périmés
     21        include_spip('inc/config');
     22        $delai_expiration = lire_config('motpasseexpirable/delai', 30);
     23        $delai_expiration = intval($delai_expiration);
     24        if ($delai_expiration < 1) {
     25                $delai_expiration = 1;
     26        }
     27        $date_expiration = date("Y-m-d H:i:s", time() - $delai_expiration * 24 * 3600);
    5328
    54   }
    55   return 1;
     29        $statuts = lire_config('motpasseexpirable/statuts', array('0minirezo', '1comite'));
     30        foreach ($statuts as $k=>$val) {
     31                $statuts[$k] = "'$val'";
     32        }
     33        $statuts = implode(',', $statuts);
     34        $where_sql = array(
     35                "pass_maj < '$date_expiration'",
     36                "statut IN ($statuts)",
     37                // "email != ''",
     38        );
     39        $result = sql_select('id_auteur, email', 'spip_auteurs', $where_sql );
     40
     41        while ($row = sql_fetch($result)){
     42                $id_auteur = $row['id_auteur'];
     43                $email = $row['email'];
     44                spip_log("reset auteur id: $id_auteur / $email ", "motpasseexpirable");
     45                sql_updateq('spip_auteurs', array('pass' => '*', 'pass_maj' => $date), 'id_auteur='.$id_auteur);
     46
     47                // notifications
     48                // inspi: squelettes-dist/formulaires/oubli.php
     49                include_spip('inc/filtres'); # pour email_valide()
     50                if (email_valide($email)) {
     51                                include_spip('inc/texte'); # pour corriger_typo
     52
     53                                include_spip('action/inscrire_auteur');
     54                                $cookie = auteur_attribuer_jeton($id_auteur);
     55
     56                                $msg = recuperer_fond(
     57                                        'prive/modeles/mail_motpasseexpirable',
     58                                        array(
     59                                                'url_reset'=>generer_url_public('spip_pass', 'p='.$cookie, true, false)
     60                                        )
     61                                );
     62                                include_spip('inc/notifications');
     63                                notifications_envoyer_mails($email, $msg);
     64                }
     65        }
     66        return 1;
    5667}
    57 
  • _plugins_/motpasseexpirable/lang/motpasseexpirable_fr.php

    r99504 r101782  
    1212        'cfg_delai' => 'Durée d\'expiration des mots de passe (Nombre de jours)',
    1313        'cfg_titre_parametrages' => 'Paramétrages',
     14        'cfg_status' => 'Qui ?',
     15        'cfg_status_explication' => 'Quelles sont les personnes dont-on doit ré-initialiser les mots de passe ?',
    1416
    1517        // T
  • _plugins_/motpasseexpirable/motpasseexpirable_administrations.php

    r99504 r101782  
    44 *
    55 * @plugin     Mots de passe expirables
    6  * @copyright  2016
     6 * @copyright  2017
    77 * @author     erational
    88 * @licence    GNU/GPL
  • _plugins_/motpasseexpirable/motpasseexpirable_pipelines.php

    r99504 r101782  
    22/**
    33 * Plugin Mots de passe expirables
    4  * (c) 2016 erational
     4 *
    55 * Licence GNU/GPL
    66 */
  • _plugins_/motpasseexpirable/paquet.xml

    r99504 r101782  
    22        prefix="motpasseexpirable"
    33        categorie="auteur"
    4         version="1.0.2"
     4        version="1.1.0"
    55        etat="stable"
    66        compatibilite="[3.0.11;3.1.*]"
     
    1313        <licence>GNU/GPL</licence>
    1414
     15        <necessite nom="saisies" compatibilite="[2.2.3;]" />
     16
    1517        <pipeline nom="taches_generales_cron" inclure="motpasseexpirable_pipelines.php" />
    1618</paquet>
  • _plugins_/motpasseexpirable/prive/modeles/mail_motpasseexpirable.html

    r74998 r101782  
    11[(#REM)
    2 
     2  email de notification
    33  inspire de prive/modeles/mail_oubli
    44
Note: See TracChangeset for help on using the changeset viewer.