]> git.mxchange.org Git - friendica.git/commitdiff
Remove support for user.parent-uid = 0
authorHypolite Petovan <hypolite@mrpetovan.com>
Sat, 27 May 2023 22:19:02 +0000 (18:19 -0400)
committerHypolite Petovan <hypolite@mrpetovan.com>
Mon, 29 May 2023 22:32:21 +0000 (18:32 -0400)
- uid = 0 is the system user which isn't supposed to be the parent-uid of all the non-delegate users

src/Model/User.php
src/Module/Delegation.php
src/Module/Settings/Delegation.php
tests/src/Model/UserTest.php

index cb769ce3fc809532221450cca772f8d18413260f..ed63d67650d7212bbadd08404c6398ab339e5f5c 100644 (file)
@@ -675,6 +675,10 @@ class User
         */
        public static function updateLastActivity(int $uid)
        {
+               if (!$uid) {
+                       return;
+               }
+
                $user = User::getById($uid, ['last-activity']);
                if (empty($user)) {
                        return;
@@ -1640,7 +1644,7 @@ class User
         */
        public static function identities(int $uid): array
        {
-               if (empty($uid)) {
+               if (!$uid) {
                        return [];
                }
 
@@ -1651,7 +1655,7 @@ class User
                        return $identities;
                }
 
-               if ($user['parent-uid'] == 0) {
+               if (!$user['parent-uid']) {
                        // First add our own entry
                        $identities = [[
                                'uid' => $user['uid'],
@@ -1712,7 +1716,7 @@ class User
         */
        public static function hasIdentities(int $uid): bool
        {
-               if (empty($uid)) {
+               if (!$uid) {
                        return false;
                }
 
@@ -1721,7 +1725,7 @@ class User
                        return false;
                }
 
-               if ($user['parent-uid'] != 0) {
+               if ($user['parent-uid']) {
                        return true;
                }
 
@@ -1848,8 +1852,8 @@ class User
        {
                $condition = [
                        'email'           => self::getAdminEmailList(),
-                       'parent-uid'      => 0,
-                       'blocked'         => 0,
+                       'parent-uid'      => null,
+                       'blocked'         => false,
                        'verified'        => true,
                        'account_removed' => false,
                        'account_expired' => false,
index 3595ff7f302f77db77be2834a0b252ef7563239c..8a2b313000bce2db24c0d200ac99d924b44b7822 100644 (file)
@@ -53,7 +53,7 @@ class Delegation extends BaseModule
                        }
                }
 
-               $identity = intval($_POST['identity'] ?? 0);
+               $identity = intval($request['identity'] ?? 0);
                if (!$identity) {
                        return;
                }
@@ -76,16 +76,16 @@ class Delegation extends BaseModule
                        $user = DBA::selectFirst('user', [], ['uid' => $identity, 'parent-uid' => $orig_record['uid']]);
 
                        // Check if the target user is one of our siblings
-                       if (!DBA::isResult($user) && ($orig_record['parent-uid'] != 0)) {
+                       if (!DBA::isResult($user) && $orig_record['parent-uid']) {
                                $user = DBA::selectFirst('user', [], ['uid' => $identity, 'parent-uid' => $orig_record['parent-uid']]);
                        }
 
                        // Check if it's our parent or our own user
                        if (!DBA::isResult($user)
                                && (
-                                       $orig_record['parent-uid'] != 0 && $orig_record['parent-uid'] == $identity
+                                       $orig_record['parent-uid'] && $orig_record['parent-uid'] === $identity
                                        ||
-                                       $orig_record['uid'] != 0 && $orig_record['uid'] == $identity
+                                       $orig_record['uid'] && $orig_record['uid'] === $identity
                                )
                        ) {
                                $user = User::getById($identity);
index 134b002c1bc79c85df3820b26d1f9d2f45b07f06..3fd5fef49ff46e4ab0e5f425e35f0e281eb5e96a 100644 (file)
@@ -43,11 +43,13 @@ class Delegation extends BaseSettings
 
                BaseModule::checkFormSecurityTokenRedirectOnError('settings/delegation', 'delegate');
 
-               $parent_uid = (int)$_POST['parent_user'] ?? 0;
-               $parent_password = $_POST['parent_password'] ?? '';
+               $parent_uid = $request['parent_user'] ?? null;
+               $parent_password = $request['parent_password'] ?? '';
 
-               if ($parent_uid != 0) {
+               if ($parent_uid) {
                        try {
+                               // An integer value will trigger the direct user query on uid in User::getAuthenticationInfo
+                               $parent_uid = (int)$parent_uid;
                                User::getIdFromPasswordAuthentication($parent_uid, $parent_password);
                                DI::sysmsg()->addInfo(DI::l10n()->t('Delegation successfully granted.'));
                        } catch (\Exception $ex) {
@@ -142,7 +144,7 @@ class Delegation extends BaseSettings
                        $parents = [0 => DI::l10n()->t('No parent user')];
 
                        $fields = ['uid', 'username', 'nickname'];
-                       $condition = ['email' => $user['email'], 'verified' => true, 'blocked' => false, 'parent-uid' => 0];
+                       $condition = ['email' => $user['email'], 'verified' => true, 'blocked' => false, 'parent-uid' => null];
                        $parent_users = DBA::selectToArray('user', $fields, $condition);
                        foreach($parent_users as $parent) {
                                if ($parent['uid'] != DI::userSession()->getLocalUserId()) {
index eb0cb9f32fce76e2457335d880809ab7e5f04644..939d2824550fa95ce885db416e935fd6ba212e31 100644 (file)
@@ -82,7 +82,7 @@ class UserTest extends MockedTest
        public function testIdentitiesAsParent()
        {
                $parentSelect               = $this->parent;
-               $parentSelect['parent-uid'] = 0;
+               $parentSelect['parent-uid'] = null;
 
                // Select the user itself (=parent)
                $this->dbMock->shouldReceive('selectFirst')->with('user',