If you’re using Wordpress as the authority for SSO what benefit is there to storing a second email in Discourse?
right-o. unless I store it in wordpress too for the same reasons. but I don’t know how to prevent this rake task from storing a secondary email when merging users.
If secondary emails are an issue can’t they just be removed?
Yes, that is one easy solution. Is there a rake task someone can share to list all the users with secondary emails, and to delete their secondary emails?
That said, I’d prefer to see discourse evolve to take advantage of a cool new feature like secondary emails rather than have to find ways to work around it. Other people are likely to bump up against this issue too at some point and wonder why the email address is not updating in discourse when updated in wordpress.
I don’t think there’s a rake task, but you could do it from the rails console. There should be some example queries about secondary emails for data explorer and some sample .update_all code for other rails examples. It’ll take more time than I can spare here today. If you’re stuck and want to pay, my contact info is in my profile.
See Additional email address per user account support - #34 by zogstrip
Here’s what you’re looking for: Additional email address per user account support - #34 by zogstrip
I’ve written a plugin which makes it easier to run this task:
Entonces, ¿si estás usando SSO en tu sitio, no es posible completar la tarea de merge de rake? La gente de Communiteq (anteriormente DiscourseHosting) informa que reciben este mensaje de error:
ActiveRecord::RecordNotSaved: No se pudo guardar el primary_email asociado nuevo
/var/www/discourse/app/services/user_merger.rb:359:in `delete_source_user'
Esto también causa problemas al intentar usar el plugin de @Dannii, ya que parece que su proceso intenta realizar este paso primero.
¿Alguna solución sugerida para fusionar usuarios en sitios con SSO? Lo que sucede es que una persona cambia de una organización a otra y, por lo tanto, obtiene una nueva cuenta a través del proceso de SSO (tienen un nuevo correo electrónico), pero como es la misma persona, nos gustaría poder fusionar las cuentas una vez que se hayan establecido en su nueva ubicación.
¿Deshabilitar SSO, fusionar y luego volver a habilitar SSO?
Gracias, lo intenté (desactivar/fusionar/activar) pero no tuve suerte. ¿Quizás se requiere un reinicio tras desactivarlo? Lo que asumo que significaría que ya no podría iniciar sesión, ya que también soy usuario de SSO.
No entiendo esto. Uso SSO con el plugin de WordPress wp_discourse y no tengo ningún problema al ejecutar esta tarea rake. Luego, elimino el usuario de WordPress que se fusionó.
Tengo un caso específico con el que necesito ayuda, uno similar al mencionado anteriormente.
Quiero fusionar dos cuentas de usuario, pero:
- La cuenta #1 tiene el nombre de usuario antiguo que el usuario desea conservar.
- La cuenta #2 tiene el nuevo correo electrónico del usuario. (El usuario no tiene acceso al correo electrónico de la cuenta #1, ya que se trata de una cuenta institucional.)
¿Puedo usar la interfaz de “Fusionar” para combinar las dos cuentas de modo que la cuenta resultante tenga el nombre de usuario antiguo pero el nuevo correo electrónico?
No creo que eso sea posible a través del Admin, pero se puede lograr con un paso adicional:
Fusionar a través del Admin
Cambiar el correo electrónico de ese usuario mediante la consola de rails:
cd /var/discourse
./launcher enter app
rails c
UserEmail.find_by(email: "old@example.com").update(email: "new@example.com")
Durante la fusión, el nuevo correo electrónico se agregó como correo secundario. No estaba muy seguro de cómo esto podría interactuar con mi solución SSO personalizada. Así que primero eliminé el correo secundario (siguiendo estos pasos) y luego seguí tu sugerencia.
¡Gracias @omarfilip!
Me he encontrado con esta situación varias veces. Cuando se fusionan usuarios, la dirección de correo electrónico principal del usuario de origen se convierte en la dirección de correo electrónico secundaria del usuario de destino. Cuando se utiliza SSO y la configuración sso overrides email está habilitada, el usuario fusionado podría no poder iniciar sesión a menos que se elimine el correo electrónico secundario desde la consola de Rails.
Me pregunto si la tarea debería tener una opción para no establecer el correo electrónico secundario de destino a partir del correo electrónico principal de origen.
O bien, contar con un medio conveniente para intercambiarlos.
Estoy recibiendo este error, ¿alguna idea?
cd /var/discourse
./launcher enter app
¡Se ha quedado atascado aquí!
Es difícil de decir con el desenfoque, pero ¿puedes verificar que haya una comilla abierta ' antes del primer nombre de usuario? Parece que la consola espera más entrada (lo cual puede indicar una cadena abierta).
> /var/www/discourse# rake users:merge['anon94132497','PavelCherenkovv'] --trace
** Invoke users:merge (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute users:merge
rake aborted!
ArgumentError: ArgumentError
/var/www/discourse/app/services/post_owner_changer.rb:12:in `initialize'
/var/www/discourse/app/services/user_merger.rb:63:in `new'
/var/www/discourse/app/services/user_merger.rb:63:in `change_post_owner'
/var/www/discourse/app/services/user_merger.rb:51:in `block in move_posts'
/var/www/discourse/app/services/user_merger.rb:49:in `each'
/var/www/discourse/app/services/user_merger.rb:49:in `move_posts'
/var/www/discourse/app/services/user_merger.rb:13:in `merge!'
/var/www/discourse/lib/tasks/users.rake:50:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:279:in `block in execute'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:279:in `each'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:279:in `execute'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
/usr/local/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:199:in `invoke_with_call_chain'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:188:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:160:in `invoke_task'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:116:in `block (2 levels) in top_level'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:116:in `each'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:116:in `block in top_level'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:125:in `run_with_threads'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:110:in `top_level'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:83:in `block in run'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:186:in `standard_exception_handling'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:80:in `run'
bin/rake:13:in `<top (required)>'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:63:in `load'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:63:in `kernel_load'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:28:in `run'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli.rb:476:in `exec'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor.rb:399:in `dispatch'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli.rb:30:in `dispatch'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/base.rb:476:in `start'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli.rb:24:in `start'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/exe/bundle:46:in `block in <top (required)>'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/friendly_errors.rb:123:in `with_friendly_errors'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/exe/bundle:34:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => users:merge
¿Obtuve este error?
Hola.
He encontrado un error menor tras una fusión. La insignia de Bienvenida se muestra dos veces en el perfil del usuario, como si la hubiera obtenido por primera vez dos veces ![]()
