이미 존재하는 다소 큰 앱에 권한을 추가하려고하지만 세부 사항을 조금씩 이해해야합니다. 대략 다음과 같이, 우리는 계층 적 숫자 나 역할이 우리의 응용 프로그램에서역할에 대한 선언적 권한 부여
: 여기
는 배경의 각 사용자 모델 인스턴스의 역할을 '속성을 가지고 허가를 들어
BasicUser -> SuperUser -> Admin -> SuperAdmin
위와 일치합니다.
Backoffice에서 이름 공간을 가진 RESTful 컨트롤러 "사용자"가 있습니다. 즉 Backoffice :: UsersController입니다.
우리는 사용자가 사용자가 사용자를 편집 할 수 있지만,이 '작은'역할을 할 경우에만 그들이 현재 가지고보다에 대한 권한을 부여 할 수 있도록하려면 :
class Backoffice::UsersController < ApplicationController
filter_access_to :all
#... RESTful actions + some others
end
그래서 여기 문제입니다. 나는 authorization_rules.rb
authorization do
role :basic_user do
has_permission_on :backoffice_users, :to => :index
end
role :super_user do
includes :basic_user
has_permission_on :backoffice_users, :to => :edit do
if_attribute :role => is_in { %w(basic_user) }
end
end
role :admin do
includes :super_user
end
role :super_admin do
includes :admin
end
end
에 다음 불행히도 그것은 지금까지 내가 가진대로의 규칙이 적용 얻을하지 않는 것 만들었습니다. 내가 규칙을 주석 처리하면 나는 또한 if_attribute에 변화의 몇 가지를 시도했습니다 모두
편집 할 수있는 규칙을두면
- , 아무도
- 을 편집 할 수 없습니다 :
if_attribute :role => is { 'basic_user' } if_attribute :role => 'basic_user'
과 같은 효과가 있습니다. 누구 제안이 있습니까?