2010-11-11 4 views
1

Je me demande comment implémenter une certaine logique d'autorisation dans une application Rails 2.3.8.Comment appliquer des autorisations

Par exemple, un utilisateur peut uniquement modifier les tâches créées par l'utilisateur (alias "owns").

dois-je faire quelque chose comme ceci:

user.can_edit_task(task) 

ou ceci:

task.can_be_edited_by?(user) 
#Method needs to be passed in a user object (from controller). But then how 
#can I access the current user in a "before_save" filter as below : 

.

def User 
    before_save: check_permissions! 

    def check_permissions 
    #this way? 
    raise some_exception if task.can_be_edited_by?(user) 
    #or this way? 
    raise some_exception if self.can_edit_task?(task) 
    end 
end 

Des conseils sur comment faire à ce sujet?

Répondre

2

S'il vous plaît essayer d'adopter certains des plugins existants comme cancan

Il sauvera votre vie.

+0

Ca ne semble pas que CanCan puisse faire ce dont j'ai besoin .. pouvez-vous m'aider? – Zabba

+0

mieux serait de regarder ce screencast http://railscasts.com/episodes/192-authorization-with-cancan – mpapis

+1

+1 CanCan, comment peut-il ne pas faire ce dont vous avez besoin? – Jonathan

Questions connexes