summaryrefslogtreecommitdiffstats
path: root/lib/user
diff options
context:
space:
mode:
authorArthur Schiwon <blizzz@owncloud.com>2013-09-16 14:15:35 +0200
committerArthur Schiwon <blizzz@owncloud.com>2013-09-24 13:46:30 +0200
commitd101ff42f16ef7288b40666eba20c69621481ea4 (patch)
treee3183f924da88090feb88ff67e1af5060a0b9db6 /lib/user
parent40871bab88159d914cfab2dd938a2312ed8eb1c1 (diff)
downloadnextcloud-server-d101ff42f16ef7288b40666eba20c69621481ea4.tar.gz
nextcloud-server-d101ff42f16ef7288b40666eba20c69621481ea4.zip
User: move checkPassword from User to Manager to not break API
Diffstat (limited to 'lib/user')
-rw-r--r--lib/user/http.php6
-rw-r--r--lib/user/manager.php17
-rw-r--r--lib/user/session.php19
-rw-r--r--lib/user/user.php18
4 files changed, 32 insertions, 28 deletions
diff --git a/lib/user/http.php b/lib/user/http.php
index 1e044ed4188..ea14cb57c93 100644
--- a/lib/user/http.php
+++ b/lib/user/http.php
@@ -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;
}
/**
diff --git a/lib/user/manager.php b/lib/user/manager.php
index 8dc9bfe2729..2de694a3d9f 100644
--- a/lib/user/manager.php
+++ b/lib/user/manager.php
@@ -119,6 +119,23 @@ class Manager extends PublicEmitter {
}
/**
+ * 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
*
* @param string $pattern
diff --git a/lib/user/session.php b/lib/user/session.php
index 9a6c669e935..b5e9385234d 100644
--- a/lib/user/session.php
+++ b/lib/user/session.php
@@ -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;
diff --git a/lib/user/user.php b/lib/user/user.php
index 8115c43198c..e5f842944f1 100644
--- a/lib/user/user.php
+++ b/lib/user/user.php
@@ -106,24 +106,6 @@ class User {
}
/**
- * 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
*
* @param string $password