[BUGFIX] The delay if wrong credentials are provided during backend login can be...
authorHelmut Hummel <helmut.hummel@typo3.org>
Wed, 27 Jul 2011 10:27:23 +0000 (12:27 +0200)
committerOliver Hader <oliver@typo3.org>
Wed, 27 Jul 2011 10:28:40 +0000 (12:28 +0200)
Change-Id: Ia741992cda0ae6294fd689587e564d4ffae64db4
Resolves: #24457
Reviewed-on: http://review.typo3.org/3741
Reviewed-by: Oliver Hader
Tested-by: Oliver Hader
typo3/index.php

index d75ccba..b8c615e 100644 (file)
@@ -313,7 +313,7 @@ class SC_index {
                        'FORM'             => $content,
                        'NEWS'             => $this->makeLoginNews(),
                        'COPYRIGHT'        => $this->makeCopyrightNotice(),
-                       'CSS_ERRORCLASS'   => ($this->commandLI ? ' class="error"' : ''),
+                       'CSS_ERRORCLASS'   => ($this->isLoginInProgress() ? ' class="error"' : ''),
                        'CSS_OPENIDCLASS'  => 't3-login-openid-' . (t3lib_extMgm::isLoaded('openid') ? 'enabled' : 'disabled'),
 
                                // the labels will be replaced later on, thus the other parts above
@@ -354,8 +354,8 @@ class SC_index {
                global $BE_USER,$TBE_TEMPLATE;
 
                        // Do redirect:
-                       // If a user is logged in AND a) if either the login is just done (commandLI) or b) a loginRefresh is done or c) the interface-selector is NOT enabled (If it is on the other hand, it should not just load an interface, because people has to choose then...)
-               if ($BE_USER->user['uid'] && ($this->commandLI || $this->loginRefresh || !$this->interfaceSelector))    {
+                       // If a user is logged in AND a) if either the login is just done (isLoginInProgress) or b) a loginRefresh is done or c) the interface-selector is NOT enabled (If it is on the other hand, it should not just load an interface, because people has to choose then...)
+               if ($BE_USER->user['uid'] && ($this->isLoginInProgress() || $this->loginRefresh || !$this->interfaceSelector))  {
 
                                // If no cookie has been set previously we tell people that this is a problem. This assumes that a cookie-setting script (like this one) has been hit at least once prior to this instance.
                        if (!$_COOKIE[$BE_USER->name]) {
@@ -407,7 +407,7 @@ class SC_index {
                                        }
                                ');
                        }
-               } elseif (!$BE_USER->user['uid'] && $this->commandLI) {
+               } elseif (!$BE_USER->user['uid'] && $this->isLoginInProgress()) {
                        sleep(5);       // Wrong password, wait for 5 seconds
                }
        }
@@ -426,7 +426,7 @@ class SC_index {
                $this->interfaceSelector_jump = '';
 
                        // If interfaces are defined AND no input redirect URL in GET vars:
-               if ($TYPO3_CONF_VARS['BE']['interfaces'] && ($this->commandLI || !$this->redirect_url)) {
+               if ($TYPO3_CONF_VARS['BE']['interfaces'] && ($this->isLoginInProgress() || !$this->redirect_url))       {
                        $parts = t3lib_div::trimExplode(',',$TYPO3_CONF_VARS['BE']['interfaces']);
                        if (count($parts)>1)    {       // Only if more than one interface is defined will we show the selector:
 
@@ -765,6 +765,15 @@ class SC_index {
                        }
                }
        }
+       /**
+        * Checks if login credentials are currently submitted
+        *
+        * @return      boolean
+        */
+       protected function isLoginInProgress() {
+               $username = t3lib_div::_GP('username');
+               return !(empty($username) && empty($this->commandLI));
+       }
 }