Merge pull request #21623 from owncloud/stricter_defaultprovider

[Share 2.0] Default share provider should only query for supported types
This commit is contained in:
Thomas Müller 2016-01-14 16:12:06 +01:00
commit 3f64d37f2a
2 changed files with 28 additions and 9 deletions

View File

@ -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();

View File

@ -374,9 +374,6 @@ class DefaultShareProviderTest extends \Test\TestCase {
$qb->expects($this->once())
->method('where')
->will($this->returnSelf());
$qb->expects($this->once())
->method('setParameter')
->will($this->returnSelf());
$qb->expects($this->once())
->method('execute')
->will($this->throwException(new \Exception));