1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-06-05 14:04:57 +02:00

[ticket/12574] Clean up dependencies of db auth provider

PHPBB3-12574
This commit is contained in:
Marc Alexander 2019-11-01 14:37:27 +01:00
parent 9e0c3fc81e
commit a00b8c2920
No known key found for this signature in database
GPG Key ID: 50E0D2423696F995
3 changed files with 55 additions and 24 deletions

View File

@ -15,12 +15,12 @@ services:
auth.provider.db: auth.provider.db:
class: phpbb\auth\provider\db class: phpbb\auth\provider\db
arguments: arguments:
- '@dbal.conn' - '@captcha.factory'
- '@config' - '@config'
- '@dbal.conn'
- '@passwords.manager' - '@passwords.manager'
- '@request' - '@request'
- '@user' - '@user'
- '@service_container'
- '%core.root_path%' - '%core.root_path%'
- '%core.php_ext%' - '%core.php_ext%'
tags: tags:

View File

@ -13,48 +13,69 @@
namespace phpbb\auth\provider; namespace phpbb\auth\provider;
use phpbb\captcha\factory;
use phpbb\config\config;
use phpbb\db\driver\driver_interface;
use phpbb\passwords\manager;
use phpbb\request\request_interface;
use phpbb\user;
/** /**
* Database authentication provider for phpBB3 * Database authentication provider for phpBB3
* This is for authentication via the integrated user table * This is for authentication via the integrated user table
*/ */
class db extends \phpbb\auth\provider\base class db extends base
{ {
/** @var factory CAPTCHA factory */
protected $captcha_factory;
/** @var config phpBB config */
protected $config;
/** @var driver_interface DBAL driver instance */
protected $db;
/** @var request_interface Request object */
protected $request;
/** @var user User object */
protected $user;
/** @var string phpBB root path */
protected $phpbb_root_path;
/** @var string PHP file extension */
protected $php_ext;
/** /**
* phpBB passwords manager * phpBB passwords manager
* *
* @var \phpbb\passwords\manager * @var manager
*/ */
protected $passwords_manager; protected $passwords_manager;
/**
* DI container
*
* @var \Symfony\Component\DependencyInjection\ContainerInterface
*/
protected $phpbb_container;
/** /**
* Database Authentication Constructor * Database Authentication Constructor
* *
* @param \phpbb\db\driver\driver_interface $db * @param factory $captcha_factory
* @param \phpbb\config\config $config * @param config $config
* @param \phpbb\passwords\manager $passwords_manager * @param driver_interface $db
* @param \phpbb\request\request $request * @param manager $passwords_manager
* @param \phpbb\user $user * @param request_interface $request
* @param \Symfony\Component\DependencyInjection\ContainerInterface $phpbb_container DI container * @param user $user
* @param string $phpbb_root_path * @param string $phpbb_root_path
* @param string $php_ext * @param string $php_ext
*/ */
public function __construct(\phpbb\db\driver\driver_interface $db, \phpbb\config\config $config, \phpbb\passwords\manager $passwords_manager, \phpbb\request\request $request, \phpbb\user $user, \Symfony\Component\DependencyInjection\ContainerInterface $phpbb_container, $phpbb_root_path, $php_ext) public function __construct(factory $captcha_factory, config $config, driver_interface $db, manager $passwords_manager, request_interface $request, user $user, $phpbb_root_path, $php_ext)
{ {
$this->db = $db; $this->captcha_factory = $captcha_factory;
$this->config = $config; $this->config = $config;
$this->db = $db;
$this->passwords_manager = $passwords_manager; $this->passwords_manager = $passwords_manager;
$this->request = $request; $this->request = $request;
$this->user = $user; $this->user = $user;
$this->phpbb_root_path = $phpbb_root_path; $this->phpbb_root_path = $phpbb_root_path;
$this->php_ext = $php_ext; $this->php_ext = $php_ext;
$this->phpbb_container = $phpbb_container;
} }
/** /**
@ -155,9 +176,7 @@ class db extends \phpbb\auth\provider\base
// Every auth module is able to define what to do by itself... // Every auth module is able to define what to do by itself...
if ($show_captcha) if ($show_captcha)
{ {
/* @var $captcha_factory \phpbb\captcha\factory */ $captcha = $this->captcha_factory->get_instance($this->config['captcha_plugin']);
$captcha_factory = $this->phpbb_container->get('captcha.factory');
$captcha = $captcha_factory->get_instance($this->config['captcha_plugin']);
$captcha->init(CONFIRM_LOGIN); $captcha->init(CONFIRM_LOGIN);
$vc_response = $captcha->validate($row); $vc_response = $captcha->validate($row);
if ($vc_response) if ($vc_response)

View File

@ -52,8 +52,20 @@ class phpbb_auth_provider_db_test extends phpbb_database_test_case
$passwords_manager = new \phpbb\passwords\manager($config, $passwords_drivers, $passwords_helper, array_keys($passwords_drivers)); $passwords_manager = new \phpbb\passwords\manager($config, $passwords_drivers, $passwords_helper, array_keys($passwords_drivers));
$phpbb_container = new phpbb_mock_container_builder(); $phpbb_container = new phpbb_mock_container_builder();
$plugins = new \phpbb\di\service_collection($phpbb_container);
$plugins->add('core.captcha.plugins.nogd');
$phpbb_container->set(
'captcha.factory',
new \phpbb\captcha\factory($phpbb_container, $plugins)
);
$phpbb_container->set(
'core.captcha.plugins.nogd',
new \phpbb\captcha\plugins\nogd()
);
/** @var \phpbb\captcha\factory $captcha_factory */
$captcha_factory = $phpbb_container->get('captcha.factory');
$provider = new \phpbb\auth\provider\db($db, $config, $passwords_manager, $request, $user, $phpbb_container, $phpbb_root_path, $phpEx); $provider = new \phpbb\auth\provider\db($captcha_factory, $config, $db, $passwords_manager, $request, $user, $phpbb_root_path, $phpEx);
if (version_compare(PHP_VERSION, '5.3.7', '<')) if (version_compare(PHP_VERSION, '5.3.7', '<'))
{ {
$password_hash = '$2a$10$e01Syh9PbJjUkio66eFuUu4FhCE2nRgG7QPc1JACalsPXcIuG2bbi'; $password_hash = '$2a$10$e01Syh9PbJjUkio66eFuUu4FhCE2nRgG7QPc1JACalsPXcIuG2bbi';