diff options
author | Marc Alexander <admin@m-a-styles.de> | 2013-10-27 14:18:02 +0100 |
---|---|---|
committer | Marc Alexander <admin@m-a-styles.de> | 2013-10-27 14:18:02 +0100 |
commit | 5193b3279cfcd4f7f5d656ec806b87e971c5523f (patch) | |
tree | 45bb4f9fd78e8a34e2057593aa4b68de9135e86b | |
parent | 760f148a2ba581df61a25d3efd0e438b5ea77e7b (diff) | |
download | forums-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.yml | 8 | ||||
-rw-r--r-- | phpBB/phpbb/passwords/manager.php | 25 | ||||
-rw-r--r-- | tests/auth/provider_apache_test.php | 4 | ||||
-rw-r--r-- | tests/auth/provider_db_test.php | 4 | ||||
-rw-r--r-- | tests/passwords/drivers_test.php | 2 | ||||
-rw-r--r-- | tests/passwords/manager_test.php | 4 | ||||
-rw-r--r-- | tests/security/hash_test.php | 4 | ||||
-rw-r--r-- | tests/test_framework/phpbb_functional_test_case.php | 4 |
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; } |