0


0

役割を確認する方法

私はここでRails初心者であり、初めてポスターを作成し、作成中の小さなタイムシートアプリで役割ベースのアクセス制限を実装するために宣言型承認を使用しています。

私のビューの1つでは、ログインしているユーザーにadminロールが割り当てられている場合、特にtime_registersのindex.html.erbに詳細情報を表示する必要があります。

最初は、ユーザーがIDを持つユーザーになることを確認していました。 == 1

<% if @current_user.id == 1 %>

ただし、id == 1のユーザーに制限するのではなく、adminロールが割り当てられているすべてのユーザーがindex.html.erbファイルをもう少し表示できるようにしたいと思います。

declarative_authorizationを使用したモデルのセットアップ方法

class User < ActiveRecord::Base
  has_many :assignments

class Role < ActiveRecord::Base
  has_many :assignments
  has_many :users, :through => :assignment

class Assignment < ActiveRecord::Base
  belongs_to :user
  belongs_to :role

私の認証ファイルは次のようになります。

authorization do

  role :usuarios do
    has_permission_on :users, :to => [:index, :show, :new, :create, :edit, :update]
  end

  role :reghoras do
    has_permission_on :time_registers, :to => [:index, :show, :new, :create, :edit, :update]
    has_permission_on :users do
      to :show
      if_attribute :id => is {user.id}
    end
  end

  role :contactos do
    has_permission_on :contacts, :to => [:index, :show, :new, :create, :edit, :update]
    has_permission_on :users do
      to :show
      if_attribute :id => is {user.id}
    end
  end

  role :admin do
    has_permission_on :authorization_rules, :to => :read
    has_permission_on [:time_registers, :contacts, :users, :roles], :to => [:index, :show, :new, :create, :edit, :update, :destroy]
  end

  role :guest do
    has_permission_on [:time_registers, :contacts], :to => [:index, :show]
  end

end

さて、この質問に答えるために他に何が必要かわからないので、詳しい情報をリクエストしてください。

1 Answer


3


わかりましたので、この例をよく見て、これについては何も見つかりませんでした。 しかし、APIを再度確認したところ、機能するものが見つかりました。

私はすべてのインスタンスを交換しました

<% if @current_user.id == 1 %>

for

<% if has_role?(:admin) %>

同じ問題について誰かが助けを求めて来た場合に備えて、上記の関数を見つけたAPIのページを次に示します。

説明はあまりありませんが、ソースを見ると、現在のユーザーが関数に渡された特定のロールを持っているかどうかを確認できます。 これが、関数を直接使用することを考えた方法です。

私がやっていることは実際に管理ページを実装する正しい方法なのか、それとも同じファイルではなく一般ユーザーのビューとは別に管理ビューを実装する必要があるのでしょうか? これまでのところ、これを行う方法についての議論は見つかりませんでした。