From 91cc45dbc48c27b2d58d2eb8592cef863c26b65e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A2u=20Cao?= Date: Sat, 31 May 2025 12:44:20 +0400 Subject: [PATCH 1/4] Fix IsUploadAvatarChanged comparison Use the correct function for hashing image data --- models/user/avatar.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/models/user/avatar.go b/models/user/avatar.go index 3d9fc4452f8ab..542bd93b982ce 100644 --- a/models/user/avatar.go +++ b/models/user/avatar.go @@ -5,7 +5,6 @@ package user import ( "context" - "crypto/md5" "fmt" "image/png" "io" @@ -106,7 +105,7 @@ func (u *User) IsUploadAvatarChanged(data []byte) bool { if !u.UseCustomAvatar || len(u.Avatar) == 0 { return true } - avatarID := fmt.Sprintf("%x", md5.Sum([]byte(fmt.Sprintf("%d-%x", u.ID, md5.Sum(data))))) + avatarID := avatar.HashAvatar(u.ID, data) return u.Avatar != avatarID } From 111d1e17254de7f0187e847d31db9746b8fc8690 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A2u=20Cao?= Date: Sat, 31 May 2025 12:46:45 +0400 Subject: [PATCH 2/4] Only attempt avatar upload when source avatar exists --- services/auth/source/ldap/source_sync.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/services/auth/source/ldap/source_sync.go b/services/auth/source/ldap/source_sync.go index 678b6b2b629ab..89f9b684d4eec 100644 --- a/services/auth/source/ldap/source_sync.go +++ b/services/auth/source/ldap/source_sync.go @@ -178,8 +178,9 @@ func (source *Source) Sync(ctx context.Context, updateExisting bool) error { } } - if usr.IsUploadAvatarChanged(su.Avatar) { - if err == nil && source.AttributeAvatar != "" { + if err == nil && source.AttributeAvatar != "" { + if len(su.Avatar) > 0 && usr.IsUploadAvatarChanged(su.Avatar) { + log.Trace("SyncExternalUsers[%s]: Uploading new avatar for %s", source.authSource.Name, usr.Name) _ = user_service.UploadAvatar(ctx, usr, su.Avatar) } } From fa8e2dba571cf1b8fad6a81fafe6fb03d2d4c2d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A2u=20Cao?= Date: Sat, 31 May 2025 20:43:33 +0400 Subject: [PATCH 3/4] Fix typo --- services/auth/source/ldap/source_sync.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/auth/source/ldap/source_sync.go b/services/auth/source/ldap/source_sync.go index 89f9b684d4eec..9a48379181729 100644 --- a/services/auth/source/ldap/source_sync.go +++ b/services/auth/source/ldap/source_sync.go @@ -180,7 +180,7 @@ func (source *Source) Sync(ctx context.Context, updateExisting bool) error { if err == nil && source.AttributeAvatar != "" { if len(su.Avatar) > 0 && usr.IsUploadAvatarChanged(su.Avatar) { - log.Trace("SyncExternalUsers[%s]: Uploading new avatar for %s", source.authSource.Name, usr.Name) + log.Trace("SyncExternalUsers[%s]: Uploading new avatar for %s", source.AuthSource.Name, usr.Name) _ = user_service.UploadAvatar(ctx, usr, su.Avatar) } } From 1366ca3bf91e67b96f6b0c75101ab67808272614 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A2u=20Cao?= <842+raucao@users.noreply.github.com> Date: Sun, 1 Jun 2025 14:49:25 +0200 Subject: [PATCH 4/4] Update services/auth/source/ldap/source_sync.go Co-authored-by: wxiaoguang --- services/auth/source/ldap/source_sync.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/auth/source/ldap/source_sync.go b/services/auth/source/ldap/source_sync.go index 9a48379181729..416b67dd46d23 100644 --- a/services/auth/source/ldap/source_sync.go +++ b/services/auth/source/ldap/source_sync.go @@ -178,7 +178,7 @@ func (source *Source) Sync(ctx context.Context, updateExisting bool) error { } } - if err == nil && source.AttributeAvatar != "" { + if source.AttributeAvatar != "" { if len(su.Avatar) > 0 && usr.IsUploadAvatarChanged(su.Avatar) { log.Trace("SyncExternalUsers[%s]: Uploading new avatar for %s", source.AuthSource.Name, usr.Name) _ = user_service.UploadAvatar(ctx, usr, su.Avatar)