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:
authorBjoern Schiessle <bjoern@schiessle.org>2017-09-04 16:17:42 +0300
committerBjoern Schiessle <bjoern@schiessle.org>2017-09-04 16:17:42 +0300
commit6f5ba6cb273713b8f302e54159f28d381c5dc5c5 (patch)
treee90ccb866ad7a181f51d5caa0283576c0eb60877 /server/lib/UserManager.php
parent1fa5777efe124da2da0cb0ba03ee512b46ce3e41 (diff)
allow nodes from a global site setup to populate the lookup server automatically
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
Diffstat (limited to 'server/lib/UserManager.php')
-rw-r--r--server/lib/UserManager.php43
1 files changed, 39 insertions, 4 deletions
diff --git a/server/lib/UserManager.php b/server/lib/UserManager.php
index 52a895e..34c6a5a 100644
--- a/server/lib/UserManager.php
+++ b/server/lib/UserManager.php
@@ -31,6 +31,9 @@ class UserManager {
/** @var bool */
private $globalScaleMode;
+ /** @var string */
+ private $authKey;
+
/**
* UserManager constructor.
*
@@ -39,20 +42,23 @@ class UserManager {
* @param Website $websiteValidator
* @param Twitter $twitterValidator
* @param SignatureHandler $signatureHandler
- * @param bool globalScaleMode
+ * @param bool $globalScaleMode
+ * @param string $authKey
*/
public function __construct(\PDO $db,
Email $emailValidator,
Website $websiteValidator,
Twitter $twitterValidator,
SignatureHandler $signatureHandler,
- $globalScaleMode) {
+ $globalScaleMode,
+ $authKey) {
$this->db = $db;
$this->emailValidator = $emailValidator;
$this->websiteValidator = $websiteValidator;
$this->twitterValidator = $twitterValidator;
$this->signatureHandler = $signatureHandler;
$this->globalScaleMode = $globalScaleMode;
+ $this->authKey = $authKey;
}
public function search(Request $request, Response $response) {
@@ -226,7 +232,7 @@ LIMIT ' . $limit);
$storeId = $this->db->lastInsertId();
$stmt->closeCursor();
- if ($field === 'email') {
+ if ($field === 'email' && $this->globalScaleMode === false) {
$this->emailValidator->emailUpdated($data[$field], $storeId);
}
}
@@ -276,7 +282,7 @@ LIMIT ' . $limit);
$stmt->bindParam(':v', $data[$key]);
$stmt->execute();
$stmt->closeCursor();
- if ($key === 'email') {
+ if ($key === 'email' && $this->globalScaleMode === false) {
$this->emailValidator->emailUpdated($data[$key], $row['id']);
}
// remove verification request from old data
@@ -357,6 +363,35 @@ LIMIT ' . $limit);
return $response;
}
+ /**
+ * let server auto register users, used in the global scale scenario
+ *
+ * @param Request $request
+ * @param Response $response
+ * @return Response
+ */
+ public function batchRegister(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(400);
+ return $response;
+ }
+
+ foreach ($body['users'] as $cloudId => $data) {
+ $this->insertOrUpdate($cloudId, $data, time());
+ }
+
+ return $response;
+
+ }
+
public function delete(Request $request, Response $response) {
$body = json_decode($request->getBody(), true);