diff --git a/lib/StorageServer.php b/lib/StorageServer.php index 40aa5ae..1c2ed3c 100644 --- a/lib/StorageServer.php +++ b/lib/StorageServer.php @@ -33,23 +33,30 @@ public static function setStorageOwner($storageId, $owner) ]); } - public static function createStorage($ownerWebId) + public static function createStorage($ownerWebId, $storageId = null) { - $generatedStorageId = bin2hex(random_bytes(16)); - while (self::storageIdExists($generatedStorageId)) { + if (empty($storageId)) { $generatedStorageId = bin2hex(random_bytes(16)); + + while (self::storageIdExists($generatedStorageId)) { + $generatedStorageId = bin2hex(random_bytes(16)); + } + + $storageId = $generatedStorageId; } + Db::connect(); $query = Db::$pdo->prepare( 'INSERT OR REPLACE INTO storage VALUES(:storageId, :owner)' ); $query->execute([ - ':storageId' => $generatedStorageId, - ':owner' => $ownerWebId + ':storageId' => $storageId, + ':owner' => $ownerWebId, ]); + return [ - "storageId" => $generatedStorageId, - "storageUrl" => "https://storage-" . $generatedStorageId . "." . BASEDOMAIN . "/" + "storageId" => $storageId, + "storageUrl" => "https://storage-" . $storageId . "." . BASEDOMAIN . "/", ]; } diff --git a/lib/User.php b/lib/User.php index 34ae5fe..888e030 100644 --- a/lib/User.php +++ b/lib/User.php @@ -111,26 +111,33 @@ public static function createUser($newUser) if (!self::validatePasswordStrength($newUser['password'])) { return false; } - $generatedUserId = bin2hex(random_bytes(16)); - while (self::userIdExists($generatedUserId)) { + + if (! isset($newUser['userId'])) { $generatedUserId = bin2hex(random_bytes(16)); + + while (self::userIdExists($generatedUserId)) { + $generatedUserId = bin2hex(random_bytes(16)); + } + + $newUser['userId'] = $generatedUserId; } + $query = Db::$pdo->prepare( 'INSERT INTO users VALUES (:userId, :email, :passwordHash, :data)' ); $queryParams = []; - $queryParams[':userId'] = $generatedUserId; + $queryParams[':userId'] = $newUser['userId']; $queryParams[':email'] = $newUser['email']; $queryParams[':passwordHash'] = password_hash($newUser['password'], PASSWORD_BCRYPT); unset($newUser['password']); - $newUser['webId'] = "https://id-" . $generatedUserId . "." . BASEDOMAIN . "/#me"; + $newUser['webId'] = "https://id-" . $newUser['userId'] . "." . BASEDOMAIN . "/#me"; $queryParams[':data'] = json_encode($newUser); $query->execute($queryParams); return [ - "userId" => $generatedUserId, + "userId" => $newUser['userId'], "email" => $newUser['email'], "webId" => $newUser['webId'] ];