Sto usando questo plugin per sincronizzare gli utenti da un sito Django, ma l’avatar viene sincronizzato solo alla creazione. Se l’utente lo cambia in Django, non viene sincronizzato in Discourse.
Infatti, in Discourse managed_authenticator.rb, retrieve_avatar ritorna presto se l’utente ha già un avatar personalizzato impostato:
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
Mi sono perso qualcosa o discourse-openid-connect non può aggiornare l’avatar al login?
Ho anche una domanda per “website”, “location” e “bio_raw”. DiscourseConnect li sincronizza al login, può farlo anche openidconnect? Sono tutti supportati nelle oidc claims.
Sì, ho combattuto anch’io con questo problema per standardizzare gli avatar.
Speravo di utilizzare una “custom picture claim” dal nostro IdP (Entra) per includere l’URL di un host di avatar che non ha il problema con l’autenticazione del token bearer per scaricare_avatar_da_url come fa quello generico di graph.microsoft. Tuttavia, i test sembrano indicare che il plugin memorizza /userinfo e ignora la “picture claim” JWT, quindi è comunque un vicolo cieco.