Un jour, une gem

25/01/2012

Mercredi c'est Cancan

gem install cancan

Plusieurs niveaux d’utilisateurs dans une application

Dans une application on a parfois besoin de plusieurs niveaux d’utilisateurs. Dans ce cas, Cancan est là et vous permettra de gérer simplement (et proprement !) cela.

Un petit exemple :

Model Ability, où je définis les possibilités de mes utilisateurs

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new # utilisateur invité
    if user.admin?
      can :manage, :all
    else
      can :read, :all
    end
  end
end

Donc si mon utilisateur est admin, il peut tout faire (CRUD) sur toutes mes entités. S’il ne l’est pas, il peut juste les afficher.

View

<% if can? :update, @monmodel %>
  <%= link_to "Edit", edit_monmodel_path(@monmodel) %>
<% end %>

Voilà c’est tout ! Envie d’aller plus loin, ou de mettre un message d’erreur qui insultera l’utilisateur un peu fourbe qui voudra accéder à la fonctionnalité par l’url ? Voici les liens utiles :