summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorblizzz <blizzz@arthur-schiwon.de>2017-02-15 21:47:47 +0100
committerGitHub <noreply@github.com>2017-02-15 21:47:47 +0100
commit19fc68cbdca8b6e401c619c7b6b88836816ef6cb (patch)
tree66abed71e726a27e6cd779f40574cf34f1e022e0
parent79a16bc2d3408b2240489b0ddd4e27c52c72884c (diff)
parent9b6f99ab0824294f2491c3546f55788832634eff (diff)
downloadnextcloud-server-19fc68cbdca8b6e401c619c7b6b88836816ef6cb.tar.gz
nextcloud-server-19fc68cbdca8b6e401c619c7b6b88836816ef6cb.zip
Merge pull request #2606 from temparus/master
Add preLoginValidation hook
-rw-r--r--core/Controller/LoginController.php7
-rw-r--r--lib/private/User/Session.php9
2 files changed, 13 insertions, 3 deletions
diff --git a/core/Controller/LoginController.php b/core/Controller/LoginController.php
index 954a18e8778..abb1df4bcd4 100644
--- a/core/Controller/LoginController.php
+++ b/core/Controller/LoginController.php
@@ -1,8 +1,10 @@
<?php
/**
+ * @copyright Copyright (c) 2017, Sandro Lutz <sandro.lutz@temparus.ch>
* @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Sandro Lutz <sandro.lutz@temparus.ch>
* @author Christoph Wurst <christoph@owncloud.com>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
@@ -44,6 +46,7 @@ use OCP\IURLGenerator;
use OCP\IUser;
use OCP\IUserManager;
use OCP\IUserSession;
+use OC\Hooks\PublicEmitter;
class LoginController extends Controller {
/** @var IUserManager */
@@ -214,6 +217,10 @@ class LoginController extends Controller {
return $this->generateRedirect($redirect_url);
}
+ if ($this->userManager instanceof PublicEmitter) {
+ $this->userManager->emit('\OC\User', 'preLogin', array($user, $password));
+ }
+
$originalUser = $user;
// TODO: Add all the insane error handling
/* @var $loginResult IUser */
diff --git a/lib/private/User/Session.php b/lib/private/User/Session.php
index 705ca95210a..c03cbd5891b 100644
--- a/lib/private/User/Session.php
+++ b/lib/private/User/Session.php
@@ -1,7 +1,9 @@
<?php
/**
+ * @copyright Copyright (c) 2017, Sandro Lutz <sandro.lutz@temparus.ch>
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Sandro Lutz <sandro.lutz@temparus.ch>
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @author Christoph Wurst <christoph@owncloud.com>
@@ -332,6 +334,10 @@ class Session implements IUserSession, Emitter {
OC\Security\Bruteforce\Throttler $throttler) {
$currentDelay = $throttler->sleepDelay($request->getRemoteAddress(), 'login');
+ if ($this->manager instanceof PublicEmitter) {
+ $this->manager->emit('\OC\User', 'preLogin', array($user, $password));
+ }
+
$isTokenPassword = $this->isTokenPassword($password);
if (!$isTokenPassword && $this->isTokenAuthEnforced()) {
throw new PasswordLoginForbiddenException();
@@ -476,7 +482,6 @@ class Session implements IUserSession, Emitter {
* @throws LoginException if an app canceld the login process or the user is not enabled
*/
private function loginWithPassword($uid, $password) {
- $this->manager->emit('\OC\User', 'preLogin', array($uid, $password));
$user = $this->manager->checkPassword($uid, $password);
if ($user === false) {
// Password check failed
@@ -527,8 +532,6 @@ class Session implements IUserSession, Emitter {
// Ignore and use empty string instead
}
- $this->manager->emit('\OC\User', 'preLogin', array($uid, $password));
-
$user = $this->manager->get($uid);
if (is_null($user)) {
// user does not exist