diff options
author | Morris Jobke <hey@morrisjobke.de> | 2017-09-06 14:01:15 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-06 14:01:15 +0300 |
commit | 3cf22a3b47ed6de9b186e862558cc7d2ee815c41 (patch) | |
tree | da494327a6d59251dbff832b48dc1928f229ef8c | |
parent | 21df963e981fa63c57e7bb9594f3272b9b1f4d62 (diff) | |
parent | f365f3af4199de8445e02b6093dc19b2690e791c (diff) |
Merge pull request #17 from nextcloud/batch-delete
add api to remove users in the global scale setup
-rw-r--r-- | server/index.php | 1 | ||||
-rw-r--r-- | server/lib/UserManager.php | 34 |
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); |