Nuova registrazione con vecchia email che include + non funziona in rest API

Sembra che in un recente aggiornamento, la nuova registrazione con la stessa email che include un + per rappresentare una nuova email non sia consentita. il mio sistema ne dipende fortemente. come posso abilitarla di nuovo?

ad esempio, se mi sono già registrato con email@gmail.com, non posso registrarmi con email+1@gmail.com

a proposito, sto testando questo con l’API REST

inoltre, non ho questa opzione selezionata:

Credo che sia l’impostazione dell’amministratore normalizza email: :+1:

Modifica: Non avevo visto quella modifica prima di pubblicare. :slight_smile:

1 Mi Piace

sì, è già disabilitato per me

1 Mi Piace

Non riesco a duplicarlo su try.discourse.org.

Puoi registrarti dall’interfaccia utente normale con questa email?

Inoltre, puoi ricontrollare che l’email +1 non sia già stata utilizzata per una registrazione?

1 Mi Piace

Sì, l’interfaccia utente normale va bene. La REST API non va bene.

Ho fatto esattamente la stessa cosa e non sono riuscito a duplicare il problema sul codice più recente in esecuzione live: si è comportato come previsto con l’impostazione normalize emails disabilitata:

Puoi mostrare l’output di questi dalla console rails:

[1] pry(main)> SiteSetting.normalize_emails

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

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

Inoltre, su quale versione di Discourse ti trovi?

Potrei anche ricontrollare che tu stia accedendo al tuo sito di produzione e non a quello di test (o viceversa).

2 Mi Piace

Ho appena aggiornato

ecco qui

Cosa significano queste traduzioni?

(e puoi copiarle/incollarla qui)

Avrei dovuto chiederlo prima :man_facepalming:

“Primary email non autorizzato.”
it is a translation for user.email.blocked

hmmm

sembra che l’email normalizzata sia bloccata. :thinking:

Voglio dire, se email@gmail.com è bloccata, allora anche email+1@gmail.com è bloccata. mi sembra strano quando non ho selezionato l’opzione email normalizzata.

Ecco perché avrei dovuto chiedere prima invece di presumere che fosse “già occupato” :rofl:

Quali sono le tue impostazioni sovrascritte nelle categorie email e utente?

Hai bloccato quell’indirizzo email o, diciamo, il dominio Gmail?

1 Mi Piace

Non ho capito. Dove dovrei controllare?

sì, posso vedere che l’email normalizzata è bloccata.

In questo caso, blocchiamo quasi certamente le sotto-indirizzi degli indirizzi bloccati indipendentemente dall’impostazione, come misura anti-griefing, poiché l’opzione di normalizzazione non è quella predefinita.

“Mostra solo sovrascritti” nelle impostazioni. Ma ora sospetto che non dobbiamo preoccuparcene.

2 Mi Piace

Tornato alla mia scrivania ho dato un’occhiata al codice effettivo che esegue questo rifiuto:

Proprio in cima stiamo controllando l’email canonica rispetto alla blocklist:

  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 anche se questo non l’avesse intercettato, sarebbe stato intercettato dal controllo della distanza di Levenshtein qui:

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

poiché l’impostazione predefinita per SiteSetting.levenshtein_distance_spammer_emails è 2.

2 Mi Piace

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