summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2016-01-14 16:12:06 +0100
committerThomas Müller <thomas.mueller@tmit.eu>2016-01-14 16:12:06 +0100
commit3f64d37f2afd2f9a706df7495d543dccdb51c1f7 (patch)
tree50d3dc4ea18e7663d93b458c787eed0fa87d4804 /lib
parent953c4bf18a2e14b05e36823d97489b566bb65551 (diff)
parent663e71e4b3baca2330ec6e8381bbeed00142adf0 (diff)
downloadnextcloud-server-3f64d37f2afd2f9a706df7495d543dccdb51c1f7.tar.gz
nextcloud-server-3f64d37f2afd2f9a706df7495d543dccdb51c1f7.zip
Merge pull request #21623 from owncloud/stricter_defaultprovider
[Share 2.0] Default share provider should only query for supported types
Diffstat (limited to 'lib')
-rw-r--r--lib/private/share20/defaultshareprovider.php34
1 files changed, 28 insertions, 6 deletions
diff --git a/lib/private/share20/defaultshareprovider.php b/lib/private/share20/defaultshareprovider.php
index 7a08ecb1210..f4c33d68b46 100644
--- a/lib/private/share20/defaultshareprovider.php
+++ b/lib/private/share20/defaultshareprovider.php
@@ -36,6 +36,9 @@ use OCP\Files\Node;
*/
class DefaultShareProvider implements IShareProvider {
+ // Special share type for user modified group shares
+ const SHARE_TYPE_USERGROUP = 2;
+
/** @var IDBConnection */
private $dbConn;
@@ -185,8 +188,18 @@ class DefaultShareProvider implements IShareProvider {
$qb = $this->dbConn->getQueryBuilder();
$qb->select('*')
->from('share')
- ->where($qb->expr()->eq('parent', $qb->createParameter('parent')))
- ->setParameter(':parent', $parent->getId())
+ ->where($qb->expr()->eq('parent', $qb->createNamedParameter($parent->getId())))
+ ->andWhere(
+ $qb->expr()->in(
+ 'share_type',
+ [
+ $qb->expr()->literal(\OCP\Share::SHARE_TYPE_USER),
+ $qb->expr()->literal(\OCP\Share::SHARE_TYPE_GROUP),
+ $qb->expr()->literal(\OCP\Share::SHARE_TYPE_LINK),
+ $qb->expr()->literal(self::SHARE_TYPE_USERGROUP),
+ ]
+ )
+ )
->orderBy('id');
$cursor = $qb->execute();
@@ -210,8 +223,7 @@ class DefaultShareProvider implements IShareProvider {
$qb = $this->dbConn->getQueryBuilder();
$qb->delete('share')
- ->where($qb->expr()->eq('id', $qb->createParameter('id')))
- ->setParameter(':id', $share->getId());
+ ->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())));
try {
$qb->execute();
@@ -244,8 +256,18 @@ class DefaultShareProvider implements IShareProvider {
$qb->select('*')
->from('share')
- ->where($qb->expr()->eq('id', $qb->createParameter('id')))
- ->setParameter(':id', $id);
+ ->where($qb->expr()->eq('id', $qb->createNamedParameter($id)))
+ ->andWhere(
+ $qb->expr()->in(
+ 'share_type',
+ [
+ $qb->expr()->literal(\OCP\Share::SHARE_TYPE_USER),
+ $qb->expr()->literal(\OCP\Share::SHARE_TYPE_GROUP),
+ $qb->expr()->literal(\OCP\Share::SHARE_TYPE_LINK),
+ $qb->expr()->literal(self::SHARE_TYPE_USERGROUP),
+ ]
+ )
+ );
$cursor = $qb->execute();
$data = $cursor->fetch();