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).
Ah, obrigado. Eu não tinha ideia se e onde havia arquivos de log. Agora eu sei. ![]()
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.
@pfaffman você consegue ver a causa nos meus logs por que recebo o erro 500? ![]()
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 cuser = User.find_by_username("moep") new_username = "Möp" UsernameChanger.change(user, new_username, Discourse.system_user)
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?
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.
Ok, obrigado. Então eu desabilitaria, renomearia os usuários e depois o habilitaria novamente, certo. Obrigado novamente! ![]()
Desativar e depois renomear os usuários funcionou. Obrigado novamente. ![]()
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?
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.
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?
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.