diff options
author | Morris Jobke <hey@morrisjobke.de> | 2020-11-09 10:07:25 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-09 10:07:25 +0100 |
commit | 46002a46a6fdd08bdb1eca1f70184dacb8d7cd07 (patch) | |
tree | db16ea07b044f1af2b0162cdf74b0a0dd7638159 /apps/user_ldap | |
parent | 05d332666476bec488989d39ef87e593eea02872 (diff) | |
parent | 3f370f37323f537f9256655667179422011b9fa1 (diff) | |
download | nextcloud-server-46002a46a6fdd08bdb1eca1f70184dacb8d7cd07.tar.gz nextcloud-server-46002a46a6fdd08bdb1eca1f70184dacb8d7cd07.zip |
Merge pull request #23933 from nextcloud/bugfix/noid/user-ldap-ocdb
Use query builder instead of OC_DB in user_ldap
Diffstat (limited to 'apps/user_ldap')
-rw-r--r-- | apps/user_ldap/ajax/deleteConfiguration.php | 2 | ||||
-rw-r--r-- | apps/user_ldap/ajax/getNewServerConfigPrefix.php | 2 | ||||
-rw-r--r-- | apps/user_ldap/ajax/wizard.php | 2 | ||||
-rw-r--r-- | apps/user_ldap/appinfo/install.php | 2 | ||||
-rw-r--r-- | apps/user_ldap/appinfo/update.php | 2 | ||||
-rw-r--r-- | apps/user_ldap/lib/Command/Search.php | 2 | ||||
-rw-r--r-- | apps/user_ldap/lib/Command/SetConfig.php | 2 | ||||
-rw-r--r-- | apps/user_ldap/lib/Command/TestConfig.php | 2 | ||||
-rw-r--r-- | apps/user_ldap/lib/Connection.php | 2 | ||||
-rw-r--r-- | apps/user_ldap/lib/Helper.php | 49 | ||||
-rw-r--r-- | apps/user_ldap/lib/Jobs/CleanUp.php | 2 | ||||
-rw-r--r-- | apps/user_ldap/lib/Jobs/Sync.php | 2 | ||||
-rw-r--r-- | apps/user_ldap/lib/Jobs/UpdateGroups.php | 28 | ||||
-rw-r--r-- | apps/user_ldap/lib/Proxy.php | 2 | ||||
-rw-r--r-- | apps/user_ldap/lib/Settings/Admin.php | 2 | ||||
-rw-r--r-- | apps/user_ldap/lib/Wizard.php | 2 | ||||
-rw-r--r-- | apps/user_ldap/tests/AccessTest.php | 2 | ||||
-rw-r--r-- | apps/user_ldap/tests/HelperTest.php | 5 | ||||
-rw-r--r-- | apps/user_ldap/tests/Integration/AbstractIntegrationTest.php | 2 | ||||
-rw-r--r-- | apps/user_ldap/tests/LDAPProviderTest.php | 4 |
20 files changed, 60 insertions, 58 deletions
diff --git a/apps/user_ldap/ajax/deleteConfiguration.php b/apps/user_ldap/ajax/deleteConfiguration.php index f4f6eaf267d..61a3e8b673a 100644 --- a/apps/user_ldap/ajax/deleteConfiguration.php +++ b/apps/user_ldap/ajax/deleteConfiguration.php @@ -32,7 +32,7 @@ \OC_JSON::callCheck(); $prefix = (string)$_POST['ldap_serverconfig_chooser']; -$helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig()); +$helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()); if ($helper->deleteServerConfiguration($prefix)) { \OC_JSON::success(); } else { diff --git a/apps/user_ldap/ajax/getNewServerConfigPrefix.php b/apps/user_ldap/ajax/getNewServerConfigPrefix.php index 4e95d6e02b5..ec38fbb8ff0 100644 --- a/apps/user_ldap/ajax/getNewServerConfigPrefix.php +++ b/apps/user_ldap/ajax/getNewServerConfigPrefix.php @@ -29,7 +29,7 @@ \OC_JSON::checkAppEnabled('user_ldap'); \OC_JSON::callCheck(); -$helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig()); +$helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()); $serverConnections = $helper->getServerConfigurationPrefixes(); sort($serverConnections); $lk = array_pop($serverConnections); diff --git a/apps/user_ldap/ajax/wizard.php b/apps/user_ldap/ajax/wizard.php index 9c7b26b54ac..360e121766d 100644 --- a/apps/user_ldap/ajax/wizard.php +++ b/apps/user_ldap/ajax/wizard.php @@ -70,7 +70,7 @@ $access = new \OCA\User_LDAP\Access( $con, $ldapWrapper, $userManager, - new \OCA\User_LDAP\Helper(\OC::$server->getConfig()), + new \OCA\User_LDAP\Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()), \OC::$server->getConfig(), \OC::$server->getUserManager() ); diff --git a/apps/user_ldap/appinfo/install.php b/apps/user_ldap/appinfo/install.php index 7dec03ffab0..731630000de 100644 --- a/apps/user_ldap/appinfo/install.php +++ b/apps/user_ldap/appinfo/install.php @@ -29,5 +29,5 @@ if ($state === 'doSet') { \OC::$server->getConfig()->setSystemValue('ldapIgnoreNamingRules', false); } -$helper = new \OCA\User_LDAP\Helper($config); +$helper = new \OCA\User_LDAP\Helper($config, \OC::$server->getDatabaseConnection()); $helper->setLDAPProvider(); diff --git a/apps/user_ldap/appinfo/update.php b/apps/user_ldap/appinfo/update.php index 035fecba1f8..8fed2988096 100644 --- a/apps/user_ldap/appinfo/update.php +++ b/apps/user_ldap/appinfo/update.php @@ -23,5 +23,5 @@ * */ -$helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig()); +$helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()); $helper->setLDAPProvider(); diff --git a/apps/user_ldap/lib/Command/Search.php b/apps/user_ldap/lib/Command/Search.php index 2ee83e0f22b..5d2e72483ba 100644 --- a/apps/user_ldap/lib/Command/Search.php +++ b/apps/user_ldap/lib/Command/Search.php @@ -109,7 +109,7 @@ class Search extends Command { } protected function execute(InputInterface $input, OutputInterface $output): int { - $helper = new Helper($this->ocConfig); + $helper = new Helper($this->ocConfig, \OC::$server->getDatabaseConnection()); $configPrefixes = $helper->getServerConfigurationPrefixes(true); $ldapWrapper = new LDAP(); diff --git a/apps/user_ldap/lib/Command/SetConfig.php b/apps/user_ldap/lib/Command/SetConfig.php index 2b2fdfe5c8b..4b20ad65e9f 100644 --- a/apps/user_ldap/lib/Command/SetConfig.php +++ b/apps/user_ldap/lib/Command/SetConfig.php @@ -60,7 +60,7 @@ class SetConfig extends Command { } protected function execute(InputInterface $input, OutputInterface $output): int { - $helper = new Helper(\OC::$server->getConfig()); + $helper = new Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()); $availableConfigs = $helper->getServerConfigurationPrefixes(); $configID = $input->getArgument('configID'); if (!in_array($configID, $availableConfigs)) { diff --git a/apps/user_ldap/lib/Command/TestConfig.php b/apps/user_ldap/lib/Command/TestConfig.php index b588a8380d0..e83befe6f30 100644 --- a/apps/user_ldap/lib/Command/TestConfig.php +++ b/apps/user_ldap/lib/Command/TestConfig.php @@ -48,7 +48,7 @@ class TestConfig extends Command { } protected function execute(InputInterface $input, OutputInterface $output): int { - $helper = new Helper(\OC::$server->getConfig()); + $helper = new Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()); $availableConfigs = $helper->getServerConfigurationPrefixes(); $configID = $input->getArgument('configID'); if (!in_array($configID, $availableConfigs)) { diff --git a/apps/user_ldap/lib/Connection.php b/apps/user_ldap/lib/Connection.php index 6af2fd700e4..9a99b94689f 100644 --- a/apps/user_ldap/lib/Connection.php +++ b/apps/user_ldap/lib/Connection.php @@ -120,7 +120,7 @@ class Connection extends LDAPUtility { if ($memcache->isAvailable()) { $this->cache = $memcache->createDistributed(); } - $helper = new Helper(\OC::$server->getConfig()); + $helper = new Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()); $this->doNotValidate = !in_array($this->configPrefix, $helper->getServerConfigurationPrefixes()); } diff --git a/apps/user_ldap/lib/Helper.php b/apps/user_ldap/lib/Helper.php index 86712534f40..dce67a76c41 100644 --- a/apps/user_ldap/lib/Helper.php +++ b/apps/user_ldap/lib/Helper.php @@ -35,23 +35,25 @@ namespace OCA\User_LDAP; use OC\Cache\CappedMemoryCache; +use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IConfig; +use OCP\IDBConnection; class Helper { /** @var IConfig */ private $config; + /** @var IDBConnection */ + private $connection; + /** @var CappedMemoryCache */ protected $sanitizeDnCache; - /** - * Helper constructor. - * - * @param IConfig $config - */ - public function __construct(IConfig $config) { + public function __construct(IConfig $config, + IDBConnection $connection) { $this->config = $config; + $this->connection = $connection; $this->sanitizeDnCache = new CappedMemoryCache(10000); } @@ -160,30 +162,23 @@ class Helper { return false; } - $saveOtherConfigurations = ''; - if (empty($prefix)) { - $saveOtherConfigurations = 'AND `configkey` NOT LIKE \'s%\''; - } + $query = $this->connection->getQueryBuilder(); + $query->delete('appconfig') + ->where($query->expr()->eq('appid', $query->createNamedParameter('user_ldap'))) + ->andWhere($query->expr()->like('configkey', $query->createNamedParameter((string)$prefix . '%'))) + ->andWhere($query->expr()->notIn('configkey', $query->createNamedParameter([ + 'enabled', + 'installed_version', + 'types', + 'bgjUpdateGroupsLastRun', + ], IQueryBuilder::PARAM_STR_ARRAY))); - $query = \OC_DB::prepare(' - DELETE - FROM `*PREFIX*appconfig` - WHERE `configkey` LIKE ? - ' . $saveOtherConfigurations . ' - AND `appid` = \'user_ldap\' - AND `configkey` NOT IN (\'enabled\', \'installed_version\', \'types\', \'bgjUpdateGroupsLastRun\') - '); - $delRows = $query->execute([$prefix . '%']); - - if ($delRows === null) { - return false; - } - - if ($delRows === 0) { - return false; + if (empty($prefix)) { + $query->andWhere($query->expr()->notLike('configkey', $query->createNamedParameter('s%'))); } - return true; + $deletedRows = $query->execute(); + return $deletedRows !== 0; } /** diff --git a/apps/user_ldap/lib/Jobs/CleanUp.php b/apps/user_ldap/lib/Jobs/CleanUp.php index 8470c4793bb..3c4f483d677 100644 --- a/apps/user_ldap/lib/Jobs/CleanUp.php +++ b/apps/user_ldap/lib/Jobs/CleanUp.php @@ -88,7 +88,7 @@ class CleanUp extends TimedJob { if (isset($arguments['helper'])) { $this->ldapHelper = $arguments['helper']; } else { - $this->ldapHelper = new Helper(\OC::$server->getConfig()); + $this->ldapHelper = new Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()); } if (isset($arguments['ocConfig'])) { diff --git a/apps/user_ldap/lib/Jobs/Sync.php b/apps/user_ldap/lib/Jobs/Sync.php index 483c21386eb..5c70c0c23b7 100644 --- a/apps/user_ldap/lib/Jobs/Sync.php +++ b/apps/user_ldap/lib/Jobs/Sync.php @@ -308,7 +308,7 @@ class Sync extends TimedJob { if (isset($argument['helper'])) { $this->ldapHelper = $argument['helper']; } else { - $this->ldapHelper = new Helper($this->config); + $this->ldapHelper = new Helper($this->config, \OC::$server->getDatabaseConnection()); } if (isset($argument['ldapWrapper'])) { diff --git a/apps/user_ldap/lib/Jobs/UpdateGroups.php b/apps/user_ldap/lib/Jobs/UpdateGroups.php index 0ecd43480c4..ce45d90af3e 100644 --- a/apps/user_ldap/lib/Jobs/UpdateGroups.php +++ b/apps/user_ldap/lib/Jobs/UpdateGroups.php @@ -201,17 +201,20 @@ class UpdateGroups extends TimedJob { */ private function handleCreatedGroups($createdGroups) { \OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – dealing with created Groups.', ILogger::DEBUG); - $query = \OC_DB::prepare(' - INSERT - INTO `*PREFIX*ldap_group_members` (`owncloudname`, `owncloudusers`) - VALUES (?, ?) - '); + + $query = $this->dbc->getQueryBuilder(); + $query->insert('ldap_group_members') + ->setValue('owncloudname', $query->createParameter('owncloudname')) + ->setValue('owncloudusers', $query->createParameter('owncloudusers')); foreach ($createdGroups as $createdGroup) { \OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – new group "' . $createdGroup . '" found.', ILogger::INFO); $users = serialize($this->groupBackend->usersInGroup($createdGroup)); - $query->execute([$createdGroup, $users]); + + $query->setParameter('owncloudname', $createdGroup) + ->setParameter('owncloudusers', $users); + $query->execute(); } \OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – FINISHED dealing with created Groups.', @@ -223,16 +226,17 @@ class UpdateGroups extends TimedJob { */ private function handleRemovedGroups($removedGroups) { \OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – dealing with removed groups.', ILogger::DEBUG); - $query = \OC_DB::prepare(' - DELETE - FROM `*PREFIX*ldap_group_members` - WHERE `owncloudname` = ? - '); + + $query = $this->dbc->getQueryBuilder(); + $query->delete('ldap_group_members') + ->where($query->expr()->eq('owncloudname', $query->createParameter('owncloudname'))); + foreach ($removedGroups as $removedGroup) { \OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – group "' . $removedGroup . '" was removed.', ILogger::INFO); - $query->execute([$removedGroup]); + $query->setParameter('owncloudname', $removedGroup); + $query->execute(); } \OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – FINISHED dealing with removed groups.', diff --git a/apps/user_ldap/lib/Proxy.php b/apps/user_ldap/lib/Proxy.php index 46cb2e6b9a0..e723c4e3abf 100644 --- a/apps/user_ldap/lib/Proxy.php +++ b/apps/user_ldap/lib/Proxy.php @@ -87,7 +87,7 @@ abstract class Proxy { new Manager($ocConfig, $fs, $log, $avatarM, new \OCP\Image(), $coreUserManager, $coreNotificationManager, $shareManager); $connector = new Connection($this->ldap, $configPrefix); - $access = new Access($connector, $this->ldap, $userManager, new Helper($ocConfig), $ocConfig, $coreUserManager); + $access = new Access($connector, $this->ldap, $userManager, new Helper($ocConfig, \OC::$server->getDatabaseConnection()), $ocConfig, $coreUserManager); $access->setUserMapper($userMap); $access->setGroupMapper($groupMap); self::$accesses[$configPrefix] = $access; diff --git a/apps/user_ldap/lib/Settings/Admin.php b/apps/user_ldap/lib/Settings/Admin.php index bea4813a23f..bf10a661edb 100644 --- a/apps/user_ldap/lib/Settings/Admin.php +++ b/apps/user_ldap/lib/Settings/Admin.php @@ -48,7 +48,7 @@ class Admin implements ISettings { * @return TemplateResponse */ public function getForm() { - $helper = new Helper(\OC::$server->getConfig()); + $helper = new Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()); $prefixes = $helper->getServerConfigurationPrefixes(); if (count($prefixes) === 0) { $newPrefix = $helper->getNextServerConfigurationPrefix(); diff --git a/apps/user_ldap/lib/Wizard.php b/apps/user_ldap/lib/Wizard.php index 0d614f5b1fb..eb0b775345b 100644 --- a/apps/user_ldap/lib/Wizard.php +++ b/apps/user_ldap/lib/Wizard.php @@ -739,7 +739,7 @@ class Wizard extends LDAPUtility { //this did not help :( //Let's see whether we can parse the Host URL and convert the domain to //a base DN - $helper = new Helper(\OC::$server->getConfig()); + $helper = new Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()); $domain = $helper->getDomainFromURL($this->configuration->ldapHost); if (!$domain) { return false; diff --git a/apps/user_ldap/tests/AccessTest.php b/apps/user_ldap/tests/AccessTest.php index 4f89fc51568..b9055d32824 100644 --- a/apps/user_ldap/tests/AccessTest.php +++ b/apps/user_ldap/tests/AccessTest.php @@ -118,7 +118,7 @@ class AccessTest extends TestCase { $this->createMock(INotificationManager::class), $this->shareManager]) ->getMock(); - $helper = new Helper(\OC::$server->getConfig()); + $helper = new Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()); return [$lw, $connector, $um, $helper]; } diff --git a/apps/user_ldap/tests/HelperTest.php b/apps/user_ldap/tests/HelperTest.php index 1822c27a1cd..97d7be48a0e 100644 --- a/apps/user_ldap/tests/HelperTest.php +++ b/apps/user_ldap/tests/HelperTest.php @@ -28,6 +28,9 @@ namespace OCA\User_LDAP\Tests; use OCA\User_LDAP\Helper; use OCP\IConfig; +/** + * @group DB + */ class HelperTest extends \Test\TestCase { /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */ @@ -40,7 +43,7 @@ class HelperTest extends \Test\TestCase { parent::setUp(); $this->config = $this->createMock(IConfig::class); - $this->helper = new Helper($this->config); + $this->helper = new Helper($this->config, \OC::$server->getDatabaseConnection()); } public function testGetServerConfigurationPrefixes() { diff --git a/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php b/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php index 095c61544b0..d0f2e8d4a95 100644 --- a/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php +++ b/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php @@ -137,7 +137,7 @@ abstract class AbstractIntegrationTest { * initializes the test Helper */ protected function initHelper() { - $this->helper = new Helper(\OC::$server->getConfig()); + $this->helper = new Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()); } /** diff --git a/apps/user_ldap/tests/LDAPProviderTest.php b/apps/user_ldap/tests/LDAPProviderTest.php index 3e9d0515892..eec5f732738 100644 --- a/apps/user_ldap/tests/LDAPProviderTest.php +++ b/apps/user_ldap/tests/LDAPProviderTest.php @@ -224,7 +224,7 @@ class LDAPProviderTest extends \Test\TestCase { $server = $this->getServerMock($userBackend, $this->getDefaultGroupBackendMock()); - $helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig()); + $helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()); $ldapProvider = $this->getLDAPProvider($server); $this->assertEquals( @@ -240,7 +240,7 @@ class LDAPProviderTest extends \Test\TestCase { $server = $this->getServerMock($userBackend, $this->getDefaultGroupBackendMock()); - $helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig()); + $helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()); $ldapProvider = $this->getLDAPProvider($server); $this->assertEquals( |