私は Rails Web アプリケーションに取り組んでおり、現在約 20 人のユーザーが使用しています。
アプリケーションの一部は一部のユーザーのみがアクセスできるため、acts_as_authenticated プラグインを使用して実装した基本的な承認フレームワークが既に用意されています。
ユーザーの権限は、所属する部門によって異なります。たとえば、管理者はアプリケーションのすべての部分にアクセスできますが、会計は会計関連の部分にのみアクセスでき、営業は販売関連の部分にのみアクセスできます。
一方、ユーザーには、権限が不十分なアクションへのリンクが表示されます。たとえば、営業部門の担当者は、メイン メニューに財務記録へのリンクが表示されますが、クリックしても何も起こりません。これは、acts_as_authenticated を使用してユーザー権限を照会する効率的な方法がないためです。
これを2つの方法で変更したい:
よりきめ細かい認可を導入したいと考えています。現在、承認はコントローラ レベルで行われます。アクションまたはモデルレベルでこれを行いたいです。たとえば、営業部門の担当者は、支払いの作成と更新はできるが、削除はできないようにしたいと考えています。
ユーザー権限を効率的に照会できるようにしたいので、インターフェイスから不要な (そして紛らわしい) リンクを削除できます。
これを実装する最もエレガントな方法は何だと思いますか?
Rails 固有の回答は必要ありません。データ駆動型アプリケーションでこれをどのように実装する必要があるかを知りたいだけです。
最後に、現在の実装方法は次のとおりです。
def authorized?
current_user.role.foo? or current_user.role.bar?
end
そして、これが私の最初のアイデアです。これは、これを解決するための最良の方法ではないと思います。
+------------+------------+---------+ | | 部門 | コントローラー | アクション | アクション | +------------+------------+---------+ | | 会計 | 支払い | インデックス | | | 会計 | 支払い | 新しい | | | 会計 | 支払い | 作成 | | | 会計 | 支払い | 編集 | | | 会計 | 支払い | アップデート | | | 会計 | 支払い | 破壊する | | | 販売 | 支払い | 新しい | | | 販売 | 支払い | 作成 | | | 販売 | 支払い | 編集 | | | 販売 | 支払い | アップデート | +------------+------------+---------+
また
+------------+----------+-------+--------+------+- -------+--------+ | | 部門 | モデル | リスト | 作成 | 読む | アップデート | 削除 | +------------+----------+-------+--------+------+- -------+--------+ | | 会計 | 支払い | 真 | 真 | 真 | 真 | 真 | | | 販売 | 支払い | 偽 | 真 | 真 | 真 | 偽 | +------------+----------+-------+--------+------+- -------+--------+