User: move checkPassword from User to Manager to not break API

This commit is contained in:
Arthur Schiwon 2013-09-16 14:15:35 +02:00
parent 40871bab88
commit d101ff42f1
7 changed files with 48 additions and 60 deletions

View File

@ -102,7 +102,7 @@ class User {
* @brief Check if the password is correct
* @param $uid The username
* @param $password The password
* @returns true/false
* @returns mixed username on success, false otherwise
*
* Check if the password is correct without logging in the user
*/

View File

@ -416,16 +416,12 @@ class OC_User {
* returns the user id or false
*/
public static function checkPassword($uid, $password) {
$user = self::getManager()->get($uid);
if ($user) {
if ($user->checkPassword($password)) {
return $user->getUID();
} else {
return false;
}
} else {
return false;
$manager = self::getManager();
$username = $manager->checkPassword($uid, $password);
if ($username !== false) {
return $manger->get($username);
}
return false;
}
/**

View File

@ -79,7 +79,11 @@ class OC_User_HTTP extends OC_User_Backend {
curl_close($ch);
return $status==200;
if($status == 200) {
return $uid;
}
return false;
}
/**

View File

@ -118,6 +118,23 @@ class Manager extends PublicEmitter {
return ($user !== null);
}
/**
* Check if the password is valid for the user
*
* @param $loginname
* @param $password
* @return mixed the User object on success, false otherwise
*/
public function checkPassword($loginname, $password) {
foreach ($this->backends as $backend) {
$uid = $backend->checkPassword($loginname, $password);
if ($uid !== false) {
return $this->getUserObject($uid, $backend);
}
}
return null;
}
/**
* search by user id
*

View File

@ -121,15 +121,16 @@ class Session implements Emitter {
*/
public function login($uid, $password) {
$this->manager->emit('\OC\User', 'preLogin', array($uid, $password));
$user = $this->manager->get($uid);
if ($user) {
$result = $user->checkPassword($password);
if ($result and $user->isEnabled()) {
$this->setUser($user);
$this->manager->emit('\OC\User', 'postLogin', array($user, $password));
return true;
} else {
return false;
$user = $this->manager->checkPassword($uid, $password);
if($user !== false) {
if (!is_null($user)) {
if ($user->isEnabled()) {
$this->setUser($user);
$this->manager->emit('\OC\User', 'postLogin', array($user, $password));
return true;
} else {
return false;
}
}
} else {
return false;

View File

@ -105,24 +105,6 @@ class User {
return !($result === false);
}
/**
* Check if the password is valid for the user
*
* @param $password
* @return bool
*/
public function checkPassword($password) {
if ($this->backend->implementsActions(\OC_USER_BACKEND_CHECK_PASSWORD)) {
$result = $this->backend->checkPassword($this->uid, $password);
if ($result !== false) {
$this->uid = $result;
}
return !($result === false);
} else {
return false;
}
}
/**
* Set the password of the user
*

View File

@ -61,10 +61,6 @@ class Session extends \PHPUnit_Framework_TestCase {
$backend = $this->getMock('OC_User_Dummy');
$user = $this->getMock('\OC\User\User', array(), array('foo', $backend));
$user->expects($this->once())
->method('checkPassword')
->with('bar')
->will($this->returnValue(true));
$user->expects($this->once())
->method('isEnabled')
->will($this->returnValue(true));
@ -73,8 +69,8 @@ class Session extends \PHPUnit_Framework_TestCase {
->will($this->returnValue('foo'));
$manager->expects($this->once())
->method('get')
->with('foo')
->method('checkPassword')
->with('foo', 'bar')
->will($this->returnValue($user));
$userSession = new \OC\User\Session($manager, $session);
@ -92,17 +88,13 @@ class Session extends \PHPUnit_Framework_TestCase {
$backend = $this->getMock('OC_User_Dummy');
$user = $this->getMock('\OC\User\User', array(), array('foo', $backend));
$user->expects($this->once())
->method('checkPassword')
->with('bar')
->will($this->returnValue(true));
$user->expects($this->once())
->method('isEnabled')
->will($this->returnValue(false));
$manager->expects($this->once())
->method('get')
->with('foo')
->method('checkPassword')
->with('foo', 'bar')
->will($this->returnValue($user));
$userSession = new \OC\User\Session($manager, $session);
@ -119,17 +111,13 @@ class Session extends \PHPUnit_Framework_TestCase {
$backend = $this->getMock('OC_User_Dummy');
$user = $this->getMock('\OC\User\User', array(), array('foo', $backend));
$user->expects($this->once())
->method('checkPassword')
->with('bar')
->will($this->returnValue(false));
$user->expects($this->never())
->method('isEnabled');
$manager->expects($this->once())
->method('get')
->with('foo')
->will($this->returnValue($user));
->method('checkPassword')
->with('foo', 'bar')
->will($this->returnValue(false));
$userSession = new \OC\User\Session($manager, $session);
$userSession->login('foo', 'bar');
@ -145,9 +133,9 @@ class Session extends \PHPUnit_Framework_TestCase {
$backend = $this->getMock('OC_User_Dummy');
$manager->expects($this->once())
->method('get')
->with('foo')
->will($this->returnValue(null));
->method('checkPassword')
->with('foo', 'bar')
->will($this->returnValue(false));
$userSession = new \OC\User\Session($manager, $session);
$userSession->login('foo', 'bar');