Ejemplo n.º 1
0
             } else {
                 OC_JSON::success();
             }
         } catch (Exception $exception) {
             OC_JSON::error(array('data' => array('message' => $exception->getMessage())));
         }
     }
     break;
 case 'unshare':
     if (isset($_POST['shareType']) && isset($_POST['shareWith'])) {
         if ((int) $_POST['shareType'] === OCP\Share::SHARE_TYPE_LINK && $_POST['shareWith'] == '') {
             $shareWith = null;
         } else {
             $shareWith = (string) $_POST['shareWith'];
         }
         $return = OCP\Share::unshare((string) $_POST['itemType'], (string) $_POST['itemSource'], (int) $_POST['shareType'], $shareWith);
         $return ? OC_JSON::success() : OC_JSON::error();
     }
     break;
 case 'setPermissions':
     if (isset($_POST['shareType']) && isset($_POST['shareWith']) && isset($_POST['permissions'])) {
         $return = OCP\Share::setPermissions((string) $_POST['itemType'], (string) $_POST['itemSource'], (int) $_POST['shareType'], (string) $_POST['shareWith'], (int) $_POST['permissions']);
         $return ? OC_JSON::success() : OC_JSON::error();
     }
     break;
 case 'setExpirationDate':
     if (isset($_POST['date'])) {
         try {
             $return = OCP\Share::setExpirationDate((string) $_POST['itemType'], (string) $_POST['itemSource'], (string) $_POST['date']);
             $return ? OC_JSON::success() : OC_JSON::error();
         } catch (\Exception $e) {
Ejemplo n.º 2
0
             }
             OCP\Share::shareItem($_POST['itemType'], $_POST['itemSource'], (int) $_POST['shareType'], $shareWith, $_POST['permissions']);
             OC_JSON::success();
         } catch (Exception $exception) {
             OC_JSON::error(array('data' => array('message' => $exception->getMessage())));
         }
     }
     break;
 case 'unshare':
     if (isset($_POST['shareType']) && isset($_POST['shareWith'])) {
         if ((int) $_POST['shareType'] === OCP\Share::SHARE_TYPE_LINK && $_POST['shareWith'] == '') {
             $shareWith = null;
         } else {
             $shareWith = $_POST['shareWith'];
         }
         $return = OCP\Share::unshare($_POST['itemType'], $_POST['itemSource'], $_POST['shareType'], $shareWith);
         $return ? OC_JSON::success() : OC_JSON::error();
     }
     break;
 case 'setPermissions':
     if (isset($_POST['shareType']) && isset($_POST['shareWith']) && isset($_POST['permissions'])) {
         $return = OCP\Share::setPermissions($_POST['itemType'], $_POST['itemSource'], $_POST['shareType'], $_POST['shareWith'], $_POST['permissions']);
         $return ? OC_JSON::success() : OC_JSON::error();
     }
     break;
 case 'setExpirationDate':
     if (isset($_POST['date'])) {
         $return = OCP\Share::setExpirationDate($_POST['itemType'], $_POST['itemSource'], $_POST['date']);
         $return ? OC_JSON::success() : OC_JSON::error();
     }
     break;
Ejemplo n.º 3
0
 /**
  * Test that unsharing from group will also delete all
  * child entries
  */
 public function testShareWithGroupThenUnshare()
 {
     OC_User::setUserId($this->user5);
     OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, \OCP\Constants::PERMISSION_ALL);
     $targetUsers = array($this->user1, $this->user2, $this->user3);
     foreach ($targetUsers as $targetUser) {
         OC_User::setUserId($targetUser);
         $items = OCP\Share::getItemsSharedWithUser('test', $targetUser, Test_Share_Backend::FORMAT_TARGET);
         $this->assertEquals(1, count($items));
     }
     OC_User::setUserId($this->user5);
     OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1);
     // verify that all were deleted
     foreach ($targetUsers as $targetUser) {
         OC_User::setUserId($targetUser);
         $items = OCP\Share::getItemsSharedWithUser('test', $targetUser, Test_Share_Backend::FORMAT_TARGET);
         $this->assertEquals(0, count($items));
     }
 }
