Skip to content

Commit

Permalink
Merge pull request #40371 from nextcloud/backport/39128/stable25
Browse files Browse the repository at this point in the history
[stable25] fix(ldap): avatar is not being fetched
  • Loading branch information
blizzz authored Oct 9, 2023
2 parents c7328ca + d87831a commit cddcba4
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 5 deletions.
15 changes: 12 additions & 3 deletions apps/user_ldap/lib/User/User.php
Original file line number Diff line number Diff line change
Expand Up @@ -525,9 +525,9 @@ public function updateAvatarPostLogin($params) {

/**
* @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;
}
Expand All @@ -544,7 +544,7 @@ public function updateAvatar($force = false) {
// 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;
}

Expand All @@ -558,6 +558,15 @@ public function updateAvatar($force = false) {
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
Expand Down
12 changes: 10 additions & 2 deletions apps/user_ldap/tests/User/UserTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -585,9 +585,17 @@ public function testUpdateAvatarKnownJpegPhotoProvided() {
$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')
Expand Down

0 comments on commit cddcba4

Please sign in to comment.