Pregunta

modelo de usuario muy básico, deseo que el usuario admin: administrar todos

No más puede hacerlo: índice, usuario y algunas otras opciones, pero cuando intento y bloquear a los usuarios no de administrador de ver el índice de usuario, el usuario administrador tampoco tiene acceso.

Este es mi 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

¿Qué puedo hacer para detener todos los usuarios bloqueados en el índice del usuario?

Regards

Dan

¿Fue útil?

Solución

Algo mal con if-else en el 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

Y también que no tiene que negar el usuario no administrador para asignar funciones, obviamente, (no puede: assign_role, Usuario).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top