в "if ($this->login['uident'] &&..." тоже на ноль в $this->login['uident'] сработает. Через $this->login['uident'] передаётся введённый пароль. Проблема заявлена только в rsaauth, но при проверке обычных паролей логика та же - сперва выставляют флаг успешной аутентификации и только потом проверяют пароль и сбрасывают этот флаг. diff --git a/typo3/sysext/saltedpasswords/sv1/class.tx_saltedpasswords_sv1.php b/typo3/sysext/saltedpasswords/sv1/class.tx_saltedpasswords_sv1.php
index 7137664..4e05126 100644
--- a/typo3/sysext/saltedpasswords/sv1/class.tx_saltedpasswords_sv1.php
+++ b/typo3/sysext/saltedpasswords/sv1/class.tx_saltedpasswords_sv1.php
@@ -237,7 +237,7 @@ class tx_saltedpasswords_sv1 extends tx_sv_authbase {
}
if ($this->login['uident'] && $this->login['uname']) {
- if (!empty($this->login['uident_text'])) {
+ if ((string)$this->login['uident_text'] !== '') {
$validPasswd = $this->compareUident(
$user,
$this->login
diff --git a/typo3/sysext/sv/class.tx_sv_auth.php b/typo3/sysext/sv/class.tx_sv_auth.php
index f974cdc..8f026ec 100644
--- a/typo3/sysext/sv/class.tx_sv_auth.php
+++ b/typo3/sysext/sv/class.tx_sv_auth.php
@@ -125,7 +125,7 @@ class tx_sv_auth extends tx_sv_authbase {
public function authUser(array $user) {
$OK = 100;
- if ($this->login['uident'] && $this->login['uname']) {
+ if ((string)$this->login['uident'] !== '' && $this->login['uname']) {
// Checking password match for user:
$OK = $this->compareUident($user, $this->login);