ユーザー名を古いユーザー名に戻すのに問題があります(phpBBからインポートし、一部のユーザー名を変更する必要がありました。例:MöpをMoepに変更)。ユーザー名を変更しようとすると500エラーが発生し、リロードしてもウムラウトのない名前のままです。何か考えはありますか?Unicode設定は有効になっており、ウムラウトは許可されており、「外部システムアバターを有効にする」も有効になっています。
ログを確認して、何があるか確認する必要があります。/logs にあるか、/var/discourse/shared/standalone/log/rails/production.log を確認する必要があるかもしれません(logs ではなく log だと思います)。
ありがとうございます。ログファイルがどこにあるのか、あるのかさえ知りませんでした。これでわかりました。 ![]()
以下が見つかりました。
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'
もっとありますが、これで十分だと思いました。もしそうでなければ、もっと提供できます。
ちなみに、複数のユーザー名を試しましたが、同様の問題が発生しました。
@pfaffman 500エラーが発生する原因がログから確認できますか? ![]()
ユーザー名に使用された文字が気に入らなかったようです。理由はわかりません。
「moep」から「Möp」へのユーザー名の変更をテストしたところ、うまくいきました。
- どのバージョンの Discourse を使用していますか?
- これは標準インストールですか?
- Discourse の前にリバースプロキシがありますか?
- どのブラウザを使用していますか?
allowed_unicode_username_characters設定の値は何ですか?- レールコンソールでの名前変更は機能しますか?
./launcher enter app rails cuser = User.find_by_username("moep") new_username = "Möp" UsernameChanger.change(user, new_username, Discourse.system_user)
最新版です。現時点では 2.9.0.beta12 であるはずです。
はい。コンテナ名を変更しただけです。複数のDiscourseインスタンスを実行する予定なので。しかし、現時点では1つしか実行されていません。
Apache 2.4
Chrome、Brave。
[äöüßÄÖÜẞ]
これも機能しません。
=> "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 `+'
ここでは、「Waegi」から「Wägi」に変更しようとしました。
気づいたこと:コンテナの新しいテンプレートバージョンを使用しています。これには次の情報が含まれています。
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
DISCOURSE_DEFAULT_LOCALE: de
古いテンプレート(2019年頃)には次しかありませんでした。
env:
LANG: en_US.UTF-8
DISCOURSE_DEFAULT_LOCALE: de
これは問題に関係している可能性がありますか?そして、これらはドイツ語を主要言語とするDiscourseインストールの正しい設定ですか?
ああ、そして今、エラーが discourse-migratepassword によってスローされていることに気づきました。これが、phpBBからDiscourseにすべてインポートする前にユーザーの名前を変更した理由です。
discourse-migratepassword を無効にし、ユーザーの名前を変更してから再度有効にすることは有益でしょうか?phpBBからのインポート後に discourse-migratepassword がアクティブである必要があるのは、他に何が処理されますか?
discourse-migratepassword プラグインは Unicode ユーザー名と互換性がないようです。
cc @michaeld
はい、プラグインを無効にすると、この問題は解決するはずです。
インポート中には役に立ちませんが、インポート後には、ユーザーが古いパスワードでログインできるようになるため、役に立ちます。
わかりました、ありがとうございます。では、無効にして、ユーザー名を変更してから、すぐに再度有効にするということですね。重ねて感謝いたします!![]()
無効化してからユーザー名を変更することでうまくいきました。改めて感謝します。![]()
疑問なのですが、ウムラウト付きのユーザーは、discourse-migratepassword にこの Unicode 問題があるように見えるため、古い phhBB パスワードでログインできるようになりましたか?
初めてログインした際に、パスワードはDiscourseのパスワードとして保存されるため、もう必要ないと思います。インポートされたパスワードでログインする人は、すでにログインしたということになります。
この問題を再現できません。Unicodeと許可された文字の設定は同じで、同じユーザー名でユーザーを作成し、Möpという名前に変更しました。この問題が発生するには、私が知らない別の要因があるはずですか?
奇妙です。試したすべてのユーザー名でこの問題が発生しました。Unicode文字としては、ドイツ語のウムラウト(äöü)のみでした。別の例は、「Waegi」から「Wägi」に戻すことでした。
この問題は、phpBB3からDiscourseへのインポートスクリプトで最初に発生しました。そのため、phpBBですべてのウムラウトユーザーの名前を変更してから、インポートスクリプトを再開しました。もちろん、Discourseで元のユーザー名を付けたユーザーを再び取得したいと考えていました。
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.