Added password method in validator (#625)

Метод который занимается валидацией пароля, в будущем будет дополнен ещё несколькими проверками при необходимости (наличие цифр, букв, спец-символом)
This commit is contained in:
Roman Kelesidis 2023-03-18 22:08:01 +07:00 committed by GitHub
commit edc57bfd2a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 41 additions and 20 deletions

View file

@ -40,21 +40,12 @@ switch ($mode) {
case 'check_pass':
$pass = (string)$this->request['pass'];
$pass_confirm = (string)$this->request['pass_confirm'];
if (empty($pass) || empty($pass_confirm)) {
$html = '<img src="./styles/images/bad.gif"> <span class="leechmed bold">' . $lang['CHOOSE_PASS'] . '</span>';
if ($err = \TorrentPier\Legacy\Validate::password($pass, $pass_confirm)) {
$html = '<img src="./styles/images/bad.gif"> <span class="leechmed bold">' . $err . '</span>';
} else {
if ($pass != $pass_confirm) {
$html = '<img src="./styles/images/bad.gif"> <span class="leechmed bold">' . $lang['CHOOSE_PASS_ERR'] . '</span>';
} else {
if (mb_strlen($pass, 'UTF-8') > 20) {
$html = '<img src="./styles/images/bad.gif"> <span class="leechmed bold">' . sprintf($lang['CHOOSE_PASS_ERR_MAX'], 20) . '</span>';
} elseif (mb_strlen($pass, 'UTF-8') < 5) {
$html = '<img src="./styles/images/bad.gif"> <span class="leechmed bold">' . sprintf($lang['CHOOSE_PASS_ERR_MIN'], 5) . '</span>';
} else {
$text = (IS_GUEST) ? $lang['CHOOSE_PASS_REG_OK'] : $lang['CHOOSE_PASS_OK'];
$html = '<img src="./styles/images/good.gif"> <span class="seedmed bold">' . $text . '</span>';
}
}
$text = (IS_GUEST) ? $lang['CHOOSE_PASS_REG_OK'] : $lang['CHOOSE_PASS_OK'];
$html = '<img src="./styles/images/good.gif"> <span class="seedmed bold">' . $text . '</span>';
}
break;
}

View file

@ -204,13 +204,10 @@ foreach ($profile_fields as $field => $can_edit) {
// пароль для гостя и при смене пароля юзером
if (!empty($new_pass)) {
if (mb_strlen($new_pass, 'UTF-8') > 20) {
$errors[] = sprintf($lang['CHOOSE_PASS_ERR_MAX'], 20);
} elseif (mb_strlen($new_pass, 'UTF-8') < 4) {
$errors[] = sprintf($lang['CHOOSE_PASS_ERR_MIN'], 4);
} elseif ($new_pass != $cfm_pass) {
$errors[] = $lang['CHOOSE_PASS_ERR'];
if ($err = \TorrentPier\Legacy\Validate::password($new_pass, $cfm_pass)) {
$errors[] = $err;
}
$db_data['user_password'] = md5(md5($new_pass));
}

View file

@ -143,4 +143,37 @@ class Validate
return false;
}
/**
* Validate user entered password
*
* @param string $password
* @param string $password_confirm
*
* @return bool|string
*/
public static function password(string $password, string $password_confirm)
{
global $lang;
// Check for empty
if (empty($pass) || empty($pass_confirm)) {
return $lang['CHOOSE_PASS'];
}
// Check password confirm
if ($password_confirm != $password) {
return $lang['CHOOSE_PASS_ERR'];
}
// Length
if (mb_strlen($password, 'UTF-8') > PASSWORD_MAX_LENGTH) {
return sprintf($lang['CHOOSE_PASS_ERR_MAX'], PASSWORD_MAX_LENGTH);
}
if (mb_strlen($password, 'UTF-8') < PASSWORD_MIN_LENGTH) {
return sprintf($lang['CHOOSE_PASS_ERR_MIN'], PASSWORD_MIN_LENGTH);
}
return false;
}
}