source: spip-zone/_plugins_/motpassecomplexe/trunk/motpassecomplexe_fonctions.php @ 96779

Last change on this file since 96779 was 96779, checked in by guillaume.wauquier@…, 5 years ago

Passage du plugin en version SPIP 3.1

File size: 2.9 KB
Line 
1<?php
2
3if (!defined('_ECRIRE_INC_VERSION')) return;
4
5/**
6 * Verification de la validite d'un mot de passe pour le mode d'auth concerne
7 * c'est ici que se font eventuellement les verifications de longueur mini/maxi
8 * ou de force.
9 *
10 * @param string $new_pass
11 * @return string
12 *  message d'erreur si login non valide, chaine vide sinon
13 */
14function motpassecomplexe_verifier_pass($new_pass){
15
16  // charge les constantes
17  // define('_PASS_LONGUEUR_MINI', '6');                                         // longueur  - defaut: 6
18  if (!defined('_MOTCOMPLEXE_MINUSCULE')) define('_MOTCOMPLEXE_MINUSCULE', 1);    // nb de minuscules  - defaut: 1
19  if (!defined('_MOTCOMPLEXE_MAJUSCULE')) define('_MOTCOMPLEXE_MAJUSCULE', 1);    // nb de majuscules  - defaut: 1
20  if (!defined('_MOTCOMPLEXE_CHIFFRE')) define('_MOTCOMPLEXE_CHIFFRE', 1);        // nb de chiffres  - defaut: 1
21  if (!defined('_MOTCOMPLEXE_SPECIAL')) define('_MOTCOMPLEXE_SPECIAL', 1);        // nb de caractères spéciaux  - defaut: 1
22 
23  $requis = array (
24          'nb' => _PASS_LONGUEUR_MINI,
25          'nb_min' => _MOTCOMPLEXE_MINUSCULE,
26          'nb_maj' => _MOTCOMPLEXE_MAJUSCULE,
27          'nb_int' => _MOTCOMPLEXE_CHIFFRE,
28          'nb_spe' => _MOTCOMPLEXE_SPECIAL,         
29  ); 
30 
31  $nb =      strlen($new_pass);
32  $nb_min =  motpassecomplexe_count_pattern($new_pass, '![^a-z]+!');
33  $nb_maj =  motpassecomplexe_count_pattern($new_pass, '![^A-Z]+!');
34  $nb_int =  motpassecomplexe_count_pattern($new_pass, '![^0-9]+!');
35  $nb_spe =  $nb - motpassecomplexe_count_pattern($new_pass, '![^A-z0-9 ]+!');
36 
37  $verifications = array( 
38        array (
39          'constante' => _PASS_LONGUEUR_MINI,
40          'operateur' => '>=',
41          'variable' =>  $nb,
42        ),
43        array (
44          'constante' => _MOTCOMPLEXE_MINUSCULE,
45          'operateur' => '>=',
46          'variable' =>  $nb_min,
47        ),
48        array (
49          'constante' => _MOTCOMPLEXE_MAJUSCULE,
50          'operateur' => '>=',
51          'variable' =>  $nb_maj,
52        ),
53        array (
54          'constante' => _MOTCOMPLEXE_CHIFFRE,
55          'operateur' => '>=',
56          'variable' =>  $nb_int,
57        ),
58        array (
59          'constante' => _MOTCOMPLEXE_SPECIAL,
60          'operateur' => '>=',
61          'variable' =>  $nb_spe,       
62        ),   
63  ); 
64 
65
66  foreach ($verifications as $verification) {         
67       if (!version_compare($verification['variable'], $verification['constante'], $verification['operateur'])) 
68                  return _T('motpassecomplexe:info_passe_trop_court', $requis);
69  }
70   
71
72        return '';
73}
74
75/**
76 * Compte le nombre de caractères d'une chaine vérifiant une regex
77 *
78 * @param string $login
79 *      chaine à verifier
80 * @param string $pattern
81 *      motif regex à tester
82 * @return int
83 *      la longueur
84 */
85function motpassecomplexe_count_pattern($str, $pattern) {
86  return strlen(preg_replace($pattern, '', $str));
87}
Note: See TracBrowser for help on using the repository browser.