Merge pull request #3929 from nextcloud/downstream-27068
cache loadUser if not exists
This commit is contained in:
commit
257fbd85eb
2 changed files with 25 additions and 3 deletions
|
@ -234,7 +234,7 @@ class Database extends Backend implements IUserBackend {
|
|||
/**
|
||||
* Load an user in the cache
|
||||
* @param string $uid the username
|
||||
* @return boolean
|
||||
* @return boolean true if user was found, false otherwise
|
||||
*/
|
||||
private function loadUser($uid) {
|
||||
if (!isset($this->cache[$uid])) {
|
||||
|
@ -254,9 +254,14 @@ class Database extends Backend implements IUserBackend {
|
|||
|
||||
$this->cache[$uid] = false;
|
||||
|
||||
while ($row = $result->fetchRow()) {
|
||||
// "uid" is primary key, so there can only be a single result
|
||||
if ($row = $result->fetchRow()) {
|
||||
$this->cache[$uid]['uid'] = $row['uid'];
|
||||
$this->cache[$uid]['displayname'] = $row['displayname'];
|
||||
$result->closeCursor();
|
||||
} else {
|
||||
$result->closeCursor();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -87,7 +87,7 @@ class DatabaseTest extends Backend {
|
|||
$this->eventDispatcher->expects($this->once())->method('dispatch')
|
||||
->willReturnCallback(
|
||||
function ($eventName, GenericEvent $event) {
|
||||
$this->assertSame('OCP\PasswordPolicy::validate', $eventName);
|
||||
$this->assertSame('OCP\PasswordPolicy::validate', $eventName);
|
||||
$this->assertSame('newpass', $event->getSubject());
|
||||
throw new HintException('password change failed', 'password change failed');
|
||||
}
|
||||
|
@ -96,4 +96,21 @@ class DatabaseTest extends Backend {
|
|||
$this->backend->setPassword($user, 'newpass');
|
||||
$this->assertSame($user, $this->backend->checkPassword($user, 'newpass'));
|
||||
}
|
||||
|
||||
public function testCreateUserInvalidatesCache() {
|
||||
$user1 = $this->getUniqueID('test_');
|
||||
$this->assertFalse($this->backend->userExists($user1));
|
||||
$this->backend->createUser($user1, 'pw');
|
||||
$this->assertTrue($this->backend->userExists($user1));
|
||||
}
|
||||
|
||||
public function testDeleteUserInvalidatesCache() {
|
||||
$user1 = $this->getUniqueID('test_');
|
||||
$this->backend->createUser($user1, 'pw');
|
||||
$this->assertTrue($this->backend->userExists($user1));
|
||||
$this->backend->deleteUser($user1);
|
||||
$this->assertFalse($this->backend->userExists($user1));
|
||||
$this->backend->createUser($user1, 'pw2');
|
||||
$this->assertTrue($this->backend->userExists($user1));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue