2012-05-08 5 views
8

私は、すべてのユーザーがずっとここに記述されているように、サービスの条件を受け入れることを強制したい:Devise、ユーザーに利用規約を受け入れる必要がありますか?

Ruby on Rails/Devise - Bypassing custom validation option in model when resetting password

は、しかし、上記のアプローチが収まらない作る2つの要件があります。

1)ユーザーは自己登録ではなく、システム管理者によって作成されます。管理者は明らかにユーザーの代理として利用規約に同意することはできません。ユーザーは最初のログイン時に利用規約に同意するよう求められます。

2)事後に利用規約が変更された場合。ユーザは、後続のログイン時に新しい用語を再入力する必要があります。

これはかなり標準的なワークフローのようです。これを達成するために何らかの手段を提供しているのですか?

もしそうでなければ、私のアプリケーションコントローラのbefore_filterにこのチェックを実装する必要があると思います。 (アプリケーションロジックとの認証の混乱を感じる...)

私はこれに頼らなければならないのですか、誰かがより良い方法を提案できますか?

おかげ

+2

私はdevise/authはビジネスロジック(用語)とは関係ないと思います。アプリケーションコントローラでは、前のフィルタを実行する必要があります。あなたは認証をビジネスロジックと混ぜ合わせていません。ユーザーは認証されますが、利用規約に同意するまではページにアクセスできません – bcd

答えて

0

あなたは理論的にだけではJQueryを使用して、アプリでさらに移動不可にできませんでしたか?

フォームに「続行」または「ログイン」ボタンが無効になっているか、[続行]ボタンをクリックしてからログインボタンを有効にするまで無効にします。

この情報を保存する必要がある場合は、ユーザーのデータベースに列を作成して、ボックスにチェックを入れたり、[続行]ボタンを押したりしても、またはログイン回数を利用することもできます知ることの

user.logs> 0の場合、ユーザーはすでに利用規約に同意しています。
user.logs == 0の場合、ユーザーはログインする前に利用規約に同意する必要があります。

私はあなたの質問によると、Deviseのすべてがあまりにも複雑に聞こえるように思えます。

これが役に立ちます。

2

これは技術的なものではなく、TOSが認証に関係しないため、これを処理しないでください。

あなたができることは、ステートマシンを実装するようなものですが、必要以上に複雑かもしれません。

ユーザーモデルにaccepted_tosブール値フィールドを追加し、before_filterに結びつけると、TOSが更新されるたびにaccepted_tosがfalseに設定されます。

関連する問題