aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Alexander <admin@m-a-styles.de>2013-10-27 14:18:02 +0100
committerMarc Alexander <admin@m-a-styles.de>2013-10-27 14:18:02 +0100
commit5193b3279cfcd4f7f5d656ec806b87e971c5523f (patch)
tree45bb4f9fd78e8a34e2057593aa4b68de9135e86b
parent760f148a2ba581df61a25d3efd0e438b5ea77e7b (diff)
downloadforums-5193b3279cfcd4f7f5d656ec806b87e971c5523f.tar
forums-5193b3279cfcd4f7f5d656ec806b87e971c5523f.tar.gz
forums-5193b3279cfcd4f7f5d656ec806b87e971c5523f.tar.bz2
forums-5193b3279cfcd4f7f5d656ec806b87e971c5523f.tar.xz
forums-5193b3279cfcd4f7f5d656ec806b87e971c5523f.zip
[feature/passwords] Pass list of default types to passwords manager
This list is in the order of how the driver types would be used. If a driver is not supported we will try the subsequent one. PHPBB3-11610
-rw-r--r--phpBB/config/passwords.yml8
-rw-r--r--phpBB/phpbb/passwords/manager.php25
-rw-r--r--tests/auth/provider_apache_test.php4
-rw-r--r--tests/auth/provider_db_test.php4
-rw-r--r--tests/passwords/drivers_test.php2
-rw-r--r--tests/passwords/manager_test.php4
-rw-r--r--tests/security/hash_test.php4
-rw-r--r--tests/test_framework/phpbb_functional_test_case.php4
8 files changed, 39 insertions, 16 deletions
diff --git a/phpBB/config/passwords.yml b/phpBB/config/passwords.yml
index 511f10c31c..4eeca4e34f 100644
--- a/phpBB/config/passwords.yml
+++ b/phpBB/config/passwords.yml
@@ -1,5 +1,9 @@
parameters:
- passwords.algorithm: passwords.driver.bcrypt_2y
+ passwords.algorithms:
+ - passwords.driver.bcrypt_2y
+ - passwords.driver.bcrypt
+ - passwords.driver.salted_md5
+ - passwords.driver.phpass
services:
passwords.driver.bcrypt:
@@ -60,7 +64,7 @@ services:
- @config
- @passwords.driver_collection
- @passwords.helper
- - %passwords.algorithm%
+ - %passwords.algorithms%
passwords.helper:
class: phpbb\passwords\helper
diff --git a/phpBB/phpbb/passwords/manager.php b/phpBB/phpbb/passwords/manager.php
index 0c9eb4f067..8abe7b9f79 100644
--- a/phpBB/phpbb/passwords/manager.php
+++ b/phpBB/phpbb/passwords/manager.php
@@ -63,15 +63,34 @@ class manager
* @param array $hashing_algorithms Hashing driver
* service collection
* @param phpbb\passwords\helper $helper Passwords helper object
- * @param string $default Default driver name
+ * @param string $defaults List of default driver types
*/
- public function __construct(\phpbb\config\config $config, $hashing_algorithms, \phpbb\passwords\helper $helper, $default)
+ public function __construct(\phpbb\config\config $config, $hashing_algorithms, \phpbb\passwords\helper $helper, $defaults)
{
$this->config = $config;
- $this->type = $default;
$this->fill_type_map($hashing_algorithms);
$this->load_passwords_helper($helper);
+ $this->register_default_type($defaults);
+ }
+
+ /**
+ * Register default type
+ * Will register the first supported type from the list of default types
+ *
+ * @param array $defaults List of default types in order from first to
+ * use to last to use
+ */
+ protected function register_default_type($defaults)
+ {
+ foreach ($defaults as $type)
+ {
+ if ($this->algorithms[$type]->is_supported())
+ {
+ $this->type = $type;
+ break;
+ }
+ }
}
/**
diff --git a/tests/auth/provider_apache_test.php b/tests/auth/provider_apache_test.php
index 34da8e1dab..b4322922b8 100644
--- a/tests/auth/provider_apache_test.php
+++ b/tests/auth/provider_apache_test.php
@@ -27,8 +27,8 @@ class phpbb_auth_provider_apache_test extends phpbb_database_test_case
$this->user = $this->getMock('\phpbb\user');
$driver_helper = new \phpbb\passwords\driver\helper($config);
$passwords_drivers = array(
- 'passwords.driver.bcrypt' => new \phpbb\passwords\driver\bcrypt($config, $driver_helper),
'passwords.driver.bcrypt_2y' => new \phpbb\passwords\driver\bcrypt_2y($config, $driver_helper),
+ 'passwords.driver.bcrypt' => new \phpbb\passwords\driver\bcrypt($config, $driver_helper),
'passwords.driver.salted_md5' => new \phpbb\passwords\driver\salted_md5($config, $driver_helper),
'passwords.driver.phpass' => new \phpbb\passwords\driver\phpass($config, $driver_helper),
);
@@ -40,7 +40,7 @@ class phpbb_auth_provider_apache_test extends phpbb_database_test_case
$passwords_helper = new \phpbb\passwords\helper;
// Set up passwords manager
- $passwords_manager = new \phpbb\passwords\manager($config, $passwords_drivers, $passwords_helper, 'passwords.driver.bcrypt_2y');
+ $passwords_manager = new \phpbb\passwords\manager($config, $passwords_drivers, $passwords_helper, array_keys($passwords_drivers));
if (version_compare(PHP_VERSION, '5.3.7', '<'))
{
diff --git a/tests/auth/provider_db_test.php b/tests/auth/provider_db_test.php
index c46d115da8..32c2a82710 100644
--- a/tests/auth/provider_db_test.php
+++ b/tests/auth/provider_db_test.php
@@ -37,8 +37,8 @@ class phpbb_auth_provider_db_test extends phpbb_database_test_case
$user = $this->getMock('\phpbb\user');
$driver_helper = new \phpbb\passwords\driver\helper($config);
$passwords_drivers = array(
- 'passwords.driver.bcrypt' => new \phpbb\passwords\driver\bcrypt($config, $driver_helper),
'passwords.driver.bcrypt_2y' => new \phpbb\passwords\driver\bcrypt_2y($config, $driver_helper),
+ 'passwords.driver.bcrypt' => new \phpbb\passwords\driver\bcrypt($config, $driver_helper),
'passwords.driver.salted_md5' => new \phpbb\passwords\driver\salted_md5($config, $driver_helper),
'passwords.driver.phpass' => new \phpbb\passwords\driver\phpass($config, $driver_helper),
);
@@ -50,7 +50,7 @@ class phpbb_auth_provider_db_test extends phpbb_database_test_case
$passwords_helper = new \phpbb\passwords\helper;
// Set up passwords manager
- $passwords_manager = new \phpbb\passwords\manager($config, $passwords_drivers, $passwords_helper, 'passwords.driver.bcrypt_2y');
+ $passwords_manager = new \phpbb\passwords\manager($config, $passwords_drivers, $passwords_helper, array_keys($passwords_drivers));
$provider = new \phpbb\auth\provider\db($db, $config, $passwords_manager, $request, $user, $phpbb_root_path, $phpEx);
if (version_compare(PHP_VERSION, '5.3.7', '<'))
diff --git a/tests/passwords/drivers_test.php b/tests/passwords/drivers_test.php
index 1fc51b1dd2..fd45c22fc1 100644
--- a/tests/passwords/drivers_test.php
+++ b/tests/passwords/drivers_test.php
@@ -16,8 +16,8 @@ class phpbb_passwords_helper_test extends PHPUnit_Framework_TestCase
$this->driver_helper = new \phpbb\passwords\driver\helper($config);
$this->passwords_drivers = array(
- 'passwords.driver.bcrypt' => new \phpbb\passwords\driver\bcrypt($config, $this->driver_helper),
'passwords.driver.bcrypt_2y' => new \phpbb\passwords\driver\bcrypt_2y($config, $this->driver_helper),
+ 'passwords.driver.bcrypt' => new \phpbb\passwords\driver\bcrypt($config, $this->driver_helper),
'passwords.driver.salted_md5' => new \phpbb\passwords\driver\salted_md5($config, $this->driver_helper),
'passwords.driver.phpass' => new \phpbb\passwords\driver\phpass($config, $this->driver_helper),
);
diff --git a/tests/passwords/manager_test.php b/tests/passwords/manager_test.php
index f68ca25a2f..4ddd8742ae 100644
--- a/tests/passwords/manager_test.php
+++ b/tests/passwords/manager_test.php
@@ -22,8 +22,8 @@ class phpbb_passwords_manager_test extends PHPUnit_Framework_TestCase
$this->driver_helper = new \phpbb\passwords\driver\helper($config);
$this->passwords_drivers = array(
- 'passwords.driver.bcrypt' => new \phpbb\passwords\driver\bcrypt($config, $this->driver_helper),
'passwords.driver.bcrypt_2y' => new \phpbb\passwords\driver\bcrypt_2y($config, $this->driver_helper),
+ 'passwords.driver.bcrypt' => new \phpbb\passwords\driver\bcrypt($config, $this->driver_helper),
'passwords.driver.salted_md5' => new \phpbb\passwords\driver\salted_md5($config, $this->driver_helper),
'passwords.driver.phpass' => new \phpbb\passwords\driver\phpass($config, $this->driver_helper),
);
@@ -35,7 +35,7 @@ class phpbb_passwords_manager_test extends PHPUnit_Framework_TestCase
$this->helper = new \phpbb\passwords\helper;
// Set up passwords manager
- $this->manager = new \phpbb\passwords\manager($config, $this->passwords_drivers, $this->helper, 'passwords.driver.bcrypt_2y');
+ $this->manager = new \phpbb\passwords\manager($config, $this->passwords_drivers, $this->helper, array_keys($this->passwords_drivers));
}
public function hash_password_data()
diff --git a/tests/security/hash_test.php b/tests/security/hash_test.php
index c1a8c206a8..1bccc6726f 100644
--- a/tests/security/hash_test.php
+++ b/tests/security/hash_test.php
@@ -19,8 +19,8 @@ class phpbb_security_hash_test extends phpbb_test_case
$phpbb_container = $this->getMock('Symfony\Component\DependencyInjection\ContainerInterface');
$driver_helper = new \phpbb\passwords\driver\helper($config);
$passwords_drivers = array(
- 'passwords.driver.bcrypt' => new \phpbb\passwords\driver\bcrypt($config, $driver_helper),
'passwords.driver.bcrypt_2y' => new \phpbb\passwords\driver\bcrypt_2y($config, $driver_helper),
+ 'passwords.driver.bcrypt' => new \phpbb\passwords\driver\bcrypt($config, $driver_helper),
'passwords.driver.salted_md5' => new \phpbb\passwords\driver\salted_md5($config, $driver_helper),
'passwords.driver.phpass' => new \phpbb\passwords\driver\phpass($config, $driver_helper),
);
@@ -32,7 +32,7 @@ class phpbb_security_hash_test extends phpbb_test_case
$passwords_helper = new \phpbb\passwords\helper;
// Set up passwords manager
- $passwords_manager = new \phpbb\passwords\manager($config, $passwords_drivers, $passwords_helper, 'passwords.driver.bcrypt_2y');
+ $passwords_manager = new \phpbb\passwords\manager($config, $passwords_drivers, $passwords_helper, array_keys($passwords_drivers));
$phpbb_container
->expects($this->any())
diff --git a/tests/test_framework/phpbb_functional_test_case.php b/tests/test_framework/phpbb_functional_test_case.php
index f5e2e2c77d..76487077c2 100644
--- a/tests/test_framework/phpbb_functional_test_case.php
+++ b/tests/test_framework/phpbb_functional_test_case.php
@@ -1003,8 +1003,8 @@ class phpbb_functional_test_case extends phpbb_test_case
$driver_helper = new \phpbb\passwords\driver\helper($config);
$passwords_drivers = array(
- 'passwords.driver.bcrypt' => new \phpbb\passwords\driver\bcrypt($config, $driver_helper),
'passwords.driver.bcrypt_2y' => new \phpbb\passwords\driver\bcrypt_2y($config, $driver_helper),
+ 'passwords.driver.bcrypt' => new \phpbb\passwords\driver\bcrypt($config, $driver_helper),
'passwords.driver.salted_md5' => new \phpbb\passwords\driver\salted_md5($config, $driver_helper),
'passwords.driver.phpass' => new \phpbb\passwords\driver\phpass($config, $driver_helper),
);
@@ -1016,7 +1016,7 @@ class phpbb_functional_test_case extends phpbb_test_case
$passwords_helper = new \phpbb\passwords\helper;
// Set up passwords manager
- $manager = new \phpbb\passwords\manager($config, $passwords_drivers, $passwords_helper, 'passwords.driver.bcrypt_2y');
+ $manager = new \phpbb\passwords\manager($config, $passwords_drivers, $passwords_helper, array_keys($passwords_drivers));
return $manager;
}