Add logic for getting the user from the rss token to the Manager
This commit is contained in:
parent
4c9c73bef9
commit
b95d12700c
|
@ -28,8 +28,34 @@ namespace OC;
|
||||||
use OCP\Activity\IConsumer;
|
use OCP\Activity\IConsumer;
|
||||||
use OCP\Activity\IExtension;
|
use OCP\Activity\IExtension;
|
||||||
use OCP\Activity\IManager;
|
use OCP\Activity\IManager;
|
||||||
|
use OCP\IConfig;
|
||||||
|
use OCP\IRequest;
|
||||||
|
use OCP\IUserSession;
|
||||||
|
|
||||||
class ActivityManager implements IManager {
|
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[]
|
* @var \Closure[]
|
||||||
|
@ -348,4 +374,43 @@ class ActivityManager implements IManager {
|
||||||
|
|
||||||
return array(' and ((' . implode(') or (', $conditions) . '))', $parameters);
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -223,8 +223,12 @@ class Server extends SimpleContainer implements IServerContainer {
|
||||||
new ArrayCache()
|
new ArrayCache()
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
$this->registerService('ActivityManager', function ($c) {
|
$this->registerService('ActivityManager', function (Server $c) {
|
||||||
return new ActivityManager();
|
return new ActivityManager(
|
||||||
|
$c->getRequest(),
|
||||||
|
$c->getUserSession(),
|
||||||
|
$c->getConfig()
|
||||||
|
);
|
||||||
});
|
});
|
||||||
$this->registerService('AvatarManager', function ($c) {
|
$this->registerService('AvatarManager', function ($c) {
|
||||||
return new AvatarManager();
|
return new AvatarManager();
|
||||||
|
|
|
@ -136,4 +136,14 @@ interface IManager {
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
function getQueryForFilter($filter);
|
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…
Reference in New Issue