CanCan é uma ferramenta de autorização para aplicações Rails. Nessa apresentação o objetivo consiste em abordar uma visão geral do CanCan fazendo um comparativo com o Acl9.
5. Autenticação
Processo que verifica se alguém é de fato
quem declara ser.
Pode ser feito através de senha, cartão,
leitura biométrica, etc.
No nosso caso: é logar um usuário. Pode ser
feito através de senha ou OpenID, por
exemplo.
Friday, October 22, 2010
11. Acl9 é baseado em papéis (roles)
E uma tabela roles referente a esse model.
Friday, October 22, 2010
12. Definindo um Subject
E criar a tabela roles_users para associação entre Roles e Users (Subjects).
Subject é o objeto que terá permissão controlada.
Friday, October 22, 2010
14. Métodos do Subject
A chamada ao acts_as_authorization_subject
define os seguintes métodos:
subject.has_role?(role, object = nil)
subject.has_role!(role, object = nil)
subject.has_no_role!(role, object = nil)
subject.has_roles_for?(object)
subject.has_role_for?(object)
subject.roles_for(object)
subject.roles_for(object).map(&:name).sort
subject.has_no_roles_for!(object)
subject.has_no_roles!
Friday, October 22, 2010
15. Métodos do Object
A chamada ao acts_as_authorization_object define os
seguintes métodos:
object.accepts_role?(role_name, subject)
object.accepts_role!(role_name, subject)
object.accepts_no_role!(role_name, subject)
object.accepts_roles_by?(subject)
object.accepts_role_by?(subject)
object.accepts_roles_by?
object.accepts_roles_by(subject)
Friday, October 22, 2010
18. Principais Características
do CanCan
• Não baseado em papéis (mas pode ser)
• Bastante flexível
• Permissões centralizadas na classe Ability
• Fácil de testar com RSpec e TestUnit
Friday, October 22, 2010
30. Vantagens do CanCan
• Simplicidade é essencial
• Flexibilidade é necessária
• Centralização das regras é interessante
O CanCan é uma boa opção quando:
Friday, October 22, 2010