Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

プロフィールを更新時にエラーが出る #184

Open
isaozz opened this issue Mar 15, 2021 · 3 comments
Open

プロフィールを更新時にエラーが出る #184

isaozz opened this issue Mar 15, 2021 · 3 comments
Labels
bug Something isn't working

Comments

@isaozz
Copy link

isaozz commented Mar 15, 2021

対象ドメイン/ The domain

  • mlit.diycities.jp(kakogawa.diycities.jpでは発生していない)

起こっている問題 / The Problem

  • プロフィールを変更しようとすると「アカウントの更新に問題が発生しました。」といったエラーが出る
  • エラーが出るものの更新はできている模様

スクリーンショット / Screenshot

スクリーンショット 2021-03-15 20 46 07

期待する見せ方・挙動 / Expected Behavior

  • エラー表示が出ないようにしたい

起こっている問題の再現手段 / Steps to Reproduce

  1. 表示名を変更する
  2. アカウントIDを更新する
  3. メールアドレスを更新する
  • おそらく更新系はエラーが出る模様

動作環境・ブラウザ / Environment

  • macOS
  • Chrome
@isaozz isaozz added the bug Something isn't working label Mar 15, 2021
@isaozz
Copy link
Author

isaozz commented Mar 15, 2021

「エラーが出るものの更新はできている模様」と書きましたが、上記画面では更新したように見えましたが、実際には更新されてませんでした。

@takahashim
Copy link
Collaborator

以下、開発者向けの情報です:
「アカウントの更新に問題が発生しました。」は account.update.error のメッセージで、Decidim::UpdateAccount@form@userのvalidationに失敗したときに表示されるものです。

@userはユーザーのモデルですが、@formは更新用のformオブジェクトです(DecidimはRails標準のmodels/views/controllers/に加えて、app/formsでformオブジェクトを、app/commandsでcommandオブジェクトを作るしくみになっていて、それぞれRectifyのRectify::FormRectify::Commandを使っています)。

Decidim-cfjでの Decidim::UpdateAccountDecidim::UserExtension::UpdateCommandsOverrides で上書きしていて、元々のvalidationに加えて update_user_extension でのvalidationも追加されています。また、表示に使っているviewsについても show.html.erb を上書きしています。

そのため、validationに問題があったもののエラーが表示されないといった場合は、

  • Decidim::Userの更新で何か異常があった
  • Decidim::UserExntionの更新で何か異常があった
  • エラーの検出は正常に行われたが、表示するshow.html.erbかそのpartialsに問題があり、正しく表示されなかった

といった原因が考えられます。

@takahashim
Copy link
Collaborator

いわゆる半角文字の @ を使っているのがマズイのでは? という意見をいただいたので確認したところ、再現しました。
この「エラーなのにどの入力項目がエラーなのか適切なメッセージが出てこない」という現象は新規登録時でも再現しますし、https://demo.decidim.org/ でも再現するようなので、decidim自体のバグのようです…。

ちなみに本家のソースでこのvalidationを指定しているのは以下で、

validates :name, :nickname, format: { with: REGEXP_NAME }

https://github.com/decidim/decidim/blob/96c78cbe478dbb82a44fa9f96275c832e76a8485/decidim-core/app/models/decidim/user_base_entity.rb#L26

この正規表現を定義しているのは以下です。

REGEXP_NAME = /\A(?!.*[<>?%&\^*#@()\[\]=+:;"{}\\|])/.freeze

https://github.com/decidim/decidim/blob/96c78cbe478dbb82a44fa9f96275c832e76a8485/decidim-core/app/models/decidim/user_base_entity.rb#L21

これを見る限り、 <>?%&^*#@()\[]=+:;"{}| といった文字を使わせたくないようです。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants