J'ai une ressource Projets qui est imbriquée dans la ressource Utilisateurs.Rails cancan autorisant les ressources imbriquées
classe Mon Cancan Ability est:
class Ability
include CanCan::Ability
def initialize(user)
#everyone
can :read, Project
if user.blank?
# guest user
...
else
#every signed in user
case user.role
when User::ROLES[:admin]
#only admin role user
can :manage, :all
when User::ROLES[:member]
#only member role user
can :update, User, :id => user.id
can [:create, :update, :destroy], Project, :user_id => user.id
else
end
end
end
end
Et contrôleur Projets:
class ProjectsController < ApplicationController
load_and_authorize_resource :user
load_and_authorize_resource :projects, :through => :user, :shallow => true
...
end
J'ai quelques questions:
Est-il possible de refuser: lire utilisateur et laisser: lire Projet, pour que tout le monde puisse accéder à/users/10/projects, mais pas/users/10 ou/users?
Comment puis-je refuser l'accès à l'utilisateur: nouvelle action avec un autre id_utilisateur? Par exemple, si j'ajoute
#everyone
can :read, User
can :read, Project
ce code permet à l'utilisateur avec l'ID 42 d'accéder à/user/41/projects/new.