Pergunta

Modelo de usuário muito básico, desejo ao usuário administrador para: gerenciar todos

Sen, não pode: índice, usuário e algumas outras opções, mas quando tento bloquear usuários não administrativos de visualizar o índice do usuário, o usuário administrador também não tem acesso.

esta é minha habilidade.rb

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new #guest user

    can :manage, :all if user.role == "admin" #if user.admin? can :manage, :all
    can :assign_role, User 

    else
      can :read, :all
      can :create, User


      cannot :assign_role, User
      cannot :index, User

      can [:show, :edit, :update], User do |current_user|
              user.id == current_user.id || user.role == "admin"
            end



  end
end

O que posso fazer para impedir que todos os usuários sejam bloqueados do índice de usuário?

Cumprimentos

Dan

Foi útil?

Solução

Algo errado com if-else no código.

if user.role == "admin"
  can :manage, :all
  can :assign_role, User 

else
  can :read, :all
  can :create, User


  cannot :assign_role, User
  cannot :index, User
  can [:show, :edit, :update], User do |current_user|
    user.id == current_user.id || user.role == "admin"
  end

end

E também você não precisa negar o usuário não administrado para atribuir a função obviamente (não pode: atribuir_role, usuário).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top