Use the cache also for UserBackend::getPassword

Signed-off-by: Joas Schilling <coding@schilljs.com>
pull/31218/head
Joas Schilling 5 years ago
parent 1bfd001cf6
commit 23ef02fbe2
No known key found for this signature in database
GPG Key ID: 7076EA9751AACDDA
  1. 23
      lib/private/User/Database.php

@ -329,28 +329,16 @@ class Database extends ABackend implements
* returns the user id or false
*/
public function checkPassword(string $loginName, string $password) {
$this->fixDI();
$found = $this->loadUser($loginName);
$qb = $this->dbConn->getQueryBuilder();
$qb->select('uid', 'password')
->from($this->table)
->where(
$qb->expr()->eq(
'uid_lower', $qb->createNamedParameter(mb_strtolower($loginName))
)
);
$result = $qb->execute();
$row = $result->fetch();
$result->closeCursor();
if ($row) {
$storedHash = $row['password'];
if ($found && is_array($this->cache[$loginName])) {
$storedHash = $this->cache[$loginName]['password'];
$newHash = '';
if (\OC::$server->getHasher()->verify($password, $storedHash, $newHash)) {
if (!empty($newHash)) {
$this->updatePassword($loginName, $newHash);
}
return (string)$row['uid'];
return (string)$this->cache[$loginName]['uid'];
}
}
@ -375,7 +363,7 @@ class Database extends ABackend implements
}
$qb = $this->dbConn->getQueryBuilder();
$qb->select('uid', 'displayname')
$qb->select('uid', 'displayname', 'password')
->from($this->table)
->where(
$qb->expr()->eq(
@ -391,6 +379,7 @@ class Database extends ABackend implements
$this->cache[$uid] = [
'uid' => (string)$row['uid'],
'displayname' => (string)$row['displayname'],
'password' => (string)$row['password'],
];
} else {
$this->cache[$uid] = false;

Loading…
Cancel
Save