Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/lookup-server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2017-09-06 14:01:15 +0300
committerGitHub <noreply@github.com>2017-09-06 14:01:15 +0300
commit3cf22a3b47ed6de9b186e862558cc7d2ee815c41 (patch)
treeda494327a6d59251dbff832b48dc1928f229ef8c
parent21df963e981fa63c57e7bb9594f3272b9b1f4d62 (diff)
parentf365f3af4199de8445e02b6093dc19b2690e791c (diff)
Merge pull request #17 from nextcloud/batch-delete
add api to remove users in the global scale setup
-rw-r--r--server/index.php1
-rw-r--r--server/lib/UserManager.php34
2 files changed, 33 insertions, 2 deletions
diff --git a/server/index.php b/server/index.php
index 34ab429..00470fd 100644
--- a/server/index.php
+++ b/server/index.php
@@ -19,6 +19,7 @@ $app->add($container->get('BruteForceMiddleware'));
$app->get('/users', 'UserManager:search');
$app->post('/users', 'UserManager:register');
$app->post('/gs/users', 'UserManager:batchRegister');
+$app->delete('/gs/users', 'UserManager:batchDelete');
$app->delete('/users', 'UserManager:delete');
$app->get('/validate/email/{token}', 'EmailValidator:validate')->setName('validateEmail');
$app->get('/status', 'Status:status');
diff --git a/server/lib/UserManager.php b/server/lib/UserManager.php
index 34c6a5a..1b55f8a 100644
--- a/server/lib/UserManager.php
+++ b/server/lib/UserManager.php
@@ -364,7 +364,7 @@ LIMIT ' . $limit);
}
/**
- * let server auto register users, used in the global scale scenario
+ * let Nextcloud servers auto register users, used in the global scale scenario
*
* @param Request $request
* @param Response $response
@@ -380,7 +380,7 @@ LIMIT ' . $limit);
}
if ($body['authKey'] !== $this->authKey) {
- $response->withStatus(400);
+ $response->withStatus(403);
return $response;
}
@@ -392,6 +392,36 @@ LIMIT ' . $limit);
}
+ /**
+ * let Nextcloud servers remove users from the lookup server, used in the global scale scenario
+ *
+ * @param Request $request
+ * @param Response $response
+ * @return Response
+ */
+ public function batchDelete(Request $request, Response $response) {
+
+ $body = json_decode($request->getBody(), true);
+
+ if ($body === null || !isset($body['authKey']) || !isset($body['users'])) {
+ $response->withStatus(400);
+ return $response;
+ }
+
+ if ($body['authKey'] !== $this->authKey) {
+ $response->withStatus(403);
+ return $response;
+ }
+
+ foreach ($body['users'] as $cloudId) {
+ $this->deleteDBRecord($cloudId);
+ }
+
+ return $response;
+
+ }
+
+
public function delete(Request $request, Response $response) {
$body = json_decode($request->getBody(), true);