Problema ao renomear usuário com caracteres unicode

Estou tendo problemas para renomear um usuário de volta para o nome de usuário antigo (importe do phpBB e tive que renomear alguns usuários, por exemplo, Möp para Moep). Recebo um erro 500 ao tentar renomear o usuário, e ao recarregar o usuário ainda tem o nome sem o umlaut. Alguma ideia? As configurações de unicode estão ativadas, os umlauts são permitidos e também external system avatars enabled está ativado.

Você precisará olhar os logs e ver o que há neles. Você pode vê-los em /logs ou pode precisar olhar em /var/discourse/shared/standalone/log/rails/production.log (acho que é log e não logs).

2 curtidas

Ah, obrigado. Eu não tinha ideia se e onde havia arquivos de log. Agora eu sei. :slight_smile:

Encontrei isto:

Started PUT "/users/moep/preferences/username" for xxxx:c5:9f0d:4c00:xxxx:e179:xxxx:xxxx at 2022-11-23 15:53:52 +0000
Processing by UsersController#username as */*
  Parameters: {"new_username"=>"Möp", "username"=>"moep"}
Completed 500 Internal Server Error in 338ms (ActiveRecord: 0.0ms | Allocations: 137204)
Encoding::CompatibilityError (incompatible character encodings: ASCII-8BIT and UTF-8)
app/models/user.rb:1806:in `username_validator'
app/services/username_changer.rb:35:in `change'
app/services/username_changer.rb:13:in `change'
app/controllers/users_controller.rb:202:in `username'

Há mais, mas pensei que poderia ser o suficiente. Se não for, posso fornecer mais.

A propósito, tentei mais de um nome de usuário e tive problemas semelhantes.

1 curtida

@pfaffman você consegue ver a causa nos meus logs por que recebo o erro 500? :slight_smile:

Não gostou dos caracteres no nome de usuário. Não sei por quê.

Eu acabei de testar a renomeação de um usuário de “moep” para “Möp” e funcionou.

  • Qual versão do Discourse você está usando?
  • Esta é uma instalação padrão?
  • Existe algum tipo de proxy reverso na frente do seu Discourse?
  • Qual navegador você está usando?
  • Qual é o valor da configuração allowed_unicode_username_characters?
  • A renomeação no console do Rails funciona?
    ./launcher enter app
    rails c
    
    user = User.find_by_username("moep")
    new_username = "Möp"
    UsernameChanger.change(user, new_username, Discourse.system_user)
    
2 curtidas

A mais recente. Que deve ser a 2.9.0.beta12 no momento.

Sim. Apenas renomeei o nome do contêiner, pois planejo executar mais de uma instância do Discourse. Mas, no momento, apenas uma está em execução.

Apache 2.4

Chrome, Brave.

[äöüßÄÖÜẞ]

Também não funciona:

=> "Wägi"
[6] pry(main)> UsernameChanger.change(user, new_username, Discourse.system_user)
Encoding::CompatibilityError: incompatible character encodings: ASCII-8BIT and UTF-8
from /var/www/discourse/plugins/discourse-migratepassword/plugin.rb:78:in `+'

Aqui eu tentei “Waegi” para “Wägi”.

O que notei: uso uma nova versão de template para o contêiner que contém as seguintes informações:

env:
  LC_ALL: en_US.UTF-8
  LANG: en_US.UTF-8
  LANGUAGE: en_US.UTF-8
  DISCOURSE_DEFAULT_LOCALE: de

No template antigo (2019 ou por volta disso) havia apenas:

env:
  LANG: en_US.UTF-8
  DISCOURSE_DEFAULT_LOCALE: de

Isso talvez tenha a ver com o problema? E estas são as configurações corretas para uma instalação do Discourse com o idioma principal alemão?

Ah, e notei agora que o erro é lançado pelo discourse-migratepassword - que foi o motivo pelo qual renomeei os usuários antes de importar tudo do phpBB para o Discourse.

Seria útil desativar o discourse-migratepassword, renomear os usuários e depois ativá-lo novamente? O que mais é tratado pelo discourse-migratepassword que ele precisa estar ativo após a importação do phpBB?

2 curtidas

Parece que o plugin discourse-migratepassword não é compatível com nomes de usuário Unicode.
cc @michaeld

Sim, desabilitar o plugin deve resolver esse problema para você.

Ele não é útil durante a importação, apenas após a importação, pois permite que seus usuários façam login com suas senhas antigas.

2 curtidas

Ok, obrigado. Então eu desabilitaria, renomearia os usuários e depois o habilitaria novamente, certo. Obrigado novamente! :slight_smile:

1 curtida

Desativar e depois renomear os usuários funcionou. Obrigado novamente. :slight_smile:

Eu estava me perguntando: os usuários com umlauts agora podem fazer login com suas senhas antigas do phhBB, já que o discourse-migratepassword parece ter esse problema de unicode?

1 curtida

Tenho quase certeza de que, na primeira vez que eles fizerem login, a senha deles será salva como uma senha do Discourse, então você não precisará mais dela. Parece que qualquer pessoa que for fazer login com a senha importada já o fez.

1 curtida

Não consigo reproduzir este problema. Mesmas configurações para caracteres Unicode e permitidos, eu até criei um usuário com o mesmo nome de usuário e o renomeei para Möp. Deveria haver algo mais - que eu não sei - para que este problema surja?

1 curtida

Estranho. Tive este problema com todos os nomes de usuário que tentei. como caracteres unicode, eu só tinha umlauts alemães como äöü. Outro exemplo foi: Waegi de volta para Wägi.

Este problema surgiu pela primeira vez no script de importação do phpBB3 para o Discourse, que foi o motivo pelo qual renomeei todos os usuários com umlauts no phpBB e, em seguida, reiniciei o script de importação. Claro que eu queria os usuários no Discourse novamente com seus nomes de usuário originais.

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