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

登録時の重複チェックが間違った結果を返すケースがある #10262

Closed
Ry0taK opened this issue Mar 7, 2023 · 3 comments · Fixed by #10267
Closed

登録時の重複チェックが間違った結果を返すケースがある #10262

Ry0taK opened this issue Mar 7, 2023 · 3 comments · Fixed by #10267
Labels
⚠️bug? This might be a bug

Comments

@Ry0taK
Copy link
Contributor

Ry0taK commented Mar 7, 2023

💡 Summary

os.api('username/available', {
username,
}).then(result => {
usernameState = result.available ? 'ok' : 'unavailable';
}).catch(() => {
usernameState = 'error';
});

ユーザー登録時のフォームにおいてユーザー名/メールアドレスが使用可能であるかどうかの確認が非同期で行われているため、以下のような状況で誤った結果が表示されます。 (adminという名前のユーザーが作成されている状態を仮定)

  1. ユーザーが登録フォームを開く
  2. ユーザー名フィールドに対してadminと高速に入力する
  3. それぞれaadadmadmiadminに対してユーザー名の存在確認が走る。
  4. adminの存在確認に対するレスポンスが帰ってくる。
  5. その他の存在しないユーザー名の存在確認に対するレスポンスが帰ってくる。
  6. adminと入力されているにも関わらず、内部的にはadm等の存在確認の結果を持つようになる。
    (fix: 登録時のフォームにおいて送信できる条件を修正 #10238 で追加したテストにより発覚)

🥰 Expected Behavior

入力されたユーザー名/メールアドレスと使用可否の表示が一致している

🤬 Actual Behavior

入力されたユーザー名/メールアドレスと使用可否の表示が一致していない

📝 Steps to Reproduce

  1. adminという名前のユーザーを作成する
  2. ユーザー登録ページを開く
  3. ユーザー名フィールドに対して、高速でadminと入力する
  4. 既に使用されているにも関わらず、利用可能となることを確認する (確認できなかった場合は再度手順3からやり直してください)
@Ry0taK
Copy link
Contributor Author

Ry0taK commented Mar 7, 2023

どうやって治すのかが悩ましいですね... (フォーカスが外れたタイミングで確認を走らせるようにすれば一旦は解決する?)

@saschanaz
Copy link
Member

ローカルではuncaught errorも発生していたので #10265 を提出しました。

@saschanaz
Copy link
Member

どうやって治すのかが悩ましいですね

api()をabortできるようにして、AbortControllerを使って前回のリクエストをabortするようにしたらどうでしょう。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
⚠️bug? This might be a bug
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants