Novo cadastro com email antigo incluindo + não funciona na API REST API

Parece que em uma atualização recente, o novo cadastro com o mesmo e-mail, incluindo um + para representar um novo e-mail, não é permitido. meu sistema é altamente dependente disso. como habilitá-lo novamente?

por exemplo, se eu já me cadastrei com email@gmail.com, não posso me cadastrar com email+1@gmail.com

a propósito, estou testando isso com a API REST

também, eu não tenho esta opção marcada:

Acredito que seja a configuração de administrador normalizar emails: :+1:

Editar: Eu não tinha visto essa edição antes de postar. :slight_smile:

1 curtida

sim, já está desativado para mim

1 curtida

Não consigo duplicar isso em try.discourse.org.

Você pode se inscrever na interface normal com este e-mail?

Além disso, você pode verificar novamente se o e-mail +1 já não foi usado para uma inscrição?

1 curtida

Sim, a interface do usuário normal está ok. A API REST não está ok.

Eu fiz exatamente o mesmo e não consegui duplicar o problema no código mais recente em produção - ele se comportou como esperado com a configuração normalizar emails desabilitada:

Você pode mostrar a saída disso do console do Rails:

[1] pry(main)> SiteSetting.normalize_emails

[2] pry(main)> User.find_by_email('SEUNOMEDEUSUARIO@gmail.com').username

[3] pry(main)> User.find_by_email('SEUNOMEDEUSUARIO+1@gmail.com').username

Além disso, em qual versão do Discourse você está?

Eu também poderia verificar novamente se você está acessando seu site de produção e não o de teste (ou vice-versa).

2 curtidas

Acabei de atualizar

Aqui está

O que isso se traduz?\n\n>

\n\n(e você pode copiar/colar aqui)\n\nEu deveria ter perguntado isso primeiro :man_facepalming:

“O e-mail principal não é permitido.”

esta é uma tradução para user.email.blocked

hmmm

parece que o e-mail normalizado está bloqueado. :thinking:

Quero dizer, se email@gmail.com estiver bloqueado, então email+1@gmail.com também estará bloqueado. é estranho para mim quando não tenho a opção de e-mail normalizado selecionada.

É por isso que eu deveria ter perguntado primeiro em vez de assumir que já estava “ocupado” :rofl:

Quais são suas configurações substituídas nas categorias de e-mail e usuário?

Você bloqueou esse endereço de e-mail ou, digamos, o domínio do Gmail?

1 curtida

Eu não entendi isso. Onde devo verificar?

Sim, posso ver que o e-mail normalizado está bloqueado.

Neste caso, quase certamente bloqueamos subendereços de endereços bloqueados, independentemente da configuração, como uma medida anti-abuso, já que a opção de normalização não é o padrão.

“Mostrar apenas substituídos” nas configurações. Mas agora suspeito que não precisamos nos preocupar com isso.

2 curtidas

De volta à minha mesa, dei uma olhada no código real que faz essa rejeição:

Logo no topo, estamos verificando o e-mail canônico contra a lista de bloqueio:

  def self.canonical(email)
    name, domain = email.split("@", 2)
    name = name.gsub(/\+.*/, "")
    name = name.gsub(".", "") if %w[gmail.com googlemail.com].include?(domain.downcase)
    "#{name}@#{domain}".downcase
  end

E mesmo que isso não o pegasse, ele seria pego pela verificação da distância de Levenshtein aqui:

[1] pry(main)> ScreenedEmail.levenshtein('fakezabanshenas@gmail.com', 'fakezabanshenas+1@gmail.com')
=> 2

já que o padrão para SiteSetting.levenshtein_distance_spammer_emails é 2.

2 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.