allow optional length parameter for Froxlor.generatePassword API command

Signed-off-by: Michael Kaufmann <d00p@froxlor.org>
This commit is contained in:
Michael Kaufmann
2022-10-17 17:26:13 +02:00
parent 2987ae5a05
commit 28f6d59336
2 changed files with 9 additions and 3 deletions

View File

@@ -254,12 +254,16 @@ class Froxlor extends ApiCommand
/** /**
* returns a random password based on froxlor settings for min-length, included characters, etc. * returns a random password based on froxlor settings for min-length, included characters, etc.
* *
* @param int $length
* optional length of password, defaults to 10
*
* @access admin, customer * @access admin, customer
* @return string * @return string
*/ */
public function generatePassword() public function generatePassword()
{ {
return $this->response(Crypt::generatePassword()); $length = $this->getParam('length', true, 10);
return $this->response(Crypt::generatePassword($length));
} }
/** /**

View File

@@ -36,13 +36,15 @@ class Crypt
/** /**
* Generates a random password * Generates a random password
*/ */
public static function generatePassword() public static function generatePassword(int $length = 0)
{ {
$alpha_lower = 'abcdefghijklmnopqrstuvwxyz'; $alpha_lower = 'abcdefghijklmnopqrstuvwxyz';
$alpha_upper = strtoupper($alpha_lower); $alpha_upper = strtoupper($alpha_lower);
$numeric = '0123456789'; $numeric = '0123456789';
$special = Settings::Get('panel.password_special_char'); $special = Settings::Get('panel.password_special_char');
$length = Settings::Get('panel.password_min_length') > 3 ? Settings::Get('panel.password_min_length') : 10; if (empty($length)) {
$length = Settings::Get('panel.password_min_length') > 3 ? Settings::Get('panel.password_min_length') : $length;
}
$pw = self::specialShuffle($alpha_lower); $pw = self::specialShuffle($alpha_lower);
$n = floor(($length) / 4); $n = floor(($length) / 4);