Bladeren bron

added extra validation, verification and unit tests for issue ZF-7289

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@22613 44c647ce-9c0f-0410-b52a-842ac1e357ba
dragonbe 15 jaren geleden
bovenliggende
commit
629a6ac2e2
2 gewijzigde bestanden met toevoegingen van 15 en 1 verwijderingen
  1. 12 1
      library/Zend/Auth/Adapter/DbTable.php
  2. 3 0
      tests/Zend/Auth/Adapter/DbTable/BasicSqliteTest.php

+ 12 - 1
library/Zend/Auth/Adapter/DbTable.php

@@ -367,11 +367,22 @@ class Zend_Auth_Adapter_DbTable implements Zend_Auth_Adapter_Interface
         $this->_authenticateSetup();
         $dbSelect = $this->_authenticateCreateSelect();
         $resultIdentities = $this->_authenticateQuerySelect($dbSelect);
-
+        
         if ( ($authResult = $this->_authenticateValidateResultSet($resultIdentities)) instanceof Zend_Auth_Result) {
             return $authResult;
         }
 
+        if (true === $this->getAmbiguityIdentity()) {
+            $validIdentities = array ();
+            $zendAuthCredentialMatchColumn = $this->_zendDb->foldCase('zend_auth_credential_match');
+            foreach ($resultIdentities as $identity) {
+                if (1 === (int) $identity[$zendAuthCredentialMatchColumn]) {
+                    $validIdentities[] = $identity;
+                }
+            }
+            $resultIdentities = $validIdentities;
+        }
+        
         $authResult = $this->_authenticateValidateResult(array_shift($resultIdentities));
         return $authResult;
     }

+ 3 - 0
tests/Zend/Auth/Adapter/DbTable/BasicSqliteTest.php

@@ -444,6 +444,9 @@ class Zend_Auth_Adapter_DbTable_BasicSqliteTest extends PHPUnit_Framework_TestCa
         $this->assertTrue($result->isValid());
         $this->assertEquals('my_username', $result->getIdentity());
         
+        $this->_adapter = null;
+        $this->_setupAuthAdapter();
+        
         // test if user 2 can authenticate
         $this->_adapter->setIdentity('my_username')
                        ->setCredential('my_otherpass')