简体   繁体   中英

RailsAdmin + Devise + CanCanCan role not works without :manage :all

I apologize in advance for my English and knowledge of ruby :) I making admin panel with RailsAdmin , authentication with Devise , authorisation with CanCanCan , so, I have three boolean fields in User:

add_column :users, :superadmin_role, :boolean, default: false
enter code hereadd_column :users, :manager_role, :boolean, default:

So, in ability.rb i have this:

class Ability

  include CanCan::Ability

  def initialize(user)
    user ||= User.new # guest user (not logged in)
    can :access, :dashboard    # allow access to dashboard
    can :access, :rails_admin  # access Rails Admin for Admin-users

    if user.superadmin_role?
      can :manage, :all
    end # role works correct

    if user.manager_role?
      can :read, :all   
    end #role works incorrect

  end
end

SUPERADMIN_ROLE works correct and allow to enter to RailsAdmin and etc., but MANAGER_ROLE is doesn't work - when user try enter in Dashboard, there is an Access Denied error message is showing:

仪表板访问被拒绝错误

How to provide access for manager_role to dashboard and RailsAdmin interface - have broke the whole brain.

I will be glad to any help (ready code, links @where to read and etc) and constructive criticism

cancancan2 needs a different adapter for RailsAdmin. Please look at this issue: https://github.com/CanCanCommunity/cancancan/issues/413 and this issue: https://github.com/sferik/rails_admin/issues/2901 .

On the first link you will find the code needed to create an adapter.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM