Slug della categoria contenente caratteri Unicode provoca un loop di reindirizzamento

Ho abilitato alcuni caratteri Unicode nei nomi utente e tutto funziona come previsto.

Quando ho provato a utilizzare caratteri Unicode in uno slug di categoria, è stato convertito in codifica percentuale e ho potuto salvare le modifiche, ma non sono più riuscito ad accedere all’elenco dei topic della categoria perché ricevevo ERR_TOO_MANY_REDIRECTS.

Sembra di averlo risolto utilizzando la console di Rails:

Category.find(id).update(slug: ‘slug-without-unicode’)

Questo non è un blocco totale, ma può causare problemi, quindi suggerirei che dovrebbe essere implementato completamente o protetto contro tali casi.

3 Mi Piace

In passato è stato svolto del lavoro su questo argomento, ma non credo che il problema che hai riscontrato sia stato risolto. Credo che quanto accaduto sia dovuto al fatto che hai impostato il metodo di generazione degli slug su ‘ascii’ e hai inserito direttamente uno slug di categoria contenente caratteri non ascii. Posso riprodurre questo problema sul mio sito impostando il metodo di generazione degli slug su ‘ascii’ e inserendo il seguente testo (yetersizliği) direttamente nel campo Slug della Categoria:

Dopo aver salvato la categoria:

Il tentativo di caricare l’elenco di quella categoria fallisce.

Se non inserisco nulla nel campo Slug della Categoria, Discourse crea lo slug correttamente quando il metodo di generazione degli slug è impostato su ‘ascii’.

Con il metodo di generazione degli slug impostato su ‘encoded’, Discourse gestisce correttamente la creazione dello slug sia quando lascio vuoto l’input dello Slug della Categoria sia quando inserisco direttamente lo slug non ascii nell’input.

Sembra quindi che il problema consista nel fatto che, quando il metodo di generazione degli slug è impostato su ‘ascii’, è ancora possibile inserire slug non ascii nel campo Slug della Categoria. Questo causa un problema di reindirizzamento che può essere risolto solo dalla console di Rails.

6 Mi Piace

Quindi ciò di cui abbiamo bisogno è una validazione del modello al salvataggio, giusto?

Posso occuparmene.

5 Mi Piace

È esattamente quello che ho fatto: stavo modificando una categoria già creata, sia il suo nome che lo slug. Non conoscevo l’impostazione metodo di generazione dello slug e, anche se in seguito ho scoperto che era impostata su ascii, lo slug è stato comunque codificato.

Questo tipo di coercizione potrebbe avere senso, ma solo se lo slug codificato può essere riconosciuto in seguito, ignorando l’impostazione in modo simile.

1 Mi Piace

Questo dovrebbe risolvere il problema

10 Mi Piace

3 post sono stati spostati in un nuovo argomento: Il nome utente Unicode causa un errore nel caricamento della pagina del profilo

La PR sopra è stata unita :tada:

2 Mi Piace