web-dev-qa-db-ja.com

ユーザー登録時にメールアドレスのみ確認する方法は?

登録フォームがあります。登録フォームで、ユーザーはユーザー名、メールアドレス、パスワードを入力し、パスワードを確認できます。

ユーザーが登録すると、ユーザーはシステムにログインする前に、自分のメールアドレスを確認するためのメールを受信する必要があります。

メール認証の前に、彼/彼女はシステムへのログインを許可されるべきではありません。

また、彼/彼女は登録時に自分のパスワードを設定する必要があります。

出来ますか?

logintobogganRules モジュールと共に使用しています。 Rules を使用して、登録時にユーザーのステータスをblockに設定します。次に、ルールWhen the user account is validated(このイベントはlogintobogganルール統合モジュールによって提供されます)を使用して、ユーザーをアクティブ化しています。

しかし、問題は、loggintobogganモジュールが電子メールの検証時にユーザーに自動的にログインすることであり、ユーザーがアクティブ化されているにもかかわらず、エラーメッセージthe user is currently not active or blockedが表示されます。ルールイベントは、電子メールアドレスの検証後にトリガーされるためです。

電子メールの検証時に、loggintobogganモジュールがユーザーに自動的にログインしないようにする方法はありますか?

2
Ahmad

最初はユーザーをブロックしません。それは確かにあなたが取り除こうとするそのエラーメッセージを引き起こさないでしょう。そして、代わりに Flag モジュールを( Rules モジュールと組み合わせて)使用して、次のようにロジックを実装します。

  • 同じイベントWhen the user account is validatedを使用して、「検証済み」というラベルの付いたフラグでそのユーザーにフラグを付けます。
  • 認証されたユーザーが検証されたかどうかを確認したいときはいつでも、そのユーザーに「検証済み」フラグが設定されているかどうかを確認する必要があります(通常、 Rules モジュールでも実行できます)。

登録したユーザーが(下のコメントのように)メール検証なしでサイトにログインできるという事実の救済策として、次のようなルールロジックを追加できます。

  • ルール条件:このユーザーにフラグが付けられていない場合(その「検証済み」フラグを使用)
  • ルールアクション:user/logoutへのリダイレクトを実行します

おそらく、同じルールアクションで「申し訳ありませんが、アカウントはまだ検証されていません。最初に検証してください」などのメッセージを追加してください。

2
Pierre.Vriens