He visto algunos temas que abordan este problema, pero nada parece resolverlo.
Básicamente, nuestra empresa fue comprada. Esto significa que todos los usuarios se están moviendo de @old_company.com a @new_company.com.
Tengo un mapa de direcciones de correo electrónico antiguas a nuevas. Lo que me gustaría hacer es agregar la dirección de correo electrónico @new_company.com para un usuario y confirmarla automáticamente. De lo contrario, tendrán que pasar por los correos electrónicos de confirmación ellos mismos, lo que, en términos realistas, no sucederá.
¿Hay alguna manera de que pueda agregar un correo electrónico secundario como administrador y confirmarlo automáticamente?
Simon menciona lo siguiente
Pero no me queda claro cómo funciona esto. ¿Cómo puede sincronizar una dirección de correo electrónico con una cuenta, si la dirección aún no está confirmada? ¿Significa esto que debería/podría?
agregar un correo electrónico secundario para el usuario a través de la API
(quizás) deshabilitar el correo electrónico saliente durante 10 minutos para que no se envíe ningún correo electrónico de confirmación
habilitar saml sync email
las cuentas de usuario se confirman y actualizan cuando inician sesión con saml
Nota, también estamos cambiando el proveedor de saml en este ejemplo
Incluso si el correo electrónico secundario no ha sido confirmado, ¿significa la configuración anterior que cuando intenten iniciar sesión con el correo electrónico por primera vez, se confirmará automáticamente y se vinculará a la cuenta?
Solo como nota, un problema que malinterpreté fue el correo electrónico de confirmación. Como administrador, recibes dos correos electrónicos, uno para confirmar tu correo electrónico anterior y luego un segundo para confirmar el cambio.
Supuse que esto se aplicaba a todos los usuarios, pero con la configuración en la imagen de arriba, puedes configurarlo para que se aplique solo al personal. Esto significa que los usuarios solo recibirían un correo electrónico para confirmar el cambio.
Todavía necesito averiguar cómo confirmar automáticamente el correo electrónico para el usuario
No estoy seguro de que haya una forma de confirmar automáticamente a través de la interfaz de usuario/API. Creo que si hay SSO, la confirmación del correo electrónico/identidad la manejan ellos. En ese caso, usar el sso_sync importaría los datos/correo electrónico ya confirmados y los usaría como “confiables”.
Un poco de verificación de hechos después…
El /admin/users/sync_sso es solo para DiscourseConnect. Creo que ya lo sabías, pero lo diré en voz alta para cualquiera que lea esto más tarde.
Pero también existe la configuración de administrador auth_overrides_emails que puede ser útil para esto.
Esencialmente, si su proveedor SAML está enviando un correo electrónico verificado y auth_overrides_emails está configurado, Discourse comenzará a usar el nuevo correo electrónico sin que se envíe ninguna confirmación por correo electrónico.
Esto no es una respuesta directa a tu pregunta, pero: En el caso de renombrar masivamente direcciones de correo electrónico, podrías hacerlo a través de la consola de 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 prefieres añadir una dirección de correo electrónico secundaria:
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
Olvidé establecer la sincronización saml en true, sin embargo, no creo que eso hubiera afectado el resultado. El problema todavía parece ser un conflicto en términos de la confirmación del correo electrónico.
3. Resultado
El resultado fue que se creó una nueva cuenta de usuario basada en el nuevo correo electrónico de la empresa. En el peor de los casos, podría fusionarlas, pero ese es un peor de los casos realmente desagradable.
Todavía puedo ver el correo electrónico no confirmado en la cuenta antigua. Intento reenviar la confirmación solo para ver qué sucedería, pero obtengo un error 403 (Prohibido).
Parece que el correo electrónico debe confirmarse primero antes de que podamos sincronizarlos
A menos que me esté perdiendo algo, parece que necesito una forma de confirmar el segundo correo electrónico.
Me pregunto si esto todavía tiene el mismo problema en términos de confirmación, o si se asumen como confirmados. Una complejidad adicional es que la parte del usuario de user@company.com también ha cambiado. Pero sospecho que eso significaría que ejecutamos un csv de mapeos entre los correos electrónicos antiguos y los nuevos.
Estaba pensando más en cambiar el correo electrónico en el SSO, habilitar auth overrides emails y luego iniciar sesión en tu cuenta a través de tu SSO de forma normal.
Creo que podría estar haciendo esto, en el sentido de que valida una cuenta SAML basándose en la dirección de correo electrónico y el servidor SAML utilizados para iniciar sesión. El problema es que es un IdP SAML completamente diferente (New Company).
En consecuencia, anula/crea correctamente el correo electrónico para que sea el correo electrónico SAML, pero lo hace para una cuenta completamente nueva porque la cuenta de Discourse no está asociada a la nueva dirección de correo electrónico.
Sin embargo, si la cuenta existente ya tiene la nueva dirección de correo electrónico SAML confirmada en Discourse, el inicio de sesión es fluido y se convierte en su nuevo correo electrónico de inicio de sesión SAML.
Hasta donde sé, esto no ha sucedido. Para otra plataforma, tuvimos que obtener una lista de los correos electrónicos nosotros mismos y hacer el mapeo.
Cada vez parece más que esta es la forma de proceder. Estamos alojados por ustedes, así que pasaré esto a nuestro CSM y haré un seguimiento de este tema con cualquier progreso.