アカウント
未確認のアドレスが止めるのは消費であって、閲覧ではありません
メールアドレスの確認が済んでいない状態でも、アプリの中にいることができます。確認が制御しているのは移動ではありません。消費をともなう操作はサーバー側で拒否され、画面は警告バナーと、コードをもう一度送るための道筋で応えます。そのボタンは、送信が起きた時点で自分をロックします。
未確認であることと、ログアウトしていることは同じではありません
アプリは未確認のアカウントを、ログアウトした場合にまとめるのではなく、独立したセッション状態として扱います。その解決はapps/jewelry-mobile/src/features/auth/auth-provider.tsxの1つの式で、emailVerified ? 'authenticated' : 'unverified'と書かれています。未確認のアカウントに、ようこそ画面ではなくアプリと専用の警告バナーが与えられるのは、そのためです。
その状態が何を制御しているのかは、正確に言う価値があります。誇張しやすいところだからです。決めるのは、どの画面が描かれるかです。何をしてよいかを決めているわけではありません。保護されたリクエストはすべて変わらずサーバーに送られ、答えはそこから返ってきます。
つまりバナーは、アプリが握っている錠ではありません。ほかの場所で下された判断の目に見える半分であり、アプリがそれを知らされた時点で示されます。バナー自体はアプリの各画面を包む画面コンテナが描いており、いま見ているものの上に現れるのはそのためです。
再送信ボタンと、かつて間違えていたこと
このボタンには記録された経緯があり、それを知ると、そうでなければ恣意的に見える挙動が説明できます。
- かつては、起きていない送信を報告していました。
- リクエストが黙って飛ばされている間、画面はコードを送ったと表示していました。その修正はapps/jewelry-mobile/src/features/auth/use-resend-cooldown.tsのコメントに記録されています。
- いまは送信のあとロックされ、カウントダウンを表示します。
- このロックは、古いメッセージが隠していたことの正直な形です。ボタンの状態が、もう一度送信できるかどうかと一致します。
- ロックは画面を離れても残ります。
- 別の画面に移って戻っても、ロックされていないボタンが出てくるわけではありません。真新しく見える画面は、真新しい許可ではありません。
- ロックはアプリを閉じても残ります。
- 再起動はカウントダウンを消す方法ではありません。開き直すのに時間がかかる端末では、試す前に知っておく価値があります。
- カウントダウンはアドレスに対して保持されます。
- メールアドレスごとに保存されます。別のアドレスを確認すると、前のカウンターの続きではなく、別のカウンターが始まります。
- その長さはここには書きません。
- この値は動いているシステムのパラメーターであり、このページでは公開しません。画面のカウントダウンを読んでください。
警告バナーが読み違えられるところ
以下はいずれも、アプリの中を自由に動けることから自然に出てくる読み方で、いずれも役に立たない方向へ進みます。
自由に移動できることを、アドレスが確認済みである証拠として読む。
移動は、確認の状態が支配しているものではありません。アドレスについて述べているのは画面のバナーであって、障害がないことではありません。
拒否を、そのとき使っていた画面や機能のせいにする。
拒否は、アカウントの状態に対してサーバーが出します。目の前の機能はそれが表に出た場所であって、原因ではありません。
制限をアプリが握っていて、解除できると考える。
クライアントは拒否を伝え、バナーを描きます。結果を決めているわけではないため、端末の側に変えられるものはありません。
ロックされている間に、再送信ボタンを繰り返し押す。
ロックされた状態は、すでに起きた送信を映しています。タップを繰り返しても、カウントダウンが自分で変えること以上には何も変わりません。
ロックされたボタンを、アドレスに届いていない印として扱う。
ロックが報告するのは送信であって、到達ではありません。アドレス自体が間違っていたのなら、それを直すことが意味のある変更で、そのアドレスは自分のカウンターを持ちます。
再送信ボタンが反応しないときに確認すること
以下はいずれも、いま開いている画面で片が付きます。
- カウントダウンが見えているかを確かめる。カウントダウン付きのロックされたボタンは、すでに行われた送信を報告しています。
- 待つ時間を使う前に、画面が確認しようとしているアドレスを1文字ずつ確かめる。
- ロックを消すためにアプリを再起動しない。ロックは再起動をまたいで残ります。
- 画面を離れて戻れば新しいボタンになると期待しない。ロックは、画面が開いていることに結び付いていません。
- アドレスが間違っていたなら、待つのではなく変える。別のアドレスは自分のカウンターを持ちます。
- バナーが出ている間に操作が拒否されたなら、その操作を不具合として報告する前に、2つが同じ主題であることを書き留める。
このページの範囲の外にあるもの
ここでの根拠は、モバイルのクライアントが表示し、保存するものです。以下はその一部ではありません。
- 消費に当たる操作の一覧。これはサーバーで判断され、クライアントからは読み取れないため、ここではどのような形でも示しません。
- 再送信のロックの長さ、コードの桁数、コードが使える時間、許される試行の回数。いずれもこのページでは公開しません。
- 登録フォームから未確認の状態に至る経緯。その受け渡しは別の主題で、ここでは開きません。
- アカウントの削除とパスワードの問題。どちらもこのページでは説明しません。
- 金額、パッケージ名、価格、通貨。このページの内容は、その種の数値に依存していません。
- サーバー側のセッションの規則全般。この画面が報告するのは、クライアントが描くものと、端末に保存するものだけです。
よくある質問
メールアドレスを確認する前に、アプリを使えますか?
見て回ることはできます。入場を決めているのは確認ではありません。未確認のアカウントには、警告バナーとともにアプリが与えられます。消費をともなう操作はサーバーに拒否され、アプリはバナーと、コードをもう一度送るための道筋を示して応えます。
アドレスが未確認の間、どの操作が止められますか?
それはサーバーで判断され、クライアントはその一覧を持たないため、このページでは示しません。アプリは拒否が起きたときにそれを伝えるだけで、操作を前もって絞り込むことはしません。
再送信ボタンがロックされてカウントダウンしています。コードは実際に送られたのでしょうか?
ロックは送信に続くものです。かつてこのボタンが、リクエストが飛ばされている間に送信を報告していたため、まさにその理由でロックが導入されました。したがって、いまのロックされた状態は正直な報告です。画面を離れても、アプリを再起動しても、それは消えません。
間違ったアドレスで登録しました。カウントダウンが終わるまで待つ必要がありますか?
いいえ。カウントダウンはメールアドレスごとに保存されるため、別のアドレスを確認すると、いま見ているカウンターの続きではなく、別のカウンターが始まります。