CANCAN GEM | não pode: indexado, usuário
-
23-09-2019 - |
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
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