mirror of
https://gitlab.easter-eggs.com/ee/ldapsaisie.git
synced 2024-11-22 18:09:06 +01:00
LSformRule :: password : Added minValidRegex parameter and use preg_match() function instead of deprecated ereg() function
This commit is contained in:
parent
6bf08b81a4
commit
5efa437612
3 changed files with 53 additions and 9 deletions
|
@ -31,11 +31,23 @@
|
|||
<term>regex</term>
|
||||
<listitem>
|
||||
<simpara>Expression(s) régulière(s) que doit respecter le mot de passe. Ce
|
||||
paramètre peut être une expression régulière ou un tableau d'expressions
|
||||
régulières.</simpara>
|
||||
paramètre peut être une expression régulière au format
|
||||
<ulink url='http://php.net/pcre.pattern'>PCRE</ulink> ou un tableau
|
||||
d'expressions régulières.</simpara>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>minValidRegex</term>
|
||||
<listitem>
|
||||
<simpara>Le nombre minimum d'expression régulière qui doivent être validées
|
||||
pour que le mot de passe soit considéré comme correct. Ce paramètre est
|
||||
optionnel, par défaut, toutes les expressions régulières doivent être
|
||||
validées.</simpara>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
|
||||
</variablelist>
|
||||
|
||||
</sect4>
|
||||
|
|
|
@ -513,7 +513,14 @@ $GLOBALS['LSobjects']['LSpeople'] = array (
|
|||
'msg' => 'Your password must contain from 8 to 10 characters.',
|
||||
'params' => array(
|
||||
'minLength' => 8,
|
||||
'maxLength' => 10
|
||||
'maxLength' => 10,
|
||||
'regex' => array (
|
||||
'/[A-Z]/',
|
||||
'/[a-z]/',
|
||||
'/[0-9]/',
|
||||
'/[^A-Za-z0-9]/',
|
||||
),
|
||||
'minValidRegex' => 3
|
||||
)
|
||||
)
|
||||
),
|
||||
|
|
|
@ -37,6 +37,8 @@ class LSformRule_password extends LSformRule {
|
|||
* - 'prohibitedValues' : Un tableau de valeurs interdites
|
||||
* - 'regex' : une ou plusieurs expressions régulières
|
||||
* devant matche
|
||||
* - 'minValidRegex' : le nombre minimun d'expressions
|
||||
* régulières à valider
|
||||
* @param object $formElement L'objet formElement attaché
|
||||
*
|
||||
* @return boolean true si la valeur est valide, false sinon
|
||||
|
@ -56,13 +58,29 @@ class LSformRule_password extends LSformRule {
|
|||
if (!is_array($options['params']['regex'])) {
|
||||
$options['params']['regex']=array($options['params']['regex']);
|
||||
}
|
||||
foreach($options['params']['regex'] as $regex) {
|
||||
if (!ereg($regex,$value))
|
||||
return;
|
||||
if (isset($options['params']['minValidRegex'])) {
|
||||
$options['params']['minValidRegex']=(int)$options['params']['minValidRegex'];
|
||||
if ($options['params']['minValidRegex']==0 || $options['params']['minValidRegex']>count($options['params']['regex'])) {
|
||||
$options['params']['minValidRegex']=count($options['params']['regex']);
|
||||
}
|
||||
}
|
||||
else {
|
||||
$options['params']['minValidRegex']=count($options['params']['regex']);
|
||||
}
|
||||
$valid=0;
|
||||
foreach($options['params']['regex'] as $regex) {
|
||||
if ($regex[0]!='/') {
|
||||
LSerror :: addErrorCode('LSformRule_password_01');
|
||||
continue;
|
||||
}
|
||||
if (preg_match($regex,$value))
|
||||
$valid++;
|
||||
}
|
||||
if ($valid<$options['params']['minValidRegex'])
|
||||
return;
|
||||
}
|
||||
|
||||
if(is_array($options['params']['prohibitedValues'])) {
|
||||
if(isset($options['params']['prohibitedValues']) && is_array($options['params']['prohibitedValues'])) {
|
||||
if (in_array($value,$options['params']['prohibitedValues']))
|
||||
return;
|
||||
}
|
||||
|
@ -72,4 +90,11 @@ class LSformRule_password extends LSformRule {
|
|||
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Error Codes
|
||||
*/
|
||||
LSerror :: defineError('LSformRule_password_01',
|
||||
_("LSformRule_password : Invalid regex configured : %{regex}. You must use PCRE (begining by '/' caracter).")
|
||||
);
|
||||
?>
|
||||
|
|
Loading…
Reference in a new issue