getValue ( 'SELECT active FROM account.user WHERE name = #', [$_REQUEST['user']]); if (!$isEnabled) return TRUE; $restrictions = $db->getRow ( 'SELECT length, nUpper, nDigits, nPunct FROM account.userPassword'); $pass = []; $newPass = ''; $nAlpha = $restrictions['length'] - ( $restrictions['nUpper'] + $restrictions['nDigits'] + $restrictions['nPunct']); $this->genRands ($pass, self::LOWERS, $nAlpha); $this->genRands ($pass, self::UPPERS, $restrictions['nUpper']); $this->genRands ($pass, self::DIGITS, $restrictions['nDigits']); $this->genRands ($pass, self::SYMBOLS, $restrictions['nPunct']); for ($i = count ($pass) - 1; $i >= 0; $i--) { $rand = rand (0, $i); $newPass .= $pass[$rand]; array_splice ($pass, $rand, 1); } // XXX: Debug error_log ($newPass); return TRUE; $db->query ( 'UPDATE account.user SET password = MD5(#) WHERE name = #', [$randomPass, $_REQUEST['user']]); return TRUE; } function genRands (&$pass, $chars, $max) { $len = strlen ($chars) - 1; for ($i = 0; $i < $max; $i++) $pass[] = $chars[rand (0, $len)]; } } ?>