summaryrefslogtreecommitdiffstats
path: root/lib/private/activitymanager.php
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@owncloud.com>2015-03-25 15:18:11 +0100
committerJoas Schilling <nickvergessen@owncloud.com>2015-03-30 15:23:09 +0200
commitb95d12700ccd5987e580ee30efc50c76019de97a (patch)
treea131362049194fa95d226b5b6d6b18070ddb8f27 /lib/private/activitymanager.php
parent4c9c73bef925d41d8bc9f39f4365c34d794ab86a (diff)
downloadnextcloud-server-b95d12700ccd5987e580ee30efc50c76019de97a.tar.gz
nextcloud-server-b95d12700ccd5987e580ee30efc50c76019de97a.zip
Add logic for getting the user from the rss token to the Manager
Diffstat (limited to 'lib/private/activitymanager.php')
-rw-r--r--lib/private/activitymanager.php65
1 files changed, 65 insertions, 0 deletions
diff --git a/lib/private/activitymanager.php b/lib/private/activitymanager.php
index c6cd5a1fe83..26db0c78df2 100644
--- a/lib/private/activitymanager.php
+++ b/lib/private/activitymanager.php
@@ -28,8 +28,34 @@ namespace OC;
use OCP\Activity\IConsumer;
use OCP\Activity\IExtension;
use OCP\Activity\IManager;
+use OCP\IConfig;
+use OCP\IRequest;
+use OCP\IUserSession;
class ActivityManager implements IManager {
+ /** @var IRequest */
+ protected $request;
+
+ /** @var IUserSession */
+ protected $session;
+
+ /** @var IConfig */
+ protected $config;
+
+ /**
+ * constructor of the controller
+ *
+ * @param IRequest $request
+ * @param IUserSession $session
+ * @param IConfig $config
+ */
+ public function __construct(IRequest $request,
+ IUserSession $session,
+ IConfig $config) {
+ $this->request = $request;
+ $this->session = $session;
+ $this->config = $config;
+ }
/**
* @var \Closure[]
@@ -348,4 +374,43 @@ class ActivityManager implements IManager {
return array(' and ((' . implode(') or (', $conditions) . '))', $parameters);
}
+
+ /**
+ * Get the user we need to use
+ *
+ * Either the user is logged in, or we try to get it from the token
+ *
+ * @return string
+ * @throws \UnexpectedValueException If the token is invalid, does not exist or is not unique
+ */
+ public function getCurrentUserId() {
+ if (!$this->session->isLoggedIn()) {
+ return $this->getUserFromToken();
+ } else {
+ return $this->session->getUser()->getUID();
+ }
+ }
+
+ /**
+ * Get the user for the token
+ *
+ * @return string
+ * @throws \UnexpectedValueException If the token is invalid, does not exist or is not unique
+ */
+ protected function getUserFromToken() {
+ $token = (string) $this->request->getParam('token', '');
+ if (strlen($token) !== 30) {
+ throw new \UnexpectedValueException('The token is invalid');
+ }
+
+ $users = $this->config->getUsersForUserValue('activity', 'rsstoken', $token);
+
+ if (sizeof($users) !== 1) {
+ // No unique user found
+ throw new \UnexpectedValueException('The token is invalid');
+ }
+
+ // Token found login as that user
+ return array_shift($users);
+ }
}