diff options
author | Christoph Wurst <christoph@owncloud.com> | 2016-04-27 12:01:13 +0200 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2016-05-11 13:36:46 +0200 |
commit | 7aa16e1559e8ef1121ac2529090a6881b4d919d5 (patch) | |
tree | 3967b0038d51acc71c7e41b44fd1008c004f7fa5 /lib/private/User | |
parent | 18704a9fc879b13322d6ddc6f8e0ef331415a5c3 (diff) | |
download | nextcloud-server-7aa16e1559e8ef1121ac2529090a6881b4d919d5.tar.gz nextcloud-server-7aa16e1559e8ef1121ac2529090a6881b4d919d5.zip |
fix setup
Diffstat (limited to 'lib/private/User')
-rw-r--r-- | lib/private/User/Session.php | 28 |
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()); } |