summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2015-09-04 18:26:50 +0200
committerMorris Jobke <hey@morrisjobke.de>2015-09-04 18:26:50 +0200
commit7f8bca64cbb32df8eca313a886fd21e54fc24f13 (patch)
tree06b871d6a340ad972141d6fd988b171f267a7809
parentaf5cfe585c61f85ea615d903c5d76914cdc0a637 (diff)
parentf100ef0fc6acddc6f5c9d38affa34bb243dc8eeb (diff)
downloadnextcloud-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.php12
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';