Аватар синхронизируется только при создании

Привет!

Я использую этот плагин для синхронизации пользователей с сайта на Django, но аватар синхронизируется только при создании. Если пользователь меняет его в Django, в Discourse изменения не применяются.

Фактически, в файле Discourse managed_authenticator.rb метод retrieve_avatar завершается раньше времени, если у пользователя уже настроен пользовательский аватар:

  def retrieve_avatar(user, url)
    return unless user && url
    return if user.user_avatar.try(:custom_upload_id).present?
    Jobs.enqueue(:download_avatar_from_url, url: url, user_id: user.id, override_gravatar: false)
  end

Я что-то упустил, или плагин discourse-openid-connect не может обновлять аватар при входе?

Также у меня есть вопрос по полям “website”, “location” и “bio_raw”. DiscourseConnect синхронизирует их при входе, может ли openidconnect делать то же самое? Все эти поля поддерживаются в OIDC-заявлениях (claims).

Всего наилучшего!

У меня то же самое, с v3.1.3…

Да, я сам боролся с этой проблемой при стандартизации аватаров.

Я надеялся использовать пользовательское утверждение изображения из нашего IdP (Entra), чтобы включить URL-адрес хоста аватаров, у которого нет проблемы с аутентификацией по токенам доступа для функции download_avatar_from_url, как это бывает с универсальным graph.microsoft. Однако тестирование показало, что плагин сохраняет /userinfo и игнорирует утверждение JWT picture, так что это в любом случае тупиковый путь.

Я только что понял, что, наверное, стоит опубликовать это здесь, но я уже отправил PR по этому поводу: FEATURE: managed auth can override avatars by lewisakura · Pull Request #34123 · discourse/discourse · GitHub

Спасибо за вклад @lewisakura, ваш PR теперь влит!