Olá a todos! Um dos meus usuários do fórum não conseguiu usar sua conta para fazer login no fórum em nosso site e recebeu este erro. Não há problema com outras contas de usuário, mas apenas com a dele. Pensei que talvez pudesse ser resolvido atualizando o fórum para a versão mais recente, mas o problema ainda persiste.
Vocês têm alguma ideia? Agradeço qualquer ajuda.
Há algo de especial na sua configuração de login, ou neste usuário em particular? Acho que já vi erros semelhantes relacionados a contas de administrador anteriormente, mas quanto mais informações você puder fornecer, melhor. ![]()
Você está vendo algum erro em seus /logs?
Obrigado pela sua resposta!
Você quer dizer os logs em /var/discourse/shared/standalone/log/rails?
Em qual log tal erro é registrado?
production.log ou production_errors.log
o segundo está vazio.
Eu quis dizer os logs em [SeuSite]/logs, ou possivelmente se algo aparece no console do navegador quando eles tentam fazer login? Pode haver algum detalhe extra lá que possa ajudar a reduzir o problema.
Eles são um usuário não-funcionário e você tem algum SSO habilitado?
Sim, acho que todos os usuários podem fazer login com o SSO, pois eles não precisam inserir conta e senha novamente para fazer login no fórum. Eles são transferidos diretamente do site para o fórum.
Este é um erro no console:
E este é um possível log de erro na web:
ActiveRecord::RecordInvalid (a validação falhou: o e-mail principal já foi adotado) app/models/discourse_connect.rb:270:in block in match_email_or_create_user' lib/distributed_mutex.rb:53:in block in synchronize’ lib/distributed
Eu acho que parece que este usuário em particular tem um e-mail diferente no Discourse do que no seu site principal. Você poderia verificar isso para confirmar?
Sim, acabei de verificar o e-mail mostrado no painel do usuário do Discourse e o e-mail em nosso site principal, eles são os mesmos.
Eu dei uma olhada e uma possível razão pode ser que o e-mail deles acidentalmente tenha entrado na sua lista de bloqueados. Você pode pesquisar e ver se é esse o caso na sua página /admin/logs/screened_emails. Se você encontrá-lo lá, desbloqueá-lo pode resolver.
(também vale a pena verificar o IP deles em /admin/logs/screened_ip_addresses também)
Se esse não for o caso, outra possibilidade é que eles tinham uma conta no fórum antes de você habilitar o SSO. Qual SSO você está usando?
Verifiquei /admin/logs/screened_ip_addresses e está vazio.
Desculpe, não entendi o que você quis dizer. (“Qual SSO você está usando?”) Existem muitos tipos de SSO?
Eu estava me perguntando se você usou o Discourse Connect ou outra coisa, e com o que você o conectou para fornecer sua autenticação de usuário (WordPress, por exemplo).
Já vimos esse erro antes, fiz uma busca em nosso sistema de chamados.
Isso acontece quando você tem
require activationdefinido comotrue- um usuário U1 no Discourse com um endereço de e-mail específico, possivelmente com ID externo A.
- um usuário U2 no lado do provedor DiscourseConnect com o mesmo endereço de e-mail e um ID externo diferente (B)
O usuário faz login, o Discourse verifica se existe um usuário com o ID externo B, ele não existe.
Normalmente, o Discourse fará uma correspondência por e-mail como próximo passo, mas como require activation está definido, o endereço de e-mail não é confiável e ele pula essa etapa e não associará ao usuário U1, pois permitiria o sequestro de conta.
Portanto, o Discourse decide criar um novo usuário. Isso falha porque o usuário U1 já existe com esse endereço de e-mail.
Seria bom se houvesse um erro melhor caso o e-mail exista, mas não seja confiável. Também não tenho certeza por que ele mostra um erro genérico do Rails.
Resoluções:
- se seus endereços de e-mail no lado do provedor DiscourseConnect forem verificados e puderem ser confiáveis, defina
require activationcomofalse.
ou - altere o ID externo do usuário U1 para B
ou - altere o endereço de e-mail do usuário U1 para outra coisa
Adicionando o texto “a alteração que você queria foi rejeitada” para que este tópico seja encontrado quando alguém pesquisar por este erro.
Sim, estamos usando o Discourse Connect e ele está conectado ao nosso site.
Muito obrigado pela sua resposta detalhada! Os endereços de e-mail em nosso site são verificados quando o usuário faz login. Portanto, tentarei corrigir o problema com o método 1 primeiro. Mas nas configurações de administrador, não encontrei onde está “exigir ativação por e-mail”.
É um parâmetro retornado durante o processo de SSO, veja Disable email verification for SSO - #4 by simon
Para sites que usam o plugin WP Discourse para autenticação, os administradores do site também podem marcar endereços de e-mail para usuários individuais como verificados na página de preferências do usuário:
Isso é mais seguro e fácil do que desativar a verificação de e-mail para todos os usuários no site.
Eu me pergunto quando isso começou a acontecer. Tenho certeza de que o cenário que você está descrevendo costumava gerar esta mensagem de erro: “Há um problema com sua conta. Entre em contato com o administrador do site.”
Aqui está outro caso de um validador Rails falhando que retorna este erro, e tem 6,5 anos. No contexto do DiscourseConnect, isso é algo que vimos apenas nos últimos meses.
Estamos usando a imagem do discourse, então devemos apenas adicionar require_activation=true em env:?
Obrigado pela ajuda, mas não usamos WP. Estamos usando a imagem docker do discourse. A maneira correta de configurá-lo é adicionando require_activation=true em env: do arquivo app.yml?
Não, veja Login error - #17 by RGJ como postado anteriormente, você precisa passar este parâmetro por usuário. Isso requer alterá-lo em seu código do lado do servidor se for uma implementação personalizada.


