diff --git a/lib/user.php b/lib/user.php index e53ba145c9e33acf6c7a7e1fce7f067409c4105f..0630ebb93848d233a6266530559b8246d9bcaf25 100644 --- a/lib/user.php +++ b/lib/user.php @@ -191,13 +191,17 @@ class OC_User { $run = true; OC_Hook::emit( "OC_User", "pre_login", array( "run" => &$run, "uid" => $uid )); - if( $run && self::checkPassword( $uid, $password )){ - $_SESSION['user_id'] = $uid; - OC_Crypt::init($uid,$password); - OC_Hook::emit( "OC_User", "post_login", array( "uid" => $uid )); - return true; - } - else{ + if( $run ){ + $uid=self::checkPassword( $uid, $password ); + if($uid){ + $_SESSION['user_id'] = $uid; + OC_Crypt::init($uid,$password); + OC_Hook::emit( "OC_User", "post_login", array( "uid" => $uid )); + return true; + }else{ + return false; + } + }else{ return false; } } @@ -292,8 +296,8 @@ class OC_User { foreach(self::$_usedBackends as $backend){ if($backend->implementsActions(OC_USER_BACKEND_CHECK_PASSWORD)){ $result=$backend->checkPassword( $uid, $password ); - if($result===true){ - return true; + if($result){ + return $result; } } } diff --git a/lib/user/database.php b/lib/user/database.php index 4992c2aa1649c4c6702cde3d3a923220b102b463..f29aaf00f05ec84926532029055360162af67a52 100644 --- a/lib/user/database.php +++ b/lib/user/database.php @@ -103,13 +103,13 @@ class OC_User_Database extends OC_User_Backend { * Check if the password is correct without logging in the user */ public function checkPassword( $uid, $password ){ - $query = OC_DB::prepare( "SELECT uid FROM *PREFIX*users WHERE uid = ? AND password = ?" ); + $query = OC_DB::prepare( "SELECT uid FROM *PREFIX*users WHERE uid LIKE ? AND password = ?" ); $result = $query->execute( array( $uid, sha1( $password ))); if( $result->numRows() > 0 ){ - return true; - } - else{ + $row=$result->fetchRow(); + return $row['uid']; + }else{ return false; } }