2014-01-05 3 views
0

rails_admin + cancan2를 사용하면 능력에 문제가 있습니다. 공식 문서 https://github.com/sferik/rails_admin/wiki/CanCan에 따라 내 ability.rb 파일을 구성한 :대시 보드에서 rails_admin + cancan2 무단 액세스

class Ability 
    include CanCan::Ability 

    def initialize(user) 
    can :read, :all 

    if user 
     if user.has_role? :admin 
     can :access, :all 
     end 
     if user.has_role? :manager 
     can :access, :rails_admin # grant access to rails_admin 
     can :dashboard    # grant access to the dashboard 
     end 
    end 
    end 
end 

문제가, 1.6 작품을 잘 캉캉 버전을 사용하지만, "관리자"대시 보드에 액세스 권한이없는 것입니다 캉캉 2를 사용하지만, 그는 레일 admin에서 액세스 권한이 있습니다. 그래서 :

can :access, :rails_admin #work 
can :dashboard  #don't work 

내가 로컬 호스트에 가면 : 3000/관리자는 오류가 고전

CanCan::Unauthorized in RailsAdmin::MainController#dashboard 

하지만 내가 localhost를 이동하는 경우 : 3000/관리/모델이 작동하기 때문에

can :dashboard  #don't work 

작동하지 않습니다.

도와 주시겠습니까?

+0

와 작업에 대한 또 다른 패치를하는 필요? – Austio

+0

내가 알 수는 없지만 어떻게 발견 할 수 있습니까? – user1066183

+0

index, : show, : create 또는 컨트롤러에서 렌더링하려는 다른 동작이 정상적인 것입니까? – Austio

답변

3
012을 할당 할 경우

can :manage, :dashboard 

에이를 변경해야 가정

을 사용해야합니다. 대시 보드를 표시 한 후

, 당신은 대시 보드 컨트롤러의 모든 행동은 편안한 캉캉 2.0

# patch for CanCan 2.0 
module RailsAdmin 
    module Extensions 
    module CanCan 
     class AuthorizationAdapter 
     def authorize(action, abstract_model = nil, model_object = nil) 
      @controller.current_ability.authorize!(action, model_object || abstract_model && model_name(abstract_model.model)) if action 
     end 
     def authorized?(action, abstract_model = nil, model_object = nil) 
      @controller.current_ability.can?(action, model_object || abstract_model && model_name(abstract_model.model)) if action 
     end 
     private 
     def model_name(model) 
      model.to_s.underscore.pluralize.to_sym 
     end 
     end 
    end 
    end 
end 
0

내가

can :dashboard 

같은 것을 본 적이 캔 지침의 일반적인 구조는 "할 수 있습니다 조치 : 오브젝트"입니다 내가에서 이해하는 것과

그래서 (또는 클래스), 당신의 문제는, 당신이 "모든 권한"

+0

나는 발견했다 : 대시 보드 공식 문서. 필자는이 구문을 본 적이 없지만 cancan1.6과 작동합니다. – user1066183

+0

이 내용은 rails_admin 문서에서 실제로 볼 수 있습니다. 나는 오타라고 생각한다. 나는 can : access, : dashboard에서 그것을 바꿀 것이다. 가장 논리적으로 들립니다. 그리고 어쩌면 이전 버전에서이 작업을했는지 ... – Danny

+0

이 포럼에서 묻기 전에 나는 다음과 같이 사용하려고 시도했습니다 : 액세스 및 : 관리하지만 작동하지 않습니다. – user1066183

관련 문제