No meu tutorial Criando uma área restrita no CakePHP 1.3 + AuthComponent vimos como é fácil implantar o sistema de autenticação “nativo” do CakePHP. Agora iremos além, faremos uma área restrita com nivel de permissão grupo/usuário.

Para isso utilizaremos alguns plugins, que facilitaram todo o processo. Recomendo que você veja o tutorial sobre o assunto existente no CookBook. Assim, você entenderá melhor como funciona o Acl Component, o qual fará toda a mágica desta vez.

Iniciando

Neste tutorial utilizaremos alguns recursos do CakePHP: Prefix Routing, Auth Component, Acl Component, um Método de Callback, Behaviors e Plugins.

Acl Component

O significado de ACL, traduzindo a sigla, é lista de controle de acesso. Utilizando uma estrutura de árvore para controle, este componente nos permite realizar o controle de acesso de grupos e usuário a cada action do sistema.

Ele trabalha com duas árvores: ACO e ARO.

ACO (Controle de Acesso de Objetos) = Controllers e Actions

ARO (Requisição de Acesso a Objetos) = Grupos e Usuários

Vamos utilizar dois plugins: Alc_Extras e ACL_Caching – este eu desenvolvi ^^’.

Preparação

O Acl Component trabalha em conjunto com o Auth Component. O segundo faz a parte de autenticação e o primeiro libera o acesso específico para grupos e usuários.

Para facilitar, iniciaremos um novo projeto e iremos configura-lo. Não mostrarei com muitos detalhes como configurar o Auth Component, sendo assim mostrarei apenas os arquivos e modificações, uma vez que você pode encontrar toda a explicação que precise neste tutorial.

1. Remova o comentário do arquivo /app/config/core.php na linha

2. Adicione no arquivo /app/config/routes.php

3. Crie a Action admin_index no Controller page. (Se não existir pegue-o em /cake/lib/controller/pages_controller.php)

4. Crie a View para esta action em /app/views/pages com o mesmo nome: admin_index.ctp

Acesse a url http://seusite.com/admin/pages/ e NENHUM erro deverá ocorrer.

Agora vamos criar as tabelas, Models, Controllers e as Views para nossos grupos e usuários

5. Crie as tabelas: Groups e Users

6. Utilize o Bake ou Bake UTF8 (outro plugin que desenvolvi) para criar o Model, Controller e as Views (execute os comando abaixo na ordem em que estão apresentados):

Instalação dos plugins

Antes de iniciar, vamos instalar os dois plugins: Acl_Extras e ACL_Caching. Para isto, basta fazer o download e copia-los para a pasta /app/plugins com os nomes acl_extras e acl_caching, repectivamente.

Se preferir, utilize o git:
git clone https://github.com/pedroelsner/acl_caching.git
git clone -b 1.3 https://github.com/markstory/acl_extras.git

Agora através de um comando de shell, no estilo Bake, vamos criar as tabelas no banco de dados necessárias para o funcionamento do Acl Component.

Este comando irá criar as tabelas acos, aros e acos_aros, que são responsáveis por armazenar os Controllers/Actions, os grupos ou usuários e a ligação de permissão que grupos/usuários tem com os Controllers/Actions.

Para gerar a lista de Controllers e Actions da nossa aplicação, vamos utilizar o plugin acl_extras com o seguinte comando shell:

Sempre que você adicionar, remover ou alterar o nome de algum Controller ou Action, basta rodar este comando para sincronizarmos a tabela acos. =] (Não precisa agradecer!) rs

Performance

Recomendo a leitura do meu tutorial Problema de performance com CakePHP 1.3 + ACL para criar os índices necessários no seu banco de dados para obter mais velocidades nas consultas das permissões.

Configurações

Agora com os plugins instalados, vamos configurar nossa aplicação:

7. Deixe o arquivo /app/app_controller.php com o seguinte conteúdo (Se este arquivo não existir, pegue-o na pasta /cake/libs/controller)

8. Abra o Controller dos usuários (no nosso caso /app/controllers/users.php) e adicione antes da chave final:

9. Vamos atualizar nossa lista de ACO porque acabamos de adicionar 2 novas Actions no sistema:

10. Crie a View login.ctp (no nosso em /app/views/users)

Notificações

Para que o Cake exiba as mensagens de erro do Auth Component, você precisa alterar o arquivo esposável pelo layout das páginas – por exemplo /layout/default.ctp (Se este arquivo não existir, pegue-o na pasta /cake/libs/views/layouts/default.ctp) – e adicionar o seguinte código onde você desejar:

