diff --git a/server/db/mysql/tenant_adapter.go b/server/db/mysql/tenant_adapter.go index 47e012b..80b054f 100644 --- a/server/db/mysql/tenant_adapter.go +++ b/server/db/mysql/tenant_adapter.go @@ -140,7 +140,7 @@ func profileSeedFromPublic(public any) (nickname, avatarFileID string) { break } } - for _, key := range []string{"avatar_file_id", "photo", "avatar"} { + for _, key := range []string{"avatar_file_id"} { if value := strings.TrimSpace(fmt.Sprint(values[key])); value != "" && value != "" { avatarFileID = value break diff --git a/server/db/mysql/user_identity_schema.go b/server/db/mysql/user_identity_schema.go index d528e0b..8ffe3f1 100644 --- a/server/db/mysql/user_identity_schema.go +++ b/server/db/mysql/user_identity_schema.go @@ -434,9 +434,7 @@ func backfillProfileDisplay(ctx context.Context, conn *sqlx.Conn, usersScoped bo NULLIF(JSON_UNQUOTE(JSON_EXTRACT(u.public,'$.name')), '') )` avatarExpr := `COALESCE( - NULLIF(JSON_UNQUOTE(JSON_EXTRACT(u.public,'$.avatar_file_id')), ''), - NULLIF(JSON_UNQUOTE(JSON_EXTRACT(u.public,'$.photo')), ''), - NULLIF(JSON_UNQUOTE(JSON_EXTRACT(u.public,'$.avatar')), '') + NULLIF(JSON_UNQUOTE(JSON_EXTRACT(u.public,'$.avatar_file_id')), '') )` if usersScoped { if _, err = conn.ExecContext(ctx, `INSERT IGNORE INTO im_user_profiles(id,tenant_id,user_id,nickname,avatar_file_id,public_account) diff --git a/server/db/mysql/user_identity_test.go b/server/db/mysql/user_identity_test.go index d9c3458..b756fe3 100644 --- a/server/db/mysql/user_identity_test.go +++ b/server/db/mysql/user_identity_test.go @@ -64,10 +64,14 @@ func TestProfilePublicFromFields(t *testing.T) { func TestProfileSeedFromPublic(t *testing.T) { nickname, avatar := profileSeedFromPublic(map[string]any{ - "fn": "旧昵称", - "photo": "file_avatar_1", + "fn": "旧昵称", + "avatar_file_id": "file_avatar_1", }) if nickname != "旧昵称" || avatar != "file_avatar_1" { t.Fatalf("unexpected profile seed nickname=%q avatar=%q", nickname, avatar) } + _, avatar = profileSeedFromPublic(map[string]any{"photo": "https://example.com/avatar.png"}) + if avatar != "" { + t.Fatalf("photo URL must not be treated as avatar_file_id: %q", avatar) + } }