summaryrefslogtreecommitdiffstats
path: root/lib/private/User
diff options
context:
space:
mode:
authorChristoph Wurst <christoph@owncloud.com>2016-04-27 12:01:13 +0200
committerThomas Müller <thomas.mueller@tmit.eu>2016-05-11 13:36:46 +0200
commit7aa16e1559e8ef1121ac2529090a6881b4d919d5 (patch)
tree3967b0038d51acc71c7e41b44fd1008c004f7fa5 /lib/private/User
parent18704a9fc879b13322d6ddc6f8e0ef331415a5c3 (diff)
downloadnextcloud-server-7aa16e1559e8ef1121ac2529090a6881b4d919d5.tar.gz
nextcloud-server-7aa16e1559e8ef1121ac2529090a6881b4d919d5.zip
fix setup
Diffstat (limited to 'lib/private/User')
-rw-r--r--lib/private/User/Session.php28
1 files changed, 22 insertions, 6 deletions
diff --git a/lib/private/User/Session.php b/lib/private/User/Session.php
index bb35b65b272..262174ab172 100644
--- a/lib/private/User/Session.php
+++ b/lib/private/User/Session.php
@@ -96,7 +96,7 @@ class Session implements IUserSession, Emitter {
* @param ISession $session
* @param IProvider[] $tokenProviders
*/
- public function __construct(IUserManager $manager, ISession $session, DefaultTokenProvider $tokenProvider, array $tokenProviders = []) {
+ public function __construct(IUserManager $manager, ISession $session, $tokenProvider, array $tokenProviders = []) {
$this->manager = $manager;
$this->session = $session;
$this->tokenProvider = $tokenProvider;
@@ -104,6 +104,13 @@ class Session implements IUserSession, Emitter {
}
/**
+ * @param DefaultTokenProvider $provider
+ */
+ public function setTokenProvider(DefaultTokenProvider $provider) {
+ $this->tokenProvider = $provider;
+ }
+
+ /**
* @param string $scope
* @param string $method
* @param callable $callback
@@ -296,6 +303,13 @@ class Session implements IUserSession, Emitter {
$this->setLoginName($uid);
$this->manager->emit('\OC\User', 'postLogin', array($user, $password));
if ($this->isLoggedIn()) {
+ // Refresh the token
+ \OC::$server->getCsrfTokenManager()->refreshToken();
+ //we need to pass the user name, which may differ from login name
+ $user = $this->getUser()->getUID();
+ \OC_Util::setupFS($user);
+ //trigger creation of user home and /files folder
+ \OC::$server->getUserFolder($user);
return true;
} else {
// injecting l10n does not work - there is a circular dependency between session and \OCP\L10N\IFactory
@@ -359,16 +373,18 @@ class Session implements IUserSession, Emitter {
* @return boolean
*/
public function createSessionToken(IRequest $request, $uid, $password) {
- $this->session->regenerateId();
if (is_null($this->manager->get($uid))) {
// User does not exist
return false;
}
$name = isset($request->server['HTTP_USER_AGENT']) ? $request->server['HTTP_USER_AGENT'] : 'unknown browser';
// TODO: use ISession::getId(), https://github.com/owncloud/core/pull/24229
- $sessionId = session_id();
- $token = $this->tokenProvider->generateToken($sessionId, $uid, $password, $name);
- return $this->loginWithToken($uid);
+ $loggedIn = $this->login($uid, $password);
+ if ($loggedIn) {
+ $sessionId = session_id();
+ $this->tokenProvider->generateToken($sessionId, $uid, $password, $name);
+ }
+ return $loggedIn;
}
/**
@@ -402,7 +418,7 @@ class Session implements IUserSession, Emitter {
private function updateToken(IProvider $provider, IToken $token) {
// To save unnecessary DB queries, this is only done once a minute
$lastTokenUpdate = $this->session->get('last_token_update') ? : 0;
- if ($lastTokenUpdate < (time () - 60)) {
+ if ($lastTokenUpdate < (time() - 60)) {
$provider->updateToken($token);
$this->session->set('last_token_update', time());
}