Behaviors Callback

Como vimos anteriormente, a tabela Aros é responsável por armazenar os grupos e usuários. Estas entradas se relacionam com a tabela acos que contem todos os Controllers e Actions da nossa aplicação.

Iremos agora criar funções de callback no model group e user para que quando adicionados, alterados ou excluídos, a tabela Aro seja atualizada automaticamente.

11. Edite o arquivo /app/models/group.php e adicione:

12. Edite o arquivo /app/models/user.php e adicione:

Primeiro grupo e usuário

Agora que os Behaviors estão devidamente configurados, vamos adicionar nosso primeiro grupo e usuário. Porém, para isso precisamos liberar acesso para as páginas de cadastro. Faremos isto da seguinte forma:

13. Edite o arquivo /app/app_controller.php removendo o comentário da seguinte linha:

14. Acesse http://seusite.com/admin/groups/add e cadastre um grupo.

15. Acesse http://seusite.com/admin/users/add e cadastre um usuário.

Definindo permissões

Agora a mágica vai acontecer de verdade. =]

Com o grupo e usuário adicionados, vamos definir suas permissões de acesso. Para isso, acesse a url http://seusite.com/admin/acl_caching/acl/ e uma tela como esta irá abrir:

Por padrão, o ACL nega tudo e você concede a permissão para o que desejar.

Para liberar, basta você clique sobre a regra desejada e um carregamento em Ajax ira acontecer. Caso um item de exclamação apareça, significa que o ACO da action não esta cadastrado no banco de dados, sendo assim, execute o comando cake acl_extras aco_sync para atualizar o banco de dados.

Acl Caching

Modéstia parte, este plugin é incrível, ele faz cache das permissões em uma sessão no momento do login e utiliza um modelo pronto, intuitivo e simples para alterar as definições de permissões de acesso para todos os grupos de usuários.

Além disso ele conta com funções especiais e um Helper para tratar os links de forma diferenciada.

Recomendo a leitura do tutorial Utilizando o Plugin ACL Caching no CakePHP 1.3 para conhecer todas as suas vantagens.

Finalizando

Depois de atribuir a permissão dos grupos de usuários, blindaremos o sistema forçando o login.

17. Edite o arquivo /app/app_controller.php e comente a seguinte linha:

Conclusão

O CakePHP é muito versátil e intuitivo. De forma simples e prática, implementamos uma área restrita com nível de permissão de grupos e usuários. Fazer este sistema em PHP puro daria um trabalho danado…

Em caso de dúvidas deixe um comentário. ^^

Quer copiar esse post no seu site? Você pode!

Segundo a licença da Creative Commons 3.0 (CC BY SA 3.0) você pode copiar e distribuir esse conteúdo desde que faça menção ao autor original, para isso é só copiar esse código no final do artigo quando for publicá-lo em seu site:

<p>Artigo originalmente publicado em <em>15 de julho de 2011</em> por <strong><a href="http://pedroelsner.com/" title="Pedro Elsner, Profissional de TI - São Paulo">Pedro Elsner</a></strong>: <a href="http://pedroelsner.com/2011/07/controle-de-acesso-a-nivel-grupo-usuario-no-cakephp/" title="Controle de acesso a nível grupo/usuário no CakePHP 1.3 + ACL + Caching">Controle de acesso a nível grupo/usuário no CakePHP 1.3 + ACL + Caching</a></p>
A não menção ao autor original da obra implicará em cópia e/ou distribuição ilegal de propriedade intelectual, o que é crime segundo a Lei n.º 9.610.
  • Parabéns pelo Post!

  • Aeon68

    Parabéns Pedro.
    Somente com este tutorial é que consegui trabalhar com ACL no cakephp. Já estava desistindo depois de várias tentativas com outros tutos (inclusive o exemplo do cookbook).
    Parabéns.

  • Julionathaus19

    Parabéns! O plugin acl_caching é realmente muito bom!

  • victor costa

    Parabéns pelo post, mas infelizmente eu não consegui implementar, fiz tudo fielmente ao tutorial, mas quando mando renderizar as paginas fica tudo em branco, não consigo acessar nenhuma pagina.

  • Victor, alguma coisa não ficou como no tutorial.
    Acabei de iniciar um novo projeto e segui todos os passo. Não encontrei nenhum problema.

    Verifique se você realmente não esqueceu de nada.

    Até+

  • Walison

    Olá Pedro!

    Cara, ainda estou procurando aprender Cake e seguindo esse seu tutorial para ACL surgiu o seguinte problema:
    Quando uso o método “$this->AclCaching->forceAllow()” consigo editar tranquilamente as permissões dos grupos no endereço “http://seusite.com/admin/acl_caching/acl/”.  Mas, quando desabilito esse método e entro com um usuário que deveria ter permissão para editar as permissões dos grupos eu não consigo editar.

    Primeiro tentei apenas com aquela permissão mestre, que é a “controllers”. Não funcionou. Então pensei que a permissão deveria ser dada explicitamente. Dei as permissões para o grupo e também nada feito. continuou sem eu conseguir editar.

    Você tem ideia do que possa ser?

    Desde já obrigado!

    Walison

  • Walison, o plugin Acl Caching funciona com a pemissão master no “controllers”. Entretanto, pela sua view que o plugin disponibiliza não esta disponível esta opção, mas se você a fizer manualemnte ele reconhecerá.

    O método “$this->AclCaching->forceAllow()” permite todas as actions e força o helper Acl Html a exibir todos os links. Ele desativa o ACL completamente.

    Se você seguiu este tutorial em uma aplicação nova (do zero) tudo irá funcionar corretamente. Se você ja tinha o ACL rodando em uma aplicação, recomendo que você limpe todas as tabelas ACOS, AROS, AROS_ACOS, verifique se os callbacks nos models estão devidamente configurados e cadastre tudo novamente.

    Baixei a ultima versão do cake (1.3.11), refiz os passos para ver se algo havia de errado no tutorial e tudo funcionou perfeitamente aqui.

    Qualquer coisa é só entrar em contato.

    Abraços,

  • Carlos Alan

    Cara, parabéns pelo post

    Mas, quando eu libero o acl e acesso o caminho: admin/groups/add
    me retornar o seguinte erro..
    o que pod ser? 

    Valeu amigoMissing Component FileError: The component file was not found.Error: Create the class AclCachingComponent in file: app/controllers/components/acl_caching.php
    Notice: If you want to customize this error message, create app/views/errors/missing_component_file.ctp

  • Boa tarde Carlos,
    Este erro está aconcendo porque o sistema não esta encontrando o component AclCaching.

    Bom possíveis motivos:
    1- Como ele esta produrando no endereço “app/controllers/components/” você não deve ter configurado no app_controller.php para ele pegar o componente AclCaching no plugin AclCaching, desta forma:

    var $components = array(
    ‘Auth’,
    ‘RequestHandler’,
    ‘Session’,
    ‘AclCaching.AclCaching’ => array(
    ‘use’ => array(
    ‘contain’ => false // True se você utiliza Containable
    ),
    ‘aro’ => array(
    ‘model’ => ‘Group’,
    ‘primaryKey’ => ‘id’,
    ‘displayField’ => ‘name’,
    ‘foreignKey’ => ‘group_id’
    )
    )
    );

    2- Se o seu app_controller.php está configurado corretamente, então o CakePHP não esta localizando os arquivos. Neste caso, baixe novamente o plugin, estraia o conteudo para uma pasta chamada “acl_caching” (nesta pasta tem que conter as pastas: controllers, views e webroot), e então, coloque na pasta “/app/plugins” ou “/plugins”

    O problema é basicamente este mesmo. Se não for a declaração errada no app_controller.php, então os arquivos estão no local errado ou na disposição errada.

    Qualquer coisa é só avisar,

    Abraços,

  • Walison

    É Pedro.

    Estranho, não consigo mesmo atualizar as permissões estando logado mesmo como administrado (controle total). Só mesmo quando desabilito o ACL.

    Atualizei o meu cake para a versão 1.3.11 (Nem sabia se estava desatualizado. Tem algum lugar pra saber qual a versão?).

    O que você quis dizer com isso???
    “Entretanto, pela sua view que o plugin disponibiliza não esta disponível esta opção, mas se você a fizer manualemnte ele reconhecerá.”

    O que é necessário fazer manualmente?

    Mais uma vez obrigado!

  • Walison,
    Quiz dizer que pela View do plugin não é possível liberar todas as controllers/actions para um grupo de usuário simplesmente liberando o “controllers/”. Eu recomendo que você não utilize esta forma de permissão, mas sim action/action seguindo a View do plugin.

    – Como liberar “controllers/” manualmente?
    Você pode criar uma action no controller Groups (por exemplo) chamada de set_permissions() e quando acessada, cadastra a permissão para o grupo desejado, assim:

    function set_permission()
    {
      $group &= $this->Group;
      $group->id = 1

      $this->AclCaching->allow($group, ‘controllers’);
    }

    Sinceramente, não te aconcelho a fazer isso, utilize a parte grafica do Acl_Caching que será melhor para você.

    Pergunta:
    1 – Você seguiu este tutorial em uma aplicação que já utilizava ACL?

    Faça o seguinte:
    2 – Libere o ACL com o comando “this->Acl_Caching->forceAllow()” e acesse a pagina “http://www.seusite.com/admin/acl_caching/acl” e me mande um ‘print-screen’ completo dela.
    3 – Mande o conteúdo do seu app_controller.php

    Envie tudo isso para meu e-mail: pedro.elsner@gmail.com

    Vamos colocar este plugin para fucionar na sua aplicação nem que seja na marra! =P

    Abraços,

  • Victor Costa

    Pedro muito obrigado consegui sim  implementar, era só uma questão de permissões, agora pela 1ª vez consegui ter um controle de usuários por grupo no cake, já estava começando a implementar um do 0, ainda bem q li esse post. valew Pedro. Sucesso!

  • Tonyweb

    Pedro Elsner,

    Excelente Post. Parabéns!!!
    Obrigado pela iniciativa em compartilhar seu conhecimento e tempo.

    Testado e Aprovado!
    CakePHP, versão: 1.3.11

  • Carlos Alan

    Opa man, voltei!

    Cara a estrutura ta assim:

    -cake
    —–app
    ———- app_controller.php (com o mesmo código que você postou aí no site)
    ———- plugins
    ——————– acl_caching
    ——————– acl_extras

    Baixei novamente os arquivos e coloquei na plugins.. conferi e vi que a pastas acl_caching tem aquela estruturou que você falou.

    Ainda não consegui fazer funciona.. 🙁

  • Perfeito Carlos,

    Perguntas:
    1) Os comandos do plugin acl_extras estão funcionando?
    2) Tente colocar os arquivos na outra pasta de plugins “/plugins” (na raiz mesmo)

    A estrutura de diretorio conforme você falou esta correta(tando de instação, quando de descompactação dos plugins), e porntanto, o cake deveria encontrar os arquivos sem nenhum problema.

  • Beleza Victor, fico feliz que tudo tenha dado certo.
    Abraços!

  • Carlos Alan

    Comando do extra:
    ./cake acl_extras aco_syncAco Update Complete

    Ele ta gerando o arco com sucesso

    Eu não tinha essa pasta /plugins na raiz do projeto, criei lá e coloquei os plugins, mesmo assim não funcionou.

    Da uma tristeza, todo mundo aí conseguindo e eu não.. devo ta fazendo besteira 🙁

  • Carlos,
    Se o acl_extras esta funcionando o cahing também tem que funcionar.

    Estranho que o seu problema é que o cake não encontra os arquivos do plugin. Parece ser um erro de instação/diretórios;

    Quando você abre a pasta acl_caching, você tem diretamente as pastas (controllers, views e webroot) do plugin?

  • Carlos Alan

    Te mandei um e-mail com o print de como ta toda a estrutura..

    Vlw pele ajuda!

  • Carlos, eu não encontro mais nenhum problema agora…
    O erro continua sendo o mesmo? (O CakePHP não encontra o component?)

    Me passa por e-mail os dados de ftp e o link da aplicação se puder, assim vejo mais de perto e posso tentar descobrir.

  • Lukas Figueiredo

    cara mt bom o tutorial e parabéns pelo acl_caching. perfeito!

  • Obrigado Lukas! =]

  • Carlos Alan

    Pedro, eu tava viajando.. mas to de volta pra lhe perturbar hahaha

    Cara vou tentar baixar outra versão do cake.. e fazer os passos novamente, caso não consiga coloco o projeto no git.. blz? 

    Vlw pela força

  • Beleza Carlos!
    Se der tudo certo, me avise também! =]

  • Herbert Hudson

    putssss kra muito bom! excelente, estava quebrando a cabeça para fazer funcionar o acl pelo cookbook, e só dava erro atrás de erro, fiz esse tutorial aí e saiu de primeira, fino, muito bom!!! de parabéns…

  • Olá amigos faz um tempão que tento entender a acl do cake burrice minha, mas é muito confuso este conteudo;
    É lendo seu tutoria que me ensina a fazer o login e o plugin faz o resto tenho que dizer foi excelente para min vou ate voltar a estudar o cake;

  • Neto

    Funcionou perfeitamente, parabéns pelo Plugin!

    Só um detalhe, somente na segunda tentativa no
    login é que é validado, não descobri o que pode ser…

    Att,

  • Beleza Neto!

    Cara, muito estranho este comportamento…
    Fiz uma aplicação de teste agora mesmo e esta funcionando perfeitamente. =]

    Acesse: http://pedroelsner.com/projetos/cakephp/users/login
    Usuario: pedro
    Senha: pedro

    Veja que esta tudo OK.
    Abraços!

  • Neto

    Fala Pedro,

    Então resolvi trocando a rota /admin para o controller users e a action login
    e também fiz uma rota logout /logout para o controller users e a action logout.

    Agora não tem mais aquele compartamento, como eu criei 2 usuarios em grupos
    diferentes talvez estava mantendo a sessão ou coisa do tipo.

    Obrigado pela resposta!

    []s

  • Rodrigo

    Ola, boa noite, muito bom o tutorial consegui fazer, embora nem sempre ele loga, nao ha nenhum erro, mas as vezes o login nao funciona, mas a minha duvida e outra, pode ate ser boba mas estou apredendo ainda, gostaria de saber se tem como colocar um nome mais amigavel no acl, porque as vezes pode parecer confuso para o usuario consegui entender o significado de Groups->admin_add ou Users->admin_add, eu queria saber se tinha como colocar tipo assim “Adicionar Noticias”, “Excluir noticias”, “visualizar noticias”. Sera que deu para entender a minha duvida? So queria ter um rumo nisso.
    Valeu obrigado e mais uma vez parabens…..

  • Boa noite Rodrigo,

    O plugin faz cache das permissões de acesso e do usuário em uma sessão. Enquanto esta sessão não for destruída, não ha necessidade de realizar o login, uma vez que já esta logado…
    Para apagar a sessão, ou você fecha o navegador, ou adiciona um botão de logout para a o link /users/logout.

    Sobre a sua pergunta, este tutorial foi baseado no do cookbook, para mostrar as diferenças/vantagens na sua utilização. Entretanto, você consegue colocar seus ACO/ARO em português configurando corretamente o Inflection da sua aplicação. Utilize o plugin cake_ptbr (https://github.com/jrbasso/cake_ptbr) do Juan Basso para fazer isto.

  • Rodrigo

    Hum, valeu brigadao respondeu bem rapido, so mais uma duvida boba q tenho, quando se faz um site com admin usando o cake, o que e mais viável fazer, criar 2 pasta app uma para o site e outra para o admin: contendo os controllers, models e views em cada uma, ou colocar tudo dentro de uma pasta so? Mas claro com um core so, so em relacao as pastas da aplicacao mesmo.

    valeu cara…

  • Rodrigo, recomendo que você deixe junto, assim você não tem que criar os Models duas vezes (um para a aplicação com ADMIN e outro para sem), pode compartilhar funções nos controllers, eu poderia citar mais um monte de vantagens aqui…

    Separe as aplicações só se realmente forem aplicações distintas. Se for apenas para separar uma área publica de uma área restritra, utilize o Acl_Caching! =]

  • Rodrigo

    Muito obrigado, sanou minhas duvidas, e mais uma vez parabens pelo seu trabalho e dedicação aos seus leitores respondendo de forma tao rapida e clara. Vlw

  • Pedro

    Boa noite, gostei do post, estava seguindo post e tudo funcionou bem, so q tenho uma duvida, estava tentando fazer uma área administrativa com o layout diferente da área pública do site, como faz para quando logar ele redirecionar para outro layout sem ser o default? E como eu faria para quando digitar admin no endereco e ele verificar se o login esta ativo e redirecionar para o layout do admin? Desculpe tanta pergunta tentei pesquisar no google mas nao achei nada esclarecedor, pode ser ate falta de conhecimento mas nao consegui achar…Flw.

  • Fala meu chará! ^^’

    Você pode ter mais informações sobre manipulação de tema no cookbook, neste link: http://book.cakephp.org/pt/view/1093/Temas-Themes

    Ha algum tempo, fiz uma loja virtual onde a loja tinha um tema e a administração outro.
    Basicamente, no app_controller.php, na função beforeFilter(), na verificação do prefixo “admin”, você pode configurar o tema para cada ambiente. Mais ou menos desta forma:

    if (isset($this->params[‘admin’])) {
        $this->theme = ‘area_administrativa’;
        // …
    }
    else {
        $this->theme = ‘loja_virtual’;
        // …
    }

    Você pode participar do grupo de discução, o pessoal é bem atencioso para responder qualquer tipo de dúvida: CakePHP Tuga: http://groups.google.com/group/cakephp-pt?pli=1

    Espero ter ajudado,
    Abraços!

  • Pedro

    Opa, valeu cara vou olhar la…flw..

  • Samuelrodrigus

    Boa tarde Pedro Excelente tutorial de acl realmente o cake é incrível, Sou novo em cakephp e gostaria de saber se tem como permitir e negar acesso a nível de registro, tipo gostaria de que somente o usuário que criou o post possa edita-lo, atualiza-lo e etc… Será que isso é possível em acl? 
    Atualmente faço com o Auth Component.

    Abs

  • Neste caso Samuel, você libera a permissão para editar, atualizar e etc para um grupo de usuarios desejado, e na ACTION filtra se o usuario logado é o mesmo que o usuário que cadastrou o post, e assim, faz a regra desejada.

  • Samuelrodrigus

    Obrigado Pedro, era +/- isso faço. Excelente tuto.

  • Tonyweb

    Olá Pedro, uma dúvida: eu fiz uma carga (.sql) de vários usuários, e quando eu utilizo “users/admin_edit/x” retorna o um erro que transcrevi abaixo. Embora imprima na tela o erro, a classe atualiza o registro do usuário, se eu tentar atualizar novamente, o erro não aparece mais. Você saberia me dizer qual a melhor forma de contornar isso? Desde já, obrigado.

    Warning (512): AclNode::node() – Couldn’t find Aro node identified by “Array
    (
    [Aro0.model] => User
    [Aro0.foreign_key] => 1
    )
    ” [CORE/cake/libs/model/db_acl.php, line 191]Warning (2): Cannot modify header information – headers already sent by

  • Fala Tony,

    O que acontece é o seguinte: O ACL utiliza a tabela ARO(para os grupos/usuários) e a ACO(para controllers/actions). No tutorial, configuramos as funções de callback necessárias nos models Group/User para quando inserir/excluir um registro, as tabelas ARO/ACO sejam atualizadas automaticamente.

    Como você esta carregando(adicionando) no SQL os usuários, a tabela ARO não está sendo atualizada com o ID deste usuários. Beleza?

    O que você pode fazer é carregar os usuários em uma tabela temporária, depois criar uma action para selecionar todos os registros desta tabela, para então adicionar usuário na tabela User utilizando os métodos do CakePHP:

    $this->User->create();
    $this->User->save($data);

    Desta forma, o callback será chamado e a tabela ARO atualizada com o ID do novo usuário.

    Abraços!

  • Tonyweb

    Maravilha Pedro, vou implementar.

    Mais uma vez, obrigadíssimo!
    Abração,

    Tony

  • Programador

    cara SHOW SHOWWWW! valew mano! abração!

  • Carlos

    Muito bom mesmo, ta ajudando a ganhar $$$

    🙂

  • Cara, é DEUS mesmo pra abençoar, coisa de outro mundo esses plugins e o método de implementação,  cara Parabéns ae…

  • A glória seja a DEUS!!! =D

  • Fala Pedro, 

    pensei aqui em colocar em minhas paginas um element que carregasse algumas informações básicas, como o nome do usuário, uma foto tipo coisa bem relax.
    Pensei em criar uma outra sessão na hora do login usando o Session do cake mesmo, mas tipo, parei e pensei olha o tanto de coisa que o ACL faz, acredito que exista um jeito mais dinâmico de fazer isso.

    Ou seja, como eu vou criar variáveis e seta-las com valores resgatados ta minha tabela (model) de users por exemplo?

    Valeu…

  • Grande Samir! =D

    Isso é bem tranquilo mesmo. O componente AUTH (que faz a autenticação para o ACL) grava automagicamente toda a tabela ‘user’ em uma sessão.

    Desta forma, basta você alterar a tabela user a sua maneira, colocar todos os campos desejados e depois chamar em sua view da seguinte forma:
    $this->Auth->user(‘NOME_DO_CAMPO’);

    Ou, pode resgatar via sessão:
    $this->Session->read(‘Auth.User.NOME_DO_CAMPO’);

    Abraços! xD

  • Grande Pedro =D rs

    Comecei a fazer aqui com $this->Session->read…

    mas com $this->Auth->user(‘NOME_DO_CAMPO’); ao meu ver estarei usando da melhor maneira o cake uma vez que o escopo dessa situação é mexer com usuário apenas.

    Valeu cara, salvou D+…

    Abç…