summaryrefslogtreecommitdiffstats
path: root/lib/public
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2016-04-27 12:47:04 +0200
committerVincent Petry <pvince81@owncloud.com>2016-05-20 17:56:02 +0200
commit8343cfb64b8297035987bc4980ec72015c8e1a04 (patch)
tree812f44ba113313e7537779bcce4c04cf736e4cad /lib/public
parent59a85a4c76b80658d9373e3acf4f71b872b244a0 (diff)
downloadnextcloud-server-8343cfb64b8297035987bc4980ec72015c8e1a04.tar.gz
nextcloud-server-8343cfb64b8297035987bc4980ec72015c8e1a04.zip
Add interface methods for permission check
Instead of checking for admin perm, use interface method canUserAssignTag and canUserSeeTag to check for permissions. Allows for more flexible implementation.
Diffstat (limited to 'lib/public')
-rw-r--r--lib/public/SystemTag/ISystemTagManager.php33
-rw-r--r--lib/public/UserNotFoundException.php62
2 files changed, 95 insertions, 0 deletions
diff --git a/lib/public/SystemTag/ISystemTagManager.php b/lib/public/SystemTag/ISystemTagManager.php
index 983bfd636ce..7fb0c21436c 100644
--- a/lib/public/SystemTag/ISystemTagManager.php
+++ b/lib/public/SystemTag/ISystemTagManager.php
@@ -113,4 +113,37 @@ interface ISystemTagManager {
*/
public function deleteTags($tagIds);
+ /**
+ * Checks whether the given user is allowed to assign/unassign the tag with the
+ * given id.
+ *
+ * @param string|\OCP\SystemTag\ISystemTag $tag tag id or system tag
+ * @param string $userId user id
+ *
+ * @return true if the user is allowed to assign/unassign the tag, false otherwise
+ *
+ * @throws \OCP\SystemTag\TagNotFoundException if tag with the given id does not exist
+ * @throws \OCP\UserNotFoundException if the given user id does not exist
+ * @throws \InvalidArgumentException if the tag id is invalid (string instead of integer, etc.)
+ *
+ * @since 9.1.0
+ */
+ public function canUserAssignTag($tag, $userId);
+
+ /**
+ * Checks whether the given user is allowed to see the tag with the given id.
+ *
+ * @param string|\OCP\SystemTag\ISystemTag $tag tag id or system tag
+ * @param string $userId user id
+ *
+ * @return true if the user is allowed to assign/unassign the tag, false otherwise
+ *
+ * @throws \OCP\SystemTag\TagNotFoundException if tag with the given id does not exist
+ * @throws \OCP\UserNotFoundException if the given user id does not exist
+ * @throws \InvalidArgumentException if the tag id is invalid (string instead of integer, etc.)
+ *
+ * @since 9.1.0
+ */
+ public function canUserSeeTag($tag, $userId);
+
}
diff --git a/lib/public/UserNotFoundException.php b/lib/public/UserNotFoundException.php
new file mode 100644
index 00000000000..b0f9eea0e8a
--- /dev/null
+++ b/lib/public/UserNotFoundException.php
@@ -0,0 +1,62 @@
+<?php
+/**
+ * @author Vincent Petry <pvince81@owncloud.com>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCP;
+
+/**
+ * Exception when a user was not found
+ *
+ * @since 9.1.0
+ */
+class UserNotFoundException extends \RuntimeException {
+
+ /**
+ * User id that was not found
+ *
+ * @var string
+ */
+ private $userId;
+
+ /**
+ * UserNotFoundException constructor.
+ *
+ * @param string $message message
+ * @param int $code error code
+ * @param \Exception $previous previous exception
+ * @param string $userId user id
+ *
+ * @since 9.1.0
+ */
+ public function __construct($message = '', $code = 0, \Exception $previous = null, $userId = null) {
+ parent::__construct($message, $code, $previous);
+ $this->userId = $userId;
+ }
+
+ /**
+ * Returns the user id that was not found
+ *
+ * @return string
+ * @since 9.1.0
+ */
+ public function getUserId() {
+ return $this->userId;
+ }
+}