Ограничить доступ активного администратора с помощью cancancan - PullRequest
0 голосов
/ 20 декабря 2018

Я хочу запретить администратору просматривать данные пользователя (который пользователь добавил вручную).Администратор должен видеть только данные, которые он добавил из панели администратора.Я использую камень cancancan и камень активного администратора.

Это файл умения .rb, в котором используется cancancan:

def initialize(user)
    user ||= User.new # guest user (not logged in)
    if user.admin?
      can :manage, :all
    else
      can :manage, WebCred, user_passes: {user_id: user.id}
    end
    index do
    selectable_column
    id_column
    column :email
    column :current_sign_in_at
    column :sign_in_count
    column :created_at
    actions
  end
  filter :email
  filter :current_sign_in_at
  filter :sign_in_count
  filter :created_at
  form do |f|
    f.inputs do
    f.input :email
    f.input :password
    f.input :password_confirmation
  end
  f.actions
end

Это файл моего активного администратора.Я хочу запретить администратору просматривать пароль [sic] веб-клиента, который пользователь добавил вручную, и в то же время разрешать администратору видеть добавленный им пароль.

1 Ответ

0 голосов
/ 20 декабря 2018

Вы можете добавить новую способность, передав блок для оценки состояния (блок должен иметь значение true, когда администратор не сможет увидеть пароль).

def initialize(user)
    user ||= User.new # guest user (not logged in)
    if user.admin?
        can :manage, :all
        cannot :see_password, WebCred do |web_cred|
            web_cred.password_created_by_user_himself? ###Your condition here
        end
    else
        can :manage, WebCred, user_passes: {user_id: user.id}
    end
end

Тогда, по вашему мнению или контроллеру, вы можете проверить эту способность, используя can? :see_password, WebCred.find(:id).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...