J'ai une ressource de groupe que j'essaie de configurer avec les autorisations appropriées.Plusieurs instructions before_filter pour correct_user et admin
La logique d'autorisation que je suis en train de mettre en œuvre est le suivant:
- devraient être en mesure d'afficher uniquement les membres du groupe de leur groupe.
- Un administrateur peut afficher n'importe quel groupe, ainsi que prendre d'autres actions.
Je tente de le faire avec les déclarations suivantes before_filter dans le contrôleur de groupe:
before_filter :signed_in_user
before_filter :correct_user, only: :show
before_filter :admin_user, only: [:show, :index, :edit, :update, :destroy]
Correct_user fonctionne comme je l'ai vérifié que seuls les membres du groupe peuvent voir leur groupe. Cependant, ce que je veux arriver, c'est que la clause admin: show remplace cette clause, afin qu'un administrateur puisse voir n'importe quel groupe. Actuellement cela ne fonctionne pas. Je suppose que j'ai quelque chose de mal ici avec ma commande de filtre et les options. Est-ce que quelqu'un peut me dire où je me suis trompé?
EDIT
Ajout mon code de la méthode par la demande de Amar:
private
def correct_user
# User has to be a member to view
@group = Group.find(params[:id])
redirect_to(root_path) if @group.members.find_by_member_id(current_user).nil?
end
def admin_user
redirect_to(root_path) unless current_user.admin?
end
Essayez admin_user avant le filtre ci-dessus correct_user ou dans l'action d'affichage conditionnel pour l'utilisateur admin et autre – Amar
Merci Amar. J'ai essayé de mettre le filtre admin_user au-dessus de correct_user mais cela ne l'a pas corrigé. Je pourrais mettre la condition dans l'action mais je veux voir s'il y a un moyen de le faire avec before_filter. – pejmanjohn
Une inspection plus approfondie avec la façon dont je l'ai écrit ci-dessus le filtre exige que l'utilisateur soit à la fois et admin ET un utilisateur correct pour voir le groupe. Je veux qu'il soit OU – pejmanjohn