gemma CanCan | non può: indice, per l'utente
-
23-09-2019 - |
Domanda
modello di utente molto semplice, vorrei che l'utente admin di: gestire tutti
altro può non: indice, utente e alcune altre opzioni, ma quando provo e bloccare gli utenti non di admin di visualizzare l'indice utente, l'utente admin non ha accesso.
Questo è il mio 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
Che cosa posso fare per fermare tutti gli utenti di essere bloccato dall'indice utente?
Saluti
Dan
Soluzione
Qualcosa non va con if-else nel codice.
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 anche non devi negare utente non-admin al ruolo assegnare ovviamente (non può: assign_role, User).
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow