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:
Então, se você estiver usando SSO no seu site, não é possível concluir a tarefa rake merge? As pessoas gentis da Communiteq (antiga DiscourseHosting) relatam receber a seguinte mensagem de erro:
ActiveRecord::RecordNotSaved: Failed to save the new associated primary_email
/var/www/discourse/app/services/user_merger.rb:359:in `delete_source_user'
Isso também causa problemas ao tentar usar o plugin de @Dannii, pois parece que o processo dele tenta executar essa etapa primeiro.
Alguma sugestão de solução alternativa para mesclar usuários em sites com SSO? O que acontece conosco é que uma pessoa muda de uma organização para outra e, portanto, recebe uma nova conta por meio do processo de SSO (ela tem um novo e-mail), mas como é a mesma pessoa, gostaríamos de poder mesclar as contas assim que ela se estabelecer em seu novo local.
Desativar o SSO, mesclar e depois reativar o SSO?
Obrigado, tentei (desativar/mesclar/reativar), mas não tive sorte. Talvez seja necessário reiniciar após desativar? O que, suponho, significaria que eu não conseguiria mais fazer login, já que também sou um usuário SSO.
Não entendi isso. Uso SSO com o plugin do WordPress wp_discourse e não tenho problemas ao executar essa tarefa rake. Em seguida, excluo o usuário do WordPress que foi mesclado.
Tenho um caso específico para o qual preciso de ajuda, um caso semelhante mencionado acima.
Quero mesclar duas contas de usuário, mas:
- A Conta #1 tem o nome de usuário antigo que o usuário gostaria de manter.
- A Conta #2 tem o novo e-mail do usuário. (O usuário não tem acesso ao e-mail da Conta #1, pois se trata de uma conta institucional.)
Posso usar a interface “Mesclar” para combinar as duas contas, de modo que a conta resultante tenha o nome de usuário antigo, mas o novo e-mail?
Acho que isso não é possível fazer diretamente pelo Admin, mas pode ser realizado com um passo adicional:
Mesclar via Admin
Alterar o e-mail desse usuário pelo console do Rails:
cd /var/discourse
./launcher enter app
rails c
UserEmail.find_by(email: "old@example.com").update(email: "new@example.com")
Durante a mesclagem, o novo e-mail foi adicionado como E-mail Secundário. Não tinha certeza de como isso poderia interagir com minha solução SSO personalizada. Então, removi primeiro o e-mail secundário (seguindo estes passos) e, em seguida, segui sua sugestão.
Obrigado @omarfilip!
Já me deparei com essa situação várias vezes. Quando os usuários são mesclados, o endereço de e-mail principal do usuário de origem torna-se o e-mail secundário do usuário de destino. Quando o SSO está sendo usado e a configuração sso overrides email está ativada, o usuário mesclado pode não conseguir fazer login, a menos que o e-mail secundário seja excluído pelo console do Rails.
Estou me perguntando se a tarefa deveria ter uma opção para não definir o e-mail secundário de destino a partir do e-mail principal de origem.
Ou ter um meio conveniente para trocá-los.
É difícil dizer com o desfoque, mas você pode verificar se há uma aspa aberta ' antes do primeiro nome de usuário? Parece que o console está aguardando mais entrada (o que pode indicar uma string aberta).
> /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
Por que recebi esse erro?
Oi.
Encontrei um bug menor após um merge. Um selo de Boas-vindas é exibido duas vezes no perfil do usuário, como se ele o tivesse recebido duas vezes pela primeira vez ![]()
