aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/user_ldap/lib/User/User.php11
-rw-r--r--apps/user_ldap/tests/User/UserTest.php12
2 files changed, 20 insertions, 3 deletions
diff --git a/apps/user_ldap/lib/User/User.php b/apps/user_ldap/lib/User/User.php
index f85e4206eff..cc80ac7a875 100644
--- a/apps/user_ldap/lib/User/User.php
+++ b/apps/user_ldap/lib/User/User.php
@@ -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
diff --git a/apps/user_ldap/tests/User/UserTest.php b/apps/user_ldap/tests/User/UserTest.php
index 470b0829868..23ce407dfd7 100644
--- a/apps/user_ldap/tests/User/UserTest.php
+++ b/apps/user_ldap/tests/User/UserTest.php
@@ -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')