Merge pull request #40369 from nextcloud/backport/39128/stable27

[stable27] fix(ldap): avatar is not being fetched
This commit is contained in:
Arthur Schiwon 2023-09-12 09:23:27 +02:00 committed by GitHub
commit 96d72c8bdc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 5 deletions

View file

@ -695,9 +695,9 @@ class User {
/**
* @brief attempts to get an image from LDAP and sets it as Nextcloud avatar
* @return bool
* @return bool true when the avatar was set successfully or is up to date
*/
public function updateAvatar($force = false) {
public function updateAvatar(bool $force = false): bool {
if (!$force && $this->wasRefreshed('avatar')) {
return false;
}
@ -714,7 +714,7 @@ class User {
// use the checksum before modifications
$checksum = md5($this->image->data());
if ($checksum === $this->config->getUserValue($this->uid, 'user_ldap', 'lastAvatarChecksum', '')) {
if ($checksum === $this->config->getUserValue($this->uid, 'user_ldap', 'lastAvatarChecksum', '') && $this->avatarExists()) {
return true;
}
@ -728,6 +728,15 @@ class User {
return $isSet;
}
private function avatarExists(): bool {
try {
$currentAvatar = $this->avatarManager->getAvatar($this->uid);
return $currentAvatar->exists() && $currentAvatar->isCustomAvatar();
} catch (\Exception $e) {
return false;
}
}
/**
* @brief sets an image as Nextcloud avatar
* @return bool

View file

@ -585,9 +585,17 @@ class UserTest extends \Test\TestCase {
$avatar = $this->createMock(IAvatar::class);
$avatar->expects($this->never())
->method('set');
$avatar->expects($this->any())
->method('exists')
->willReturn(true);
$avatar->expects($this->any())
->method('isCustomAvatar')
->willReturn(true);
$this->avatarManager->expects($this->never())
->method('getAvatar');
$this->avatarManager->expects($this->any())
->method('getAvatar')
->with($this->uid)
->willReturn($avatar);
$this->connection->expects($this->any())
->method('resolveRule')