]> source.dussan.org Git - nextcloud-server.git/commitdiff
Do not try to make user subadmin of group twice
authorRoeland Jago Douma <roeland@famdouma.nl>
Mon, 13 Apr 2015 08:32:18 +0000 (10:32 +0200)
committerRoeland Jago Douma <roeland@famdouma.nl>
Mon, 13 Apr 2015 09:42:56 +0000 (11:42 +0200)
If the provisioning api is used to make a user subadmin of a group that user
is already a subadmin just return success.

Added unit test to ensure things keep working.

apps/provisioning_api/lib/users.php
apps/provisioning_api/tests/userstest.php

index 33139bb2cef0ff6f5314238ec3d0b6aa3d6acc6a..6169ea16f9cf257a0b9ec351dad7e7884ee484d2 100644 (file)
@@ -292,6 +292,10 @@ class Users {
                if(strtolower($group) == 'admin') {
                        return new OC_OCS_Result(null, 103, 'Cannot create subadmins for admin group');
                }
+               // We cannot be subadmin twice
+               if (OC_Subadmin::isSubAdminOfGroup($user, $group)) {
+                       return new OC_OCS_Result(null, 100);
+               }
                // Go
                if(OC_Subadmin::createSubAdmin($user, $group)) {
                        return new OC_OCS_Result(null, 100);
index 1abf994d92f50fee16c09b70669852bfd8301fc4..f06f853ee1fce63f967be1e47a6feffe97772c5a 100644 (file)
@@ -766,4 +766,29 @@ class UsersTest extends TestCase {
                $this->assertFalse($result->succeeded());
                $this->assertEquals(101, $result->getStatusCode());
        }
+
+       public function testSubAdminOfGroupAlreadySubAdmin() {
+               $user1 = $this->generateUsers();
+               $user2 = $this->generateUsers();
+               \OC_User::setUserId($user1);
+               \OC_Group::addToGroup($user1, 'admin');
+               $group1 = $this->getUniqueID();
+               \OC_Group::createGroup($group1);
+
+               //Make user2 subadmin of group1
+               $_POST['groupid'] = $group1;
+               $result = \OCA\provisioning_api\Users::addSubAdmin([
+                       'userid' => $user2,
+               ]);
+               $this->assertInstanceOf('OC_OCS_Result', $result);
+               $this->assertTrue($result->succeeded());
+
+               //Make user2 subadmin of group1 again
+               $_POST['groupid'] = $group1;
+               $result = \OCA\provisioning_api\Users::addSubAdmin([
+                       'userid' => $user2,
+               ]);
+               $this->assertInstanceOf('OC_OCS_Result', $result);
+               $this->assertTrue($result->succeeded());
+       }
 }