我使用主動聯繫的康康舞授權適配器,帶Rolify一起,管理上的管理網站的授權被拒絕在活動管理員訪問權限。我有一個模型,company
,即has_many :manuals
,和另一種模式,manuals
,即has_many :parts
。用戶不使用慘慘
如果用戶沒有訪問讀取admin/manuals/1
和類型它到地址欄,他們得到適當的重定向,並與未經授權的消息呈現。但是,如果用戶輸入admin/manuals/1/parts
,則不會拒絕他們的訪問。他們被帶到那個頁面,除了所有的部分都隱藏起來。他們應該通過未經授權的信息重定向到儀表板。
這裏是我的配置。預先感謝您提供的任何建議。
的config/routes.rb中
ActiveAdmin.routes(self)
型號/ ability.rb
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
can :read, ActiveAdmin::Page, :name => "Dashboard"
if user.has_role? :admin
can :manage, :all
elsif user.has_role? :moderator
can :manage, Part, :manual => { :company_id => user.company_id }
else
can :read, Part, :manual => { :company_id => user.company_id }
end
end
end
我也覆蓋缺省的授權方法控制器/ application_controller.rb
rescue_from CanCan::AccessDenied do |exception|
redirect_to root_url, :alert => exception.message
end
def authenticate_admin_user!
authenticate_user!
unless user_signed_in?
flash[:alert] = "You are not authorized to view this page"
redirect_to root_path
end
end
def current_admin_user #use predefined method name
return nil unless user_signed_in?
current_user
end
def after_sign_in_path_for(user)
if current_user.has_role? :admin
admin_dashboard_path
elsif current_user.has_role? :moderator
admin_manuals_path
else
company_path(user.company)
end
end
嘿你有沒有想出解決辦法?我處於獲取'protected method authorize !'錯誤的地步。 –
我沒有。我結束了這麼多深層嵌套的路線,只是建立自己的管理員變得更容易。 – seancdavis