From 0bcdcc252d11761a9de0191e426707e36b0db01e Mon Sep 17 00:00:00 2001 From: romanetar Date: Tue, 17 Dec 2024 14:51:17 +0100 Subject: [PATCH] fix: password policy validation Signed-off-by: romanetar --- app/Providers/AppServiceProvider.php | 18 ++++++++++-------- public/assets/js/ajax.utils.js | 6 ++++-- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index b15168bf..b9aa6cb7 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -102,27 +102,29 @@ public function boot() }); Validator::extend("password_policy", function($attribute, $value, $parameters, $validator){ + $min_length = Config::get("auth.password_min_length"); + $max_length = Config::get("auth.password_max_length"); + $warning = Config::get("auth.password_shape_warning"); + $pattern = Config::get("auth.password_shape_pattern"); + + $validator->addReplacer('password_policy', function($message, $attribute, $rule, $parameters) use ($validator, $min_length, $max_length, $warning) { + return sprintf("The %s must be %s–%s characters, and %s", $attribute, $min_length, $max_length, $warning); + }); + $password = TextUtils::trim($value); - $min_length = Config::get("auth.password_min_length"); if (strlen($password) < $min_length) { return false; } - $max_length = Config::get("auth.password_max_length"); if (strlen($password) > $max_length) { return false; } - $warning = Config::get("auth.password_shape_warning"); - $pattern = Config::get("auth.password_shape_pattern"); + if (!preg_match("/$pattern/", $password)) { return false; } - $validator->addReplacer('password_policy', function($message, $attribute, $rule, $parameters) use ($validator, $min_length, $max_length, $warning) { - return sprintf("The %s must be %s–%s characters, and %s", $attribute, $min_length, $max_length, $warning); - }); - return true; }); } diff --git a/public/assets/js/ajax.utils.js b/public/assets/js/ajax.utils.js index 7ffb210f..70bc53f3 100644 --- a/public/assets/js/ajax.utils.js +++ b/public/assets/js/ajax.utils.js @@ -5,9 +5,11 @@ function ajaxError(jqXHR, textStatus, errorThrown){ if(HTTP_status == 412 ){ var msg = ''; - for(const error of response.errors) { - msg +='* '+ error+'\n'; + for (const [key, value] of Object.entries(response.errors)) { + msg += isNaN(key) ? `* ${key}: ` : ""; + msg += `${value}\n`; } + displayErrorMessage('Validation error', msg); return; }