Comment puis-je confirmer automatiquement une adresse e-mail secondaire ?

J’ai vu quelques sujets aborder ce problème, mais rien ne semble vraiment le traiter.

En gros, notre entreprise a été rachetée. Cela signifie que tous les utilisateurs passent de @old_company.com à @new_company.com.

J’ai une correspondance entre les anciennes et les nouvelles adresses e-mail. Ce que j’aimerais faire, c’est ajouter l’adresse e-mail @new_company.com pour un utilisateur et la confirmer automatiquement. Sinon, ils devront passer par les e-mails de confirmation eux-mêmes, ce qui, en réalité, n’arrivera pas.

Y a-t-il un moyen d’ajouter un e-mail secondaire en tant qu’administrateur et de le confirmer automatiquement ?

Simon mentionne ce qui suit :

Mais il n’est pas clair pour moi comment cela fonctionne. Comment peut-il synchroniser une adresse e-mail avec un compte, si l’adresse n’est pas encore confirmée ? Cela signifie-t-il que je devrais/pourrais :

  1. ajouter un e-mail secondaire pour l’utilisateur via l’API
  2. (peut-être) désactiver l’envoi d’e-mails sortants pendant 10 minutes afin qu’aucun e-mail de confirmation ne soit envoyé
  3. activer la synchronisation des e-mails SAML
  4. les comptes utilisateurs se confirment et se mettent à jour lorsqu’ils se connectent avec SAML

Remarque : nous changeons également de fournisseur SAML dans cet exemple

Même si l’e-mail secondaire n’a pas été confirmé, la configuration ci-dessus signifie-t-elle que lorsqu’ils essaieront de se connecter avec cet e-mail pour la première fois, il sera automatiquement confirmé et lié au compte ?

2 « J'aime »

image

Juste pour information, un point que j’ai mal compris était l’e-mail de confirmation. En tant qu’administrateur, vous recevez deux e-mails, un pour confirmer votre ancien e-mail, puis un second pour confirmer le changement.

Je pensais que cela s’appliquait à tous les utilisateurs, mais avec le paramètre de l’image ci-dessus, vous pouvez le définir pour qu’il ne s’applique qu’au personnel. Cela signifie que les utilisateurs ne recevraient qu’un seul e-mail pour confirmer le changement.

Il faut encore trouver comment confirmer automatiquement l’e-mail pour l’utilisateur :thinking:

1 « J'aime »

Je ne suis pas sûr qu’il existe un moyen de confirmer automatiquement via l’interface utilisateur/l’API. :thinking: Je pense que s’il y a SSO, la confirmation par e-mail/identité est gérée par eux ? Auquel cas, l’utilisation de sso_sync importerait les données/e-mails déjà confirmés et les utiliserait comme « dignes de confiance ».


Un peu de vérification des faits plus tard… :slight_smile:

/admin/users/sync_sso est uniquement pour DiscourseConnect. Je pense que vous le saviez déjà, mais je le dis à voix haute pour quiconque lira ceci plus tard.

Mais il y a aussi le paramètre d’administration auth_overrides_emails qui pourrait être utile pour cela.

Essentiellement, si votre fournisseur SAML envoie un e-mail vérifié et que auth_overrides_emails est défini, Discourse commencera à utiliser le nouvel e-mail sans aucune confirmation envoyée par e-mail. :+1:

2 « J'aime »

Ce n’est pas une réponse directe à votre question, mais : Dans le cas d’un renommage en masse d’adresses e-mail, vous pourriez le faire via la console Rails :

o = "@old_company.com"
n = "@new_company.com"
UserEmail.where("email LIKE ?", "%#{o}").each do |ue|
  ue.email.sub!(o, n)
  ue.save!
end

Si vous préférez ajouter une adresse e-mail secondaire :

o = "@old_company.com"
n = "@new_company.com"

UserEmail.where("email LIKE ?", "%#{o}").each do |ue|
  sm = UserEmail.new
  sm.user_id = ue.id
  sm.email = ue.email.sub!(o, n)
  sm.save!
end
1 « J'aime »

Merci pour les suggestions. Je les ai essayées de la manière suivante :

1. Ajouter un e-mail secondaire à l’utilisateur via l’API

L’e-mail n’est pas confirmé, mais il est lié au compte.

2. Configurer les paramètres suivants :

image

image

image

  • J’ai oublié de définir saml sync sur true, mais je ne pense pas que cela aurait affecté le résultat. Le problème semble toujours être un conflit en termes de confirmation d’e-mail.

3. Résultat

Le résultat a été la création d’un nouveau compte utilisateur basé sur le nouvel e-mail de l’entreprise. Au pire, je pourrais les fusionner, mais c’est un pire cas vraiment désagréable.

Je peux toujours voir l’e-mail non confirmé dans l’ancien compte. J’essaie de renvoyer la confirmation juste pour voir ce qui se passerait, mais j’obtiens une erreur 403 (Interdit).

Il semble que l’e-mail doive être confirmé d’abord avant que nous puissions les synchroniser :confused:

À moins que je ne manque quelque chose, il semble que j’ai besoin d’un moyen de confirmer le deuxième e-mail.

Je me demande si cela pose toujours le même problème en termes de confirmation, ou s’ils sont supposés être confirmés ? Une complexité supplémentaire est que la partie utilisateur de user@company.com a également changé. Mais je soupçonne que cela signifierait que nous parcourons un CSV des correspondances entre les anciens et les nouveaux e-mails.

Je pensais plutôt à changer l’e-mail dans le SSO, activer auth overrides emails, puis vous connecter à votre compte via votre SSO comme d’habitude.

Je passe peut-être à côté de quelque chose.

1 « J'aime »

Je pense que cela pourrait le faire, en validant un compte SAML en fonction de l’adresse e-mail et du serveur SAML utilisés pour se connecter. Le problème est qu’il s’agit d’un fournisseur d’identité SAML (IDP) complètement différent (New Company).

Par conséquent, il remplace/crée correctement l’e-mail pour qu’il soit l’e-mail SAML, mais il le fait pour un tout nouveau compte car le compte Discourse n’est pas associé à la nouvelle adresse e-mail.

Cependant, si le compte existant a déjà la nouvelle adresse e-mail SAML confirmée dans Discourse, alors la connexion est fluide et cela devient leur nouvel e-mail de connexion SAML.

Hmm. :thinking: Je pense que je travaillais peut-être sur l’hypothèse que le passage au nouvel IDP les aurait mappés en fonction d’un identifiant externe quelconque.

Je pense qu’il est possible d’activer/confirmer l’e-mail via la console Rails en ajoutant également les informations du jeton. Quelque chose comme :

old_domain = "<insert_here_the_old_domain>"
new_domain = "<insert_here_the_new_domain>"

users = UserEmail.where("email like '%" + old_domain + "'")

users.each do |user_email|
    user = User.find_by_id(user_email.user_id)
    user.email = user.email.gsub(old_domain, new_domain)
    user.email_tokens.create(email: user.email)
    user.activate
    user.save!
    puts "."
end
2 « J'aime »

À ma connaissance, cela ne s’est pas produit. Pour une autre plateforme, nous avons dû obtenir nous-mêmes une liste d’e-mails et effectuer le mappage.

Il semble de plus en plus que ce soit la voie à suivre. Nous sommes hébergés par vous, donc je vais transmettre cela à notre CSM et suivre ce sujet avec tout progrès.

2 « J'aime »