]> git.mxchange.org Git - friendica.git/commitdiff
Throw exception when user has delegates in User::remove
authorHypolite Petovan <hypolite@mrpetovan.com>
Thu, 27 Jul 2023 15:12:05 +0000 (17:12 +0200)
committerHypolite Petovan <hypolite@mrpetovan.com>
Sat, 14 Oct 2023 18:15:41 +0000 (14:15 -0400)
src/Model/User.php

index 79e23863812da56d02cfdf98ec849d8855a62d86..f985dc2a67cce1480349a1b8d30d37f0e4e61189 100644 (file)
@@ -37,11 +37,10 @@ use Friendica\Database\DBA;
 use Friendica\DI;
 use Friendica\Module;
 use Friendica\Network\HTTPClient\Client\HttpClientAccept;
-use Friendica\Network\HTTPException\InternalServerErrorException;
-use Friendica\Security\TwoFactor\Model\AppSpecificPassword;
 use Friendica\Network\HTTPException;
 use Friendica\Object\Image;
 use Friendica\Protocol\Delivery;
+use Friendica\Security\TwoFactor\Model\AppSpecificPassword;
 use Friendica\Util\Crypto;
 use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Images;
@@ -1638,16 +1637,24 @@ class User
         * @param int $uid user to remove
         * @return bool
         * @throws HTTPException\InternalServerErrorException
+        * @throws HTTPException\NotFoundException
         */
        public static function remove(int $uid): bool
        {
                if (empty($uid)) {
-                       return false;
+                       throw new \InvalidArgumentException('uid needs to be greater than 0');
                }
 
                Logger::notice('Removing user', ['user' => $uid]);
 
-               $user = DBA::selectFirst('user', [], ['uid' => $uid]);
+               $user = self::getById($uid);
+               if (!$user) {
+                       throw new HTTPException\NotFoundException('User not found with uid: ' . $uid);
+               }
+
+               if (DBA::exists('user', ['parent-uid' => $uid])) {
+                       throw new \RuntimeException(DI::l10n()->t("User with delegates can't be removed, please remove delegate users first"));
+               }
 
                Hook::callAll('remove_user', $user);