¿Cambiar correo electrónico para el usuario SSO?

Obviously I’m testing with several accounts I created just for this purpose (using virtual machines and other browsers and too much time testing :wink: ).

I think I resolved the issue on my end. It had nothing to do with Discourse.

There’s a bit of code in my site’s footer that checks – for users whose email has been verified – if they are logged in to Discourse already and, if they aren’t, logs them in. This informs Discourse of users’ info, even if they don’t visit the forum itself.

Alas, this chunk was being accidentally cached so, of course, it wasn’t firing because it had been cached when no user had logged in. My bad! :blush:

3 Me gusta

This is probably the best place still to mention that there are cases when Discourse drives me absolutely nuts.

I happen to have several “users” that are not real. Whether they are read-only accounts for a specific hidden category, anonymous beyond the capabilities of Discourse or whatever should not matter. Some of these are automatic and created on the fly as needed (and reused in a queue).

Problem is, they have been added using a “noreply” email. That email does not exist anymore so Discourse is spamming out admin mails saying this email bounced, all the time, for each of these users and the moderators are now starting to go nuts.

Now, if I go in and change that email to an existing no-forward, no-store email, Discourse refuses to do it without sending a mail to said email asking for confirmation… so no changes are made. Anyone see the problem here? :smiley:

So I have two options I can think of:

Log in as each user using SSO to force an email change (which hopefully does not require confirmation, haven’t actually tried, would be too tedious).

Go to the preferences of each such user and change email notifications and summary digests to never, ever. And every time a new temporary user gets created, I need to remember to do the same.

Maaaaan. If I as an admin change an email for a user, there is no need to ask the user to confirm the email. Any user will hopefully contact me if I actually messed up which is very unlikely. Besides, these days I just let the users change their emails at will, less trouble for a poor admin. And I understand there is a risk that the user will never be able to login or notify anyone again but obviously they can mail the site help as such.

1 me gusta

Why not use the sync_sso endpoint to fix all the emails via api?

2 Me gusta

Not sure what you mean by this. Are you talking about the setting “sso overrides email”?

That would only take effect when/if the user actually logs in. So emails would still bounce while the email is wrong.

If you are possibly talking about “POST admin endpoint /admin/users/sync_sso to synchronize an SSO record” that would mean I would have to force one or all users from the SSO software I guess. Given the problems with SSO emails syncing it’s not the first option I would try.

Anyway, because of the problem described earlier in this topic I now have “sso overrides email” off and let users change their emails themselves. So I don’t want to override from SSO anymore.

But all this is missing the point, that the users bouncing mails are generated on the fly, as needed. The easiest way would be to allow a change to the email without authentication (at least for admins - or admins would have a choice).

Side note: I have tried giving an empty email address but the system does not allow for that. I understand the email address is so critical is should not be empty. BUT, if you really give an empty email (at least as an admin), one could assume you know what you are doing.

Just to confuse things more, I actually have users that do not have an email account, only access to a browser. Think refugees here and you might understand why. It is far easier to just allow someone to login and read instructions in their own language than to try and explain to them they need to make a gmail account or something.

In any case, this is theoretical, I doubt many people have the same problem. I would say it’s simply too strict even for admins, IMHO.

(sorry about the reply time, with more free time the world would be perfect)

1 me gusta

That would allow someone to hijack an admin’s account without their knowing. Though your edge case for users without access to email makes some sense, it seems far-fetched to think that admins would be people who don’t have the ability to receive email.

2 Me gusta

Admins have email addresses. Not sure where you got the idea they would not have (my bad writing probably :smiley: ).

The case was for an admin to be able to change other user’s emails without the need to authenticate.

1 me gusta

So I’m trying to do this - the use case is a user has changed their email in the SSO system, however they now can’t log in since there’s another account of theirs that uses their new email address already. SSO refuses to update the email (even though we have sso_overrides_email on) because email addresses must be unique across accounts. I don’t want to delete the account without the SSO record as that has posts associated with it. And if I turn off sso_overrides_email to change the email manually, I can’t make it some broken email since Discourse insists on validating it.

I see there’s a way to merge users but a) it’s a rake task and we’re hosted with Discourse, do I contact support to do that? b) there’s comments about needing to swap the primary and secondary email addresses.

1 me gusta

I’m in the same boat @trs80. Did you ever find out if there is a way to workaround this limitation of the merging?

I’ll have to check my email but support have generally been pretty good with resolving these issues.

2 Me gusta

“establecerlo para anular correos electrónicos”

¿Es esta la configuración “auth overrides email”?

1 me gusta

No está mal IA, contento con esta respuesta:

Explicación de la IA sobre correos electrónicos de anulaciones de autenticación IA

sam:

¿qué hace el correo electrónico de anulaciones de autenticación?

gpt4_bot:

Buscar contexto de configuración del sitio

Leyendo contexto para: auth_overrides_email

La configuración del sitio `auth_overrides_email` en Discourse es responsable de controlar el comportamiento del correo electrónico en relación con los proveedores de autenticación externos. Cuando se establece en `true`, esta configuración hace lo siguiente:
  1. Anula la dirección de correo electrónico local con la dirección de correo electrónico proporcionada por el proveedor de autenticación externo (por ejemplo, SSO, OAuth) en cada inicio de sesión de usuario.
  2. Impide que el usuario realice cambios locales en su dirección de correo electrónico dentro de la configuración de su cuenta de Discourse.

Esta función es aplicable a todos los proveedores de autenticación configurados en el sitio de Discourse. Esta configuración es útil cuando desea mantener la coherencia del correo electrónico y la verificación de identidad para los usuarios que inician sesión a través de servicios externos.

Sin embargo, los usuarios deben tener cuidado con esta configuración, ya que pueden producirse discrepancias debido a la normalización de las direcciones de correo electrónico locales. Esto significa que si hay una diferencia en cómo el sistema externo y Discourse formatean o manejan las direcciones de correo electrónico, podría generar desajustes o problemas con la vinculación de cuentas.

El valor predeterminado de auth_overrides_email es false, lo que significa que, de forma predeterminada, Discourse no anula los correos electrónicos locales con los correos electrónicos del sitio externo en cada inicio de sesión, ni impide que los usuarios cambien sus direcciones de correo electrónico.

Cuando esta configuración está habilitada, afecta a varios permisos de usuario, incluida la incapacidad de editar direcciones de correo electrónico en ciertos casos, según lo gestionan los scripts guardian del sitio y del usuario. Además, la configuración influye en cómo se muestran los campos de correo electrónico y si se dan instrucciones a los usuarios sobre los cambios de dirección de correo electrónico dentro de la interfaz de usuario.

1 me gusta

También tengo problemas aquí. Discourse obtiene su información SSO de mi sitio de WordPress y auth_overrides_email está habilitado.

Sin embargo, cuando actualizo la dirección de correo electrónico del usuario en WordPress, no se realizan cambios en Discourse.

Intenté desactivar auth_overrides_email, y aunque eso eliminó el comentario de que era administrado por un proveedor de autenticación, nunca hubo un ícono de lápiz junto a la dirección de correo electrónico, ni para mí como administrador ni al suplantar al usuario (lo cual hice varias veces antes de desactivar la configuración para simular el inicio/cierre de sesión que se sugirió anteriormente). Lo único que pude hacer fue mostrar la dirección.

Volví a activar auth_overrides_email y cambié la dirección dos veces más en WordPress (a algo más y de regreso a lo que debería ser), sin ningún cambio.

¿Sugerencias?

Tengo el mismo problema. ¿Hay alguna forma de cambiar el correo electrónico del usuario en la base de datos de Discourse? ¿Cómo lo hago desde la línea de comandos?

1 me gusta

Normalmente tengo que habilitar emails_editable, luego deshabilitar auth_overrides_email, luego cambiar el correo electrónico.

1 me gusta

Si los obligas a cerrar sesión para que tengan que iniciarla de nuevo, ¿se pasa la nueva dirección de correo electrónico a Discourse?

1 me gusta