diff options
author | Joas Schilling <nickvergessen@owncloud.com> | 2015-03-25 15:18:11 +0100 |
---|---|---|
committer | Joas Schilling <nickvergessen@owncloud.com> | 2015-03-30 15:23:09 +0200 |
commit | b95d12700ccd5987e580ee30efc50c76019de97a (patch) | |
tree | a131362049194fa95d226b5b6d6b18070ddb8f27 /lib/private/activitymanager.php | |
parent | 4c9c73bef925d41d8bc9f39f4365c34d794ab86a (diff) | |
download | nextcloud-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.php | 65 |
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); + } } |