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

Était-ce utile?

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
scroll top