動的な役割の割り当て(役割/特権)を提供する必要があります。より明確に言えば、エンドユーザーは役割を作成し、新しいユーザーにアクセス許可を割り当てることができる必要があります。そこで、ユーザーごとにロールと権限をテーブルに格納することを考えていました。
これを行うための賢い方法はありますか(他のプラグインはありますか?)、または宣言型承認を使用してこれを行うためのコードを作成する必要があります。いくつかの光が役立ちます。ありがとう!
動的な役割の割り当て(役割/特権)を提供する必要があります。より明確に言えば、エンドユーザーは役割を作成し、新しいユーザーにアクセス許可を割り当てることができる必要があります。そこで、ユーザーごとにロールと権限をテーブルに格納することを考えていました。
これを行うための賢い方法はありますか(他のプラグインはありますか?)、または宣言型承認を使用してこれを行うためのコードを作成する必要があります。いくつかの光が役立ちます。ありがとう!
私は最近プロジェクトでCanCanを使用しましたが、それはかなりクールだったと思います。Abilityクラスを作成し、それを使用して、ユーザーがアクションを実行できるかどうかを判断します...メソッド内のテーブルにアクセス許可が存在するかどうか、またはルールセットがアクションを許可するかどうかを確認できます。
このサンプルコードはすべて、githubreadmeから取得しました。
class Ability
include CanCan::Ability
def initialize(user)
if user.admin?
can :manage, :all
else
can :read, :all
end
end
end
次に、ビューとコントローラーで認証レベルを確認できます
<% if can? :update, @article %>
<%= link_to "Edit", edit_article_path(@article) %>
<% end %>
def show
@article = Article.find(params[:id])
authorize! :read, @article
end
Cancan は単純なプロジェクトや開始プロジェクトに最適ですが、モノリシック アプリの場合は必ずラップする必要があります。Cancan は初期のソリューションであるべきですが、最終的なソリューションではありません。ポリシー オブジェクト (評論家) を見ると、独自の承認モデルを構築する必要があるコードの匂いがする可能性があります。統合のような承認はクライアントごとに異なります。より動的なソリューションを探している場合、または話すにはあまりにも多くの役割がある場合、cancan は適していません。よりデータ駆動型のセキュリティ モデルが必要になる場合があります。たとえば、他の誰かにエンティティへのアクセスを許可できる場合です。
解決策に近づくために、これらに答えてみてください。