Um de nossos usuários possui duas contas no Discourse: uma que não é mais utilizada e uma nova, na qual ele não consegue fazer login. O motivo parece ser que a nova conta dele em nosso provedor CAS SSO está configurada com o mesmo endereço de e-mail da conta antiga dele no fórum.
Fiz testes com minha própria conta de teste, tentando desativá-la e excluindo o registro do SSO. No entanto, isso parece impedir novos logins nessa conta, pois o registro existente não corresponde mais ao payload do SSO, e agora o endereço de e-mail é considerado conflitante.
Também experimentei tentar alterar o endereço de e-mail na conta não utilizada do usuário no Discourse, para que ele pudesse fazer login com esse e-mail na nova conta. Porém, é necessária uma confirmação por e-mail. Configurei um alias de e-mail em nosso servidor SMTP para poder interceptar um endereço arbitrário. No entanto, ao seguir o link, preciso fazer login como ele via SSO. O problema é que teria que reativar a conta do usuário, definir uma nova senha, vincular a conta ao nosso banco de dados de membros e criar uma associação falsa em nosso provedor SSO. Isso certamente é possível, mas sinto que estou me envolvendo em uma teia emaranhada tentando corrigir a conta desse usuário.
Acessar o banco de dados e fazer a alteração com algumas consultas SQL é algo que já fiz no passado, mas isso é arriscado, e eu preferiria evitar essa abordagem, se possível.
Se não quebrar o Discourse, adoraria ter uma funcionalidade que me permitisse excluir um endereço de e-mail em uma conta desativada, em vez de apenas definir o e-mail como não confirmado.
Se houver outras formas de lidar com esse problema, por favor, me avise. Obrigado!
Acho que você está usando a implementação do SSO do Discourse e definindo o parâmetro SSO require_activation como true no payload do SSO. Se for esse o caso, consulte este tópico para obter detalhes sobre como corrigir o problema: Debug and fixing common DiscourseConnect issues. É mais seguro executar os comandos do console do Rails fornecidos nesse tópico do que atualizar diretamente seu banco de dados com consultas SQL.
Mesclar as duas contas, conforme mencionado na postagem acima, provavelmente é uma boa abordagem, mas talvez seja necessário fazer alguns ajustes no registro do SSO após fazê-lo.
Também há isso que acabei de encontrar na busca merge user accounts. Isso ainda está disponível clicando no usuário na lista de usuários ativos (Painel de Administração) e rolando até o final para ver os 3 botões mostrados abaixo.
No início de 2018, adicionamos suporte para mesclar duas contas de usuário em uma. Para fazer isso, era necessário acesso SSH ao servidor, pois o suporte a mesclagem foi adicionado como uma tarefa rake.
Agora, qualquer administrador pode mesclar usuários! Visite a página de administração de usuários e selecione “Transferir e Excluir” no final da página.
Digite o nome de usuário para o qual a conta deve ser mesclada e clique em “Transferir e Excluir @username” para iniciar o processo de mesclagem.
Ok, então tudo deu certo. Quando eu fundi as contas, o Discourse manteve as credenciais SSO da conta de destino / que foi fundida / que não foi excluída, e a outra conta foi excluída.