Ejemplo n.º 4
0
 public function testShareWithGroup()
 {
     // Invalid shares
     $message = 'Sharing test.txt failed, because the group foobar does not exist';
     try {
         OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, 'foobar', \OCP\Constants::PERMISSION_READ);
         $this->fail('Exception was expected: ' . $message);
     } catch (Exception $exception) {
         $this->assertEquals($message, $exception->getMessage());
     }
     $policy = OC_Appconfig::getValue('core', 'shareapi_only_share_with_group_members', 'no');
     OC_Appconfig::setValue('core', 'shareapi_only_share_with_group_members', 'yes');
     $message = 'Sharing test.txt failed, because ' . $this->user1 . ' is not a member of the group ' . $this->group2;
     try {
         OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group2, \OCP\Constants::PERMISSION_READ);
         $this->fail('Exception was expected: ' . $message);
     } catch (Exception $exception) {
         $this->assertEquals($message, $exception->getMessage());
     }
     OC_Appconfig::setValue('core', 'shareapi_only_share_with_group_members', $policy);
     // Valid share
     $this->shareUserOneTestFileWithGroupOne();
     // Attempt to share again
     OC_User::setUserId($this->user1);
     $message = 'Sharing test.txt failed, because this item is already shared with ' . $this->group1;
     try {
         OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, \OCP\Constants::PERMISSION_READ);
         $this->fail('Exception was expected: ' . $message);
     } catch (Exception $exception) {
         $this->assertEquals($message, $exception->getMessage());
     }
     // Attempt to share back to owner of group share
     OC_User::setUserId($this->user2);
     $message = 'Sharing test.txt failed, because the user ' . $this->user1 . ' is the original sharer';
     try {
         OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user1, \OCP\Constants::PERMISSION_READ);
         $this->fail('Exception was expected: ' . $message);
     } catch (Exception $exception) {
         $this->assertEquals($message, $exception->getMessage());
     }
     // Attempt to share back to group
     $message = 'Sharing test.txt failed, because this item is already shared with ' . $this->group1;
     try {
         OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, \OCP\Constants::PERMISSION_READ);
         $this->fail('Exception was expected: ' . $message);
     } catch (Exception $exception) {
         $this->assertEquals($message, $exception->getMessage());
     }
     // Attempt to share back to member of group
     $message = 'Sharing test.txt failed, because this item is already shared with ' . $this->user3;
     try {
         OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, \OCP\Constants::PERMISSION_READ);
         $this->fail('Exception was expected: ' . $message);
     } catch (Exception $exception) {
         $this->assertEquals($message, $exception->getMessage());
     }
     // Unshare
     OC_User::setUserId($this->user1);
     $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1));
     // Valid share with same person - user then group
     $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_DELETE | \OCP\Constants::PERMISSION_SHARE));
     $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE));
     OC_User::setUserId($this->user2);
     $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE | \OCP\Constants::PERMISSION_SHARE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS));
     OC_User::setUserId($this->user3);
     $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS));
     // Valid reshare
     OC_User::setUserId($this->user2);
     $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, \OCP\Constants::PERMISSION_READ));
     OC_User::setUserId($this->user4);
     $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     // Unshare from user only
     OC_User::setUserId($this->user1);
     $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2));
     OC_User::setUserId($this->user2);
     $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS));
     OC_User::setUserId($this->user4);
     $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     // Valid share with same person - group then user
     OC_User::setUserId($this->user1);
     $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_DELETE));
     OC_User::setUserId($this->user2);
     $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS));
     // Unshare from group only
     OC_User::setUserId($this->user1);
     $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1));
     OC_User::setUserId($this->user2);
     $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_DELETE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS));
     // Attempt user specific target conflict
     OC_User::setUserId($this->user3);
     $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE));
     OC_User::setUserId($this->user2);
     $to_test = OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET);
     $this->assertEquals(2, count($to_test));
     $this->assertTrue(in_array('test.txt', $to_test));
     $this->assertTrue(in_array('test1.txt', $to_test));
     // Valid reshare
     $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE));
     OC_User::setUserId($this->user4);
     $this->assertEquals(array('test1.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     // Remove user from group
     OC_Group::removeFromGroup($this->user2, $this->group1);
     OC_User::setUserId($this->user2);
     $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     OC_User::setUserId($this->user4);
     $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     // Add user to group
     OC_Group::addToGroup($this->user4, $this->group1);
     $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     // Unshare from self
     $this->assertTrue(OCP\Share::unshareFromSelf('test', 'test.txt'));
     $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     OC_User::setUserId($this->user2);
     $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     // Unshare from self via source
     OC_User::setUserId($this->user1);
     $this->assertTrue(OCP\Share::unshareFromSelf('test', 'share.txt', true));
     $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     // Remove group
     OC_Group::deleteGroup($this->group1);
     OC_User::setUserId($this->user4);
     $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     OC_User::setUserId($this->user3);
     $this->assertEquals(array(), OCP\Share::getItemsShared('test'));
 }