32
Autorização com CanCan Rafael Carvalho @rafaeldx7 Friday, October 22, 2010

Autorização com CanCan

Embed Size (px)

DESCRIPTION

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.

Citation preview

Page 1: Autorização com CanCan

Autorização com CanCanRafael Carvalho

@rafaeldx7

Friday, October 22, 2010

Page 2: Autorização com CanCan

Objetivo

• Abordar as funcionalidades do CanCan

• Fazer um comparativo com o Acl9.

Friday, October 22, 2010

Page 3: Autorização com CanCan

O que é CanCan?

É uma ferramenta de autorização para aplicações Rails.

É fornecida como uma rubygem ou plugin.

Friday, October 22, 2010

Page 4: Autorização com CanCan

Autorização ≠ Autenticação

Friday, October 22, 2010

Page 5: Autorização com CanCan

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

Page 6: Autorização com CanCan

O CanCan não faz isso!

Friday, October 22, 2010

Page 7: Autorização com CanCan

O Acl9 não faz isso!

Friday, October 22, 2010

Page 8: Autorização com CanCan

Autenticação para Rails

• Devise

• AuthLogic

• Restful Authentication

• Clearance

Friday, October 22, 2010

Page 9: Autorização com CanCan

Autorização para Rails

• CanCan

• Acl9

• Declarative Authorization

• Role Requirement

Friday, October 22, 2010

Page 10: Autorização com CanCan

Visão geral do Acl9

Friday, October 22, 2010

Page 11: Autorização com CanCan

Acl9 é baseado em papéis (roles)

E uma tabela roles referente a esse model.

Friday, October 22, 2010

Page 12: Autorização com CanCan

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

Page 13: Autorização com CanCan

Authorization ObjectsObjects são os objetos acessados pelo Subject.

Friday, October 22, 2010

Page 14: Autorização com CanCan

Métodos do SubjectA 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

Page 15: Autorização com CanCan

Métodos do ObjectA 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

Page 16: Autorização com CanCan

Definindo as Regras de Acesso

Friday, October 22, 2010

Page 17: Autorização com CanCan

Visão Geral do CanCan

Friday, October 22, 2010

Page 18: Autorização com CanCan

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

Page 19: Autorização com CanCan

Classe de Permissões

Friday, October 22, 2010

Page 20: Autorização com CanCan

Testando as Permissões

Friday, October 22, 2010

Page 21: Autorização com CanCan

Autorizando as Actions

Friday, October 22, 2010

Page 22: Autorização com CanCan

Mostrando Links

Esse método can? será chamado para o current_user.

Friday, October 22, 2010

Page 23: Autorização com CanCan

Comparativo

Friday, October 22, 2010

Page 24: Autorização com CanCan

Model no Acl9

Friday, October 22, 2010

Page 25: Autorização com CanCan

Model no CanCan

Nada.

Friday, October 22, 2010

Page 26: Autorização com CanCan

Model no CanCan

A menos que seja necessário criar papéis.

Friday, October 22, 2010

Page 27: Autorização com CanCan

Controller no Acl9

Friday, October 22, 2010

Page 28: Autorização com CanCan

Controller no CanCan

Friday, October 22, 2010

Page 29: Autorização com CanCan

Flexibilidade no CanCan

Friday, October 22, 2010

Page 30: Autorização com CanCan

Vantagens do CanCan

• Simplicidade é essencial

• Flexibilidade é necessária

• Centralização das regras é interessante

O CanCan é uma boa opção quando:

Friday, October 22, 2010

Page 32: Autorização com CanCan

Obrigado!

Friday, October 22, 2010