Browse Source

Add logic for getting the user from the rss token to the Manager

remotes/origin/poc-doctrine-migrations
Joas Schilling 11 years ago
parent
commit
b95d12700c
  1. 65
      lib/private/activitymanager.php
  2. 8
      lib/private/server.php
  3. 10
      lib/public/activity/imanager.php

65
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);
}
}

8
lib/private/server.php

@ -223,8 +223,12 @@ class Server extends SimpleContainer implements IServerContainer {
new ArrayCache()
);
});
$this->registerService('ActivityManager', function ($c) {
return new ActivityManager();
$this->registerService('ActivityManager', function (Server $c) {
return new ActivityManager(
$c->getRequest(),
$c->getUserSession(),
$c->getConfig()
);
});
$this->registerService('AvatarManager', function ($c) {
return new AvatarManager();

10
lib/public/activity/imanager.php

@ -136,4 +136,14 @@ interface IManager {
* @return array
*/
function getQueryForFilter($filter);
/**
* 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();
}
Loading…
Cancel
Save