diff --git a/security/PasswordEncryptor.php b/security/PasswordEncryptor.php index d9a08b3c3..10d5f62cc 100644 --- a/security/PasswordEncryptor.php +++ b/security/PasswordEncryptor.php @@ -161,7 +161,7 @@ class PasswordEncryptor_PHPHash extends PasswordEncryptor { */ class PasswordEncryptor_LegacyPHPHash extends PasswordEncryptor_PHPHash { function encrypt($password, $salt = null, $member = null) { - $password = parent::encrypt($password . $salt, $member, $salt); + $password = parent::encrypt($password, $salt, $member); // Legacy fix: This shortening logic is producing unpredictable results. // diff --git a/tests/security/MemberAuthenticatorTest.php b/tests/security/MemberAuthenticatorTest.php index 6e6ad2615..e4ca544a5 100644 --- a/tests/security/MemberAuthenticatorTest.php +++ b/tests/security/MemberAuthenticatorTest.php @@ -6,13 +6,16 @@ class MemberAuthenticatorTest extends SapphireTest { function testLegacyPasswordHashMigrationUponLogin() { $member = new Member(); - $member->Email = 'test@test.com'; + + $field=Member::get_unique_identifier_field(); + + $member->$field = 'test@test.com'; $member->PasswordEncryption = "sha1"; $member->Password = "mypassword"; $member->write(); $data = array( - 'Email' => $member->Email, + 'Email' => $member->$field, 'Password' => 'mypassword' ); MemberAuthenticator::authenticate($data); @@ -25,14 +28,16 @@ class MemberAuthenticatorTest extends SapphireTest { function testNoLegacyPasswordHashMigrationOnIncompatibleAlgorithm() { PasswordEncryptor::register('crc32', 'PasswordEncryptor_PHPHash("crc32")'); + $field=Member::get_unique_identifier_field(); + $member = new Member(); - $member->Email = 'test@test.com'; + $member->$field = 'test@test.com'; $member->PasswordEncryption = "crc32"; $member->Password = "mypassword"; $member->write(); $data = array( - 'Email' => $member->Email, + 'Email' => $member->$field, 'Password' => 'mypassword' ); MemberAuthenticator::authenticate($data); @@ -41,4 +46,14 @@ class MemberAuthenticatorTest extends SapphireTest { $this->assertEquals($member->PasswordEncryption, "crc32"); $this->assertTrue($member->checkPassword('mypassword')); } + + function testCustomIdentifierField(){ + + Member::set_unique_identifier_field('Username'); + $label=singleton('Member')->fieldLabel(Member::get_unique_identifier_field()); + + $this->assertEquals($label, 'Username'); + + + } } \ No newline at end of file