Avançar para a área de conteúdo

ir para o conteúdo principal

developerWorks Brasil  >  Software livre  >

Crie Web sites rapidamente com CakePHP, Parte 2: Faça mais e melhor com CakePHP

developerWorks
Ir para a página anteriorPágina 7 de 14 Ir para a próxima página

Opções de documento

Código de amostra


Classificar este tutorial

Ajude-nos a melhorar este conteúdo


Atribuindo permissões

Agora, o Tor tem vários AROs que representam usuários, e o palco está montado para criar alguns ACOs que representem produtos, agrupados por vendedor. É hora de reuni-los definindo algumas permissões.

Como as permissões funcionam?

Você vai definir especificamente quem tem direito de trabalhar com os produtos. Fará isso permitindo explicitamente plenos direitos a um ARO (neste caso, um usuário) sobre um ACO (neste caso, um produto) e sobre uma ação. As ações poderão ser ler (ou seja, o usuário poderá ver as informações no banco de dados), criar (o usuário poderá inserir informações no banco de dados), atualizar (o usuário poderá modificar informações), excluir (o usuário poderá excluir informações do banco de dados) ou *, o que significa que o usuário poderá executar todas as ações. Cada ação deve ser concedida individualmente; permitir excluir não implica em permitir criar, nem mesmo ver.

Por padrão, depois de verificar permissões para algo, se não houver permissão definida, o CakePHP presume DENY.



Voltar para parte superior


Definindo políticas

Definir políticas de permissão é mais do que apenas escrever e executar código. Você precisa pensar no que seu ACL está realmente tentando realizar. Sem uma ideia clara do que você está tentando proteger e de quem, terá que redefinir constantemente suas permissões.

O Tor tem usuários e produtos. Para os fins deste tutorial, você vai permitir que o usuário que criou o produto tenha permissão total de editá-lo e excluí-lo. Qualquer usuário poderá ver o produto, a menos que lhe seja negado acesso de forma explícita.



Voltar para parte superior


Acrescentando definição de permissão ao produto add

O Tor precisa saber como atribuir permissões quando um produto é criado. Isso pode ser feito acrescentando-se duas linhas ao controlador. Uma acrescenta as permissões de visualização para os usuários e a outra, permissões totais para o usuário que o criou. Conceder permissões é algo assim: $this->Acl->allow(ARO, ACO, TYPE);.

Se você não especificar TYPE (create, read, update ou delete), o CakePHP vai presumir que você está concedendo permissão total. Sua nova função add no controlador de produtos deve ser semelhante à Listagem 16.


Listagem 16. Nova função add no controlador de produto
                    
     function add() {
        if (!empty($this->data)) {
             $this->Product->create();
            if ($this->Product->save($this->data)) {
                $dealer = $this->Product->Dealer->read(null,
$this->data['Product']['dealer_id']);
                $parent = $this->Acl->Aco->findByAlias(
$dealer['Dealer']['title']);
                $alias = $this->Product->id.'-'.$this->data
['Product']['title'];
                $aco = new Aco();
                $aco->create();
                $aco->save(array(
                    'alias' => $alias,
                    'model' => 'Product',
                    'foreign_key' => $this->Product->id,
                    'parent_id' => $parent['Aco']['id']
                ));
                $this->Acl->allow('Users', $alias, 'read');
                $this->Acl->allow($this->Session->read('user'), $alias);
                $this->Session->setFlash(__('The Product has been saved', true));
                $this->redirect(array('action'=>'index'));
            } else {
                $this->Session->setFlash(__('The Product could not be saved.
Please, try again.', true));
            }
        }
        $dealers = $this->Product->Dealer->find('list');
        $this->set(compact('dealers'));
    }
                

OK — agora você pode tentar acrescentar alguns produtos. Faça login como um dos seus usuários e acrescente uns dois produtos, só para ver se tudo dá certo. Pode usar o Cake Console para ver os ACOs que criou quando acrescentou um novo produto. Você está quase no fim. Os AROs e ACOs estão definidos e as permissões foram atribuídas. Agora, o Tor precisa verificar as permissões ao executar as várias ações relacionadas aos produtos.



Voltar para parte superior



Ir para a página anteriorPágina 7 de 14 Ir para a próxima página