diff options
author | Morris Jobke <hey@morrisjobke.de> | 2015-09-04 18:26:50 +0200 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2015-09-04 18:26:50 +0200 |
commit | 7f8bca64cbb32df8eca313a886fd21e54fc24f13 (patch) | |
tree | 06b871d6a340ad972141d6fd988b171f267a7809 | |
parent | af5cfe585c61f85ea615d903c5d76914cdc0a637 (diff) | |
parent | f100ef0fc6acddc6f5c9d38affa34bb243dc8eeb (diff) | |
download | nextcloud-server-7f8bca64cbb32df8eca313a886fd21e54fc24f13.tar.gz nextcloud-server-7f8bca64cbb32df8eca313a886fd21e54fc24f13.zip |
Merge pull request #18833 from owncloud/share-prevent-twice
Prevent sharing twice with user when already a group
-rw-r--r-- | lib/private/share/share.php | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/private/share/share.php b/lib/private/share/share.php index e1735dbf92e..70ed26c0b27 100644 --- a/lib/private/share/share.php +++ b/lib/private/share/share.php @@ -703,6 +703,18 @@ class Share extends Constants { throw new \Exception($message_t); } } + if ($checkExists = self::getItems($itemType, $itemSource, self::SHARE_TYPE_USER, + $shareWith, null, self::FORMAT_NONE, null, 1, true, true)) { + // Only allow the same share to occur again if it is the same + // owner and is not a user share, this use case is for increasing + // permissions for a specific user + if ($checkExists['uid_owner'] != $uidOwner || $checkExists['share_type'] == $shareType) { + $message = 'Sharing %s failed, because this item is already shared with user %s'; + $message_t = $l->t('Sharing %s failed, because this item is already shared with user %s', array($itemSourceName, $shareWith)); + \OC_Log::write('OCP\Share', sprintf($message, $itemSourceName, $shareWith), \OC_Log::ERROR); + throw new \Exception($message_t); + } + } } else if ($shareType === self::SHARE_TYPE_GROUP) { if (!\OC_Group::groupExists($shareWith)) { $message = 'Sharing %s failed, because the group %s does not exist'; |