Rails 3 Web アプリケーションでパーミッションを設定する際に問題が発生しています。私は現在DeviseとCanCanを使用しています。Devise で使用される User モデルが 1 つあります。役割は、管理者、管理者、およびユーザーです。
私のソリューションでは、名前空間を使用して管理パネルを分離しています。
Root (frontend)
- static pages
Manager
- administration pages for "manager" roled users.
Backend
- administration pages for "admin" roled users.
ドキュメントといくつかのチュートリアルを読みましたが、機能させることができます。私の問題は、ユーザーがモデルで実行しようとしているアクションで CanCan が能力をチェックすることです。
そのため、ユーザーが管理者としてログインしていて、自分の投稿を管理する必要がある場合は、/manager/posts にアクセスして管理できます。しかし問題は、彼が /backend/posts ディレクトリに移動して、所有者ではない投稿をインデックス化できることです。
この問題が発生するのは、管理者は Post モデルをインデックス化できるが、管理者と管理者の両方が Post モデルで作業していることをアビリティ クラスが示しているためです。
ユーザーがアクセスできる名前空間を指定する方法はありますか?
名前空間付きモデル (Backend::Posts Manager::Posts、異なるテーブルを使用) を使用するような多くの方法があることを確認しました...
Devise と CanCan を使用して、ロールが同じモデルで動作している名前空間アプリのアクセス許可を管理するための最適なソリューションは何ですか?