diff --git a/htdocs/admin/security.php b/htdocs/admin/security.php
index 50db74dafdf..d2d5ecde622 100644
--- a/htdocs/admin/security.php
+++ b/htdocs/admin/security.php
@@ -170,9 +170,23 @@ elseif ($action == 'disable_MAIN_SECURITY_DISABLEFORGETPASSLINK')
if ($action == 'maj_pattern')
{
- dolibarr_set_const($db, "USER_PASSWORD_PATTERN", GETPOST("pattern"), 'chaine', 0, '', $conf->entity);
- header("Location: security.php");
- exit;
+ $pattern = GETPOST("pattern");
+ $explodePattern = explode(';', $pattern);
+
+ $patternInError = false;
+ if($explodePattern[0] < 1 || $explodePattern[4] < 0){
+ $patternInError = true;
+ }
+
+ if($explodePattern[0] < $explodePattern[1] + $explodePattern[2] + $explodePattern[3]){
+ $patternInError = true;
+ }
+
+ if(!$patternInError){
+ dolibarr_set_const($db, "USER_PASSWORD_PATTERN", $pattern, 'chaine', 0, '', $conf->entity);
+ header("Location: security.php");
+ exit;
+ }
}
@@ -278,13 +292,6 @@ if ($conf->global->USER_PASSWORD_GENERATED == "Perso"){
$tabConf = explode(";", $conf->global->USER_PASSWORD_PATTERN);
- /*$this->length2 = $tabConf[0];
- $this->NbMaj = $tabConf[1];
- $this->NbNum = $tabConf[2];
- $this->NbSpe = $tabConf[3];
- $this->NbRepeat = $tabConf[4];
- $this->WithoutAmbi = $tabConf[5];
- */
print '
';
print '
';
print '';
@@ -350,6 +357,13 @@ if ($conf->global->USER_PASSWORD_GENERATED == "Perso"){
print ' }';
print ' function valuePossible(){';
+ print ' var fields = ["#minlenght", "#NbMajMin", "#NbNumMin", "#NbSpeMin", "#NbIteConsecutive"];';
+ print ' for(var i = 0 ; i < fields.length ; i++){';
+ print ' if($(fields[i]).val() < $(fields[i]).attr("min")){';
+ print ' return false;';
+ print ' }';
+ print ' }';
+ print ' ';
print ' var length = parseInt($("#minlenght").val());';
print ' var length_mini = parseInt($("#NbMajMin").val()) + parseInt($("#NbNumMin").val()) + parseInt($("#NbSpeMin").val());';
print ' return length >= length_mini;';
diff --git a/htdocs/core/modules/security/generate/modGeneratePassPerso.class.php b/htdocs/core/modules/security/generate/modGeneratePassPerso.class.php
index d9d625f0433..4c02d40cc6b 100644
--- a/htdocs/core/modules/security/generate/modGeneratePassPerso.class.php
+++ b/htdocs/core/modules/security/generate/modGeneratePassPerso.class.php
@@ -206,7 +206,7 @@ class modGeneratePassPerso extends ModeleGenPassword
}
/**
- * consecutive iterations of the same character
+ * Consecutive iterations of the same character
*
* @param string $password Password to check
* @return int 0 if KO, >0 if OK
@@ -214,8 +214,12 @@ class modGeneratePassPerso extends ModeleGenPassword
public function consecutiveInterationSameCharacter($password)
{
$last = "";
+
+ if (empty($this->NbRepeat)) return 1;
+
$count = 0;
$char = str_split($password);
+
foreach($char as $c) {
if($c != $last) {
$last = $c;