joyau CanCan | ne peut pas: index, l'utilisateur
-
23-09-2019 - |
Question
modèle utilisateur très basique, je souhaite que l'utilisateur admin: gérer tous
d'autre peut pas: l'index, l'utilisateur et d'autres options, mais quand je tente de bloquer les utilisateurs non-administrateurs de visualiser l'index de l'utilisateur, l'utilisateur admin a également pas accès.
Ceci est mon ability.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
Que puis-je faire pour arrêter tous les utilisateurs bloqués de l'index de l'utilisateur?
Cordialement
Dan
La solution
Quelque chose ne va pas avec if-else dans le code.
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
Et vous ne devez pas refuser utilisateur non administrateur d'attribuer le rôle de toute évidence (ne peut pas: assign_role, utilisateur).
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow