summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorArthur Schiwon <blizzz@arthur-schiwon.de>2017-01-20 21:57:12 +0100
committerArthur Schiwon <blizzz@arthur-schiwon.de>2017-01-20 22:01:08 +0100
commit9ca4065ef5ccce3a4bc807e4b7bfddd76f50724c (patch)
treeef2094be85ef640cd55b8ac20d3bf933761fa7d3 /apps
parent08b31fcb7da9f65e5d4fc87f266a183d1353e193 (diff)
downloadnextcloud-server-9ca4065ef5ccce3a4bc807e4b7bfddd76f50724c.tar.gz
nextcloud-server-9ca4065ef5ccce3a4bc807e4b7bfddd76f50724c.zip
LDAP PUT command now supports setting multiple keys at once
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
Diffstat (limited to 'apps')
-rw-r--r--apps/user_ldap/lib/Controller/ConfigAPIController.php30
1 files changed, 16 insertions, 14 deletions
diff --git a/apps/user_ldap/lib/Controller/ConfigAPIController.php b/apps/user_ldap/lib/Controller/ConfigAPIController.php
index 5256b0d8aad..7a5a5c5b7ba 100644
--- a/apps/user_ldap/lib/Controller/ConfigAPIController.php
+++ b/apps/user_ldap/lib/Controller/ConfigAPIController.php
@@ -133,7 +133,7 @@ class ConfigAPIController extends OCSController {
* <ocs>
* <meta>
* <status>ok</status>
- * <statuscode>100</statuscode>
+ * <statuscode>200</statuscode>
* <message>OK</message>
* </meta>
* <data/>
@@ -170,7 +170,7 @@ class ConfigAPIController extends OCSController {
* modifies a configuration
*
* Example:
- * curl -X PUT -d "key=ldapHost&value=ldaps://my.ldap.server" \
+ * curl -X PUT -d "configData[ldapHost]=ldaps://my.ldap.server&configData[ldapPort]=636" \
* -H "OCS-APIREQUEST: true" -u $admin:$password \
* https://nextcloud.server/ocs/v2.php/apps/user_ldap/api/v1/config/s60
*
@@ -178,33 +178,35 @@ class ConfigAPIController extends OCSController {
* <ocs>
* <meta>
* <status>ok</status>
- * <statuscode>100</statuscode>
+ * <statuscode>200</statuscode>
* <message>OK</message>
* </meta>
* <data/>
* </ocs>
*
* @param string $configID
- * @param string $key
- * @param string $value
+ * @param array $configData
* @return DataResponse
* @throws OCSException
*/
- public function modify($configID, $key, $value) {
+ public function modify($configID, $configData) {
$this->ensureConfigIDExists($configID);
+ if(!is_array($configData)) {
+ throw new OCSBadRequestException('configData is not properly set');
+ }
+
try {
- $config = new Configuration($configID);
+ $configuration = new Configuration($configID);
+ $configKeys = $configuration->getConfigTranslationArray();
- $configKeys = $config->getConfigTranslationArray();
- if(!isset($configKeys[$key]) && !in_array($key, $configKeys, true)) {
- throw new OCSBadRequestException('Invalid config key');
+ foreach ($configKeys as $i => $key) {
+ if(isset($configData[$key])) {
+ $configuration->$key = $configData[$key];
+ }
}
- $config->$key = $value;
- $config->saveConfiguration();
- } catch(OCSException $e) {
- throw $e;
+ $configuration->saveConfiguration();
} catch (\Exception $e) {
$this->logger->logException($e);
throw new OCSException('An issue occurred when modifying the config.');