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

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Petry <vincent@nextcloud.com>2022-09-01 18:07:13 +0300
committerGitHub <noreply@github.com>2022-09-01 18:07:13 +0300
commit253c0641b138d6eeb4397f82ba3738d9adb132a2 (patch)
tree43790db6d0806c3b34c7d332d14d4bc79d0c6d8f
parent12e7f414f783acc9a30b7000a09b68a214077f04 (diff)
parentd59585974e2f3f51598da31f6e1dd0684affa77b (diff)
Merge pull request #33625 from nextcloud/fix/33572/add-user
Fix creation of new user and display the correct error message
-rw-r--r--apps/provisioning_api/lib/Controller/UsersController.php15
-rw-r--r--lib/private/User/Database.php4
-rw-r--r--lib/private/User/User.php3
-rw-r--r--lib/public/IUser.php3
-rw-r--r--lib/public/User/Backend/ISetDisplayNameBackend.php3
5 files changed, 24 insertions, 4 deletions
diff --git a/apps/provisioning_api/lib/Controller/UsersController.php b/apps/provisioning_api/lib/Controller/UsersController.php
index 839ac404c94..37bbdc9e1c4 100644
--- a/apps/provisioning_api/lib/Controller/UsersController.php
+++ b/apps/provisioning_api/lib/Controller/UsersController.php
@@ -426,7 +426,14 @@ class UsersController extends AUserData {
}
if ($displayName !== '') {
- $this->editUser($userid, self::USER_FIELD_DISPLAYNAME, $displayName);
+ try {
+ $this->editUser($userid, self::USER_FIELD_DISPLAYNAME, $displayName);
+ } catch (OCSException $e) {
+ if ($newUser instanceof IUser) {
+ $newUser->delete();
+ }
+ throw $e;
+ }
}
if ($quota !== '') {
@@ -837,8 +844,10 @@ class UsersController extends AUserData {
switch ($key) {
case self::USER_FIELD_DISPLAYNAME:
case IAccountManager::PROPERTY_DISPLAYNAME:
- if (!$targetUser->setDisplayName($value)) {
- throw new OCSException('Invalid displayname', 102);
+ try {
+ $targetUser->setDisplayName($value);
+ } catch (InvalidArgumentException $e) {
+ throw new OCSException($e->getMessage(), 101);
}
break;
case self::USER_FIELD_QUOTA:
diff --git a/lib/private/User/Database.php b/lib/private/User/Database.php
index 0b38f04bfe3..f106c2e8b6d 100644
--- a/lib/private/User/Database.php
+++ b/lib/private/User/Database.php
@@ -212,11 +212,13 @@ class Database extends ABackend implements
* @param string $displayName The new display name
* @return bool
*
+ * @throws \InvalidArgumentException
+ *
* Change the display name of a user
*/
public function setDisplayName(string $uid, string $displayName): bool {
if (mb_strlen($displayName) > 64) {
- return false;
+ throw new \InvalidArgumentException('Invalid displayname');
}
$this->fixDI();
diff --git a/lib/private/User/User.php b/lib/private/User/User.php
index 78d4a51cf16..72c0d5c1a88 100644
--- a/lib/private/User/User.php
+++ b/lib/private/User/User.php
@@ -154,6 +154,9 @@ class User implements IUser {
*
* @param string $displayName
* @return bool
+ *
+ * @since 25.0.0 Throw InvalidArgumentException
+ * @throws \InvalidArgumentException
*/
public function setDisplayName($displayName) {
$displayName = trim($displayName);
diff --git a/lib/public/IUser.php b/lib/public/IUser.php
index daf993df6cd..bb7bdf3304a 100644
--- a/lib/public/IUser.php
+++ b/lib/public/IUser.php
@@ -58,6 +58,9 @@ interface IUser {
* @param string $displayName
* @return bool
* @since 8.0.0
+ *
+ * @since 25.0.0 Throw InvalidArgumentException
+ * @throws \InvalidArgumentException
*/
public function setDisplayName($displayName);
diff --git a/lib/public/User/Backend/ISetDisplayNameBackend.php b/lib/public/User/Backend/ISetDisplayNameBackend.php
index 922d356bfd7..db62223ad52 100644
--- a/lib/public/User/Backend/ISetDisplayNameBackend.php
+++ b/lib/public/User/Backend/ISetDisplayNameBackend.php
@@ -36,6 +36,9 @@ interface ISetDisplayNameBackend {
* @param string $uid The username
* @param string $displayName The new display name
* @return bool
+ *
+ * @since 25.0.0 Throw InvalidArgumentException
+ * @throws \InvalidArgumentException
*/
public function setDisplayName(string $uid, string $displayName): bool;
}