0

データベースを使用せずに、Railsアプリで単純なロールベースのアクセスを設定したいと考えています。認証を処理するためにCASを使用しているため、CAS変数からユーザー名を取得できます。

私の考えは、ユーザー名をハッシュ内の特定の役割にマップし(application.rbで、アイデアについては以下を参照)、その役割を使用してコンテンツが表示可能かどうかを判断することでした。

ROLES = { 
        'admin' => [ 'username1', 'username2'],
        'standard_user' => ['username3']
        }

CanCan gemを確認するようにアドバイスされましたが、主に、近くで別のCAS変数として役割情報を渡す予定であるため、セットアップしたくないユーザーモデルから役割情報を取得したいようです。将来。

それで、この計画が実行可能であるかどうか誰かが何か考えを持っているかどうか疑問に思いました、そして多分私を助けるかもしれないコードスニペットの方向に私を向けてください

4

1 に答える 1

0

このような設定でも、cancan を使用できるはずです。を格納するユーザー モデルがありusername、このモデルを中心にアビリティが展開されている場合は、以下を試してください。ability.rb

# user.rb
ROLES = {
  admin: %w[username1 username2],
  standard_user: %w[username3]
}

# ability.rb
user ||= User.new # username is blank

if User::ROLES[:admin].include?(user.username)
  can :manage, :all

elsif User::ROLES[:standard_user].include?(user.username)
  cannot :manage, Invoices

else
  ...
end
于 2013-02-05T14:01:12.030 に答える