Falha na segunda confirmação ao alterar endereço de e-mail devido à personalização do e-mail

Olá! Procurei uma resposta para esse problema, mas não encontrei nada. Sou administrador do nosso fórum e geralmente faço login usando autenticação do Google. Queria alterar meu endereço de e-mail e iniciei o processo na página de preferências. O primeiro e-mail de confirmação chegou ao meu endereço atual e eu confirmei — tudo certo até aqui. Foi informado que um e-mail de confirmação seria enviado para o novo endereço. O segundo e-mail de confirmação chegou ao novo endereço, mas ao clicar no link de confirmação, apareceu o seguinte no navegador:

Oops! Essa página não existe ou é privada.

O processo resulta no meu e-mail antigo ainda estando ativo na minha conta.

Pode ser que eu esteja passando por uma experiência semelhante. Sou administrador do nosso fórum. Alterei meu endereço de e-mail e recebi o e-mail de verificação — tudo certo até aqui. Ao voltar ao fórum, fui logado automaticamente. Verifiquei minhas configurações: os e-mails do fórum estão configurados para meu novo endereço, no entanto… o e-mail de login permanece o mesmo do registro original. Fiz algumas verificações e descobri que preciso acessar minha conta de administrador com o mesmo endereço usado no momento do registro inicial. Se fizer logout completo e tentar logar novamente com meu novo e-mail, recebo a mesma mensagem de erro que você.

Verifique suas preferências para ver se o endereço de e-mail para receber mensagens do fórum está configurado para seu novo endereço. Provavelmente está. Mas aposto que o endereço usado para login ainda é o que você utilizou ao configurar sua conta de administrador pela primeira vez.

Talvez @dax ou outro membro da equipe possa explicar se esse é o comportamento esperado ou se o e-mail de login do administrador precisa ser redefinido de outra forma.

Podemos reproduzir isso na segunda-feira, @tshenry? Seria específico para administradores.

Testei o processo de alteração de e-mail de administrador na versão mais recente do Discourse que passou nos testes. Eu tinha a autenticação do Google configurada, além das credenciais de login normais. Testei usando dois navegadores diferentes (Safari e Chrome) e tudo parece estar funcionando como eu esperava.

Também tentei em um site do Discourse baseado em um commit com cerca de 11 dias. Essa conta de administrador tinha o login padrão configurado com 2FA ativado. O processo mudou um pouco desde esse commit, mas ainda funciona bem.

Se alguém continuar encontrando esse problema quando o site do Discourse estiver totalmente atualizado, por favor, poste como reproduzir passo a passo, junto com detalhes relevantes do navegador (versão, sistema operacional, navegador padrão versus plugins instalados). Se você está hospedado por nós e isso está ocorrendo ativamente, entre em contato pelo canal de suporte habitual e trabalharemos diretamente com você para entender o que está acontecendo.

Aqui está o que fiz, várias vezes:

  • No meu Painel, alterei meu endereço de e-mail para um novo.
  • Recebi o e-mail do software do fórum e cliquei no link para verificar.
  • Ao verificar o Painel, meu endereço de e-mail foi alterado para refletir o novo. Isso aparece em Faturamento.
  • Meu novo endereço também recebe as notificações de novos tópicos/postagens.

Ao verificar minhas Preferências do Usuário/Conta (para fazer login), ainda aparece o endereço de e-mail original usado quando iniciei o fórum pela primeira vez.

  • Editei o endereço de e-mail ali para o meu novo endereço.
  • Cliquei em Salvar Alterações e saí.
  • Mais tarde, verifiquei novamente e o endereço de e-mail original aparecia de novo.

Sempre que faço login, a mensagem de login diz para usar o endereço usado para configurar o Discourse. Por isso, não me incomodei em reportar o problema, achando que era por segurança. Além disso, meu novo endereço de e-mail recebe o que deveria — notificações, recibos de faturamento, etc.
(De qualquer forma, ainda tenho acesso à minha caixa de entrada antiga.)

Desculpe, não estávamos falando de e-mails hospedados. Estávamos falando de usuários (especificamente administradores) iniciando uma alteração de e-mail em suas contas por meio da mesma página de edição de conta que todos os usuários veem ao alterar seu e-mail.

É aí que reside o meu problema. Sou um administrador. Não consigo alterá-la nessa página. Vou às preferências da minha conta de usuário, altero o endereço de e-mail, clique em salvar, recebo a notificação de que um e-mail de verificação foi enviado e saio. Quando clico no link e sou levado à tela de login, insiro meu novo endereço de e-mail e recebo uma notificação para fazer login usando o endereço usado no primeiro cadastro. A alteração de e-mail nunca foi salva. Voltou ao endereço original com o qual me cadastrei. :neutral_face:

Por outro lado, se eu usar um endereço de e-mail de um domínio diferente que possuo — em vez de um com o mesmo domínio do fórum — isso funcionaria? De qualquer forma, não é um problema para mim. Posso deixar como está.

Removi minha autenticação do Google caso isso fosse parte do problema. Para reproduzir o problema, gravei este screencast de 94 segundos com meus passos:

https://drive.google.com/file/d/1eOE2Tptvyk2daWkvDYEFXY3qNKgnImPA/view

@David_Baker1, obrigado por dedicar seu tempo para montar o vídeo. Assisti e segui cuidadosamente as instruções no Chrome. Tudo funcionou perfeitamente, então deve haver algo específico no seu ambiente. Algumas perguntas para considerar:


Se isso algum dia se tornar um problema, fique à vontade para nos enviar um e-mail e veremos se podemos resolver diretamente para você. Esta é a primeira vez que ouço sobre o problema que você descreveu.

Acabei de executar a mesma rotina no Firefox (70.0.1 64 bits) e obtive o mesmo resultado. Respostas:

  • Não tenho nenhum erro registrado desde 4 de novembro
  • Tentei novamente no Firefox
  • Tenho os seguintes plugins: discourse-assign; discourse-data-explorer; discourse-plugin-linkedin-auth; discourse-solved; docker_manager
  • Minha instância foi configurada e gerenciada por um grande contribuidor deste site meta e não tive nenhum problema estranho até agora

Hmm, que estranho! Parece que sua configuração é bastante padrão. Vou dar mais uma olhada com algumas ideias novas quando tiver uma oportunidade na próxima semana. Além disso, estou sem ideias, já que não consigo reproduzir o problema.

Olá novamente — após investigar mais, encontrei algo que pode indicar a causa. Nas minhas configurações/preferências da conta, meu e-mail está listado como o endereço que desejo alterar. No entanto, se clicar no botão Admin no canto superior direito dessa visualização e rolar até o final, em Configurações SSO, aparece o endereço de e-mail que quero alterar para. Era o endereço que usei quando configuramos o Discourse pela primeira vez. Entrementes, consegui um novo emprego e alterei o e-mail da minha conta. Agora, porém, gostaria de alterá-lo de volta.

Parece que, atualmente, dois e-mails diferentes estão associados à minha conta.

Isso pode indicar a possível causa desse problema?

As coisas do SSO não deveriam importar, já que o SSO está desativado. Mas isso poderia ser.

O endereço de e-mail para o qual você está tentando atualizar pode já ser o e-mail “secundário” da sua conta. Se for esse o caso, você precisará excluir o e-mail secundário antes de poder atualizar seu e-mail principal.

Como administrador do site, você pode confirmar se o e-mail é o seu e-mail secundário acessando sua página de administração e clicando no botão Mostrar na linha de E-mails Secundários:

As instruções para excluir um e-mail secundário a partir do console do Rails estão neste post: https://meta.discourse.org/t/rake-task-for-merging-users/89086/33

Essa é exatamente a minha situação. No Admin, meu e-mail mostra o que eu queria mudar, mas nas minhas preferências de usuário ele está travado no endereço original que usei para fazer o primeiro login. Eu também tenho dois e-mails diferentes associados à minha conta… ou o usuário e o Admin são considerados duas contas diferentes?

Acabei de verificar novamente. Não há nenhuma conta de e-mail secundário aparecendo no Painel de Admin.

Apenas para garantir que não seja esse o problema, você é um administrador do site? Moderadores não verão os campos de e-mail a menos que a configuração “moderadores visualizam e-mails” esteja habilitada. Ela vem desabilitada por padrão.

Sim, sou o administrador.

Eu também sou administrador — se isso também foi dirigido a mim :slight_smile:

Se você tiver acesso ao console do Rails para seu site, poderá verificar se o endereço de e-mail que você está tentando atualizar já está em uso executando o seguinte comando com o e-mail desejado:

UserEmail.where(email: 'seuemail@exemplo.com')

Se o plugin Data Explorer estiver instalado em seu site, você pode verificar isso por meio de uma consulta do Data Explorer, sem precisar usar o console.

Se algum resultado for retornado, esse será o motivo do problema. No entanto, o fato de o endereço de e-mail que você está tentando atualizar já existir em um registro de Single Sign On não deve causar nenhum problema.

EDIT: Encontrei. user_notifications.confirm_new_email.text_body_template estava sobrescrevendo a URL.
Você pode ignorar o resto.

Olá, Simon. Obrigado pela sua ajuda.

Aqui está o problema:

Está enviando e-mails de “confirme seu novo endereço de e-mail” com links como https://forum.xx.org/users/authorize-email/c7ed779eb28c049ec4a5105dd9e07013 em vez de https://forum.xx.org/u/confirm-new-email/c15d4bc33211e586b70572195f7dac89.

Se eu reescrever o link para usar a URL correta e o token, funciona perfeitamente, mas, por algum motivo, está enviando o estilo antigo de link e não o novo! (Fiz isso duas vezes, uma vez depois de executar o grep e reinício descritos abaixo.)

Acabei de fazer um ./launcher rebuild e ainda está enviando links com o formato antigo. Como anunciado, apenas plugins oficiais e sólidos estão instalados.

E então entro no contêiner e, em /var/www/discourse, executo um grep -r authorize-email, que não encontra nenhum arquivo. Em seguida, reiniciei.

Estou bastante confuso, pelo menos pela segunda vez em 24 horas.