Uma vez que você tem pego uma cópia recente do Cake, configure seu arquivo database.php e altere o valor do Security.salt no seu app/config/core.php. A partir dai nós vamos construir um esquema de banco de dados simples para desenvolver nossa aplicação. Execute os seguinte comandos SQL em seu banco.
Estas são as tabelas que você vai estar usando para fazer o resto de sua aplicação. Uma vez definida a estrutura das tabelas do banco nós podemos começar a cozinhar. Use o cake bake para criar rapidamente seus modelos, controladores e visões.
Para usar o cake bake, chame “cake bake all” e isto vai listar as 4 tabelas que você inseriu no MySQL. Selecione “1 (Group).”, e siga as instruções. Repita o mesmo para as outras 3 tabelas, então você tera gerado os 4 controladores, modelos e suas visões.
Evite usar Scaffold aqui. A geração de ACOs (Controle de acesso de objetos) vai ser seriamente afetada se você construir os controladores com o recurso de Scaffold.
Enquanto estão sendo gerados os Modelos, cake vai automagicamente detectar as associações entre seus Modelos (ou relacionamento entre as tabelas). Deixe o cake produzir os corretos hasMany (Tem muitos) e belongsTo (Pertence a) associações. Se você for solicitado para escolher hasOne (Tem um) ou hasMany (Tem muitos), de um modo geral, você vai precisar somente de relacionamentos hasMany para este tutorial.
Deixe sem admin routing por enquanto, sem eles o assunto já é complicado o suficiente. Esteja certo de não adicionar o Componente Acl nem o Componente Auth em nenhum dos controladores que você está criando. Nós vamos fazer iso em breve. Agora você deve ter modelos, controladores e visões para as tabelas users, groups, posts e widgets.
Agora já temos uma aplicação CRUD funcionando. O Bake deve ter configurado todas as associações de que precisamos (se não tiver, inclua as associações de seus models agora). Há algumas outras pequenas coisas que precisam ser adicionadas antes de podermos adicionar os componentes Auth e Acl. Primeiro adicione uma ação de login e logout ao seu UsersController.
Não precisamos nos preocupar em adicionar nada para fazer hash das senhas, uma vez que o AuthComponente faz isto automaticamente para nós ao criar/editar usuários e quando eles efetuarem login, uma vez que esteja tudo configurado corretamente. Além disso, se você fizer hash de suas senhas manualmente, o AuthComponent simplesmente não será capaz de processar o login de seu usuário, uma vez que ele irá fazer hash de novo e assim as senhas não irão corresponder.
A seguir, precisamos fazer algumas modificações ao AppController. Se você não tiver um arquivo /app/app_controller.php, crie-o. Perceba que este controller fica em /app/ e não em /app/controllers/. Como queremos que todo o nosso site tenha o controle definido pelo Auth e Acl, vamos referenciá-los no nosso AppController.
Antes de configurarmos as regras de ACL, vamos precisar adicionar alguns usuários e grupos. Com o AuthComponent sendo usado, nós não vamos conseguir acessar quaisquer de nossas actions, uma vez que não estamos logados. Assim, vamos adicionar algumas exceções ao AuthComponent que vão nos permitir criar alguns usuários e grupos. Adicione o seguinte em ambas as classes GroupsController e UsersController:
Estas declarações dizem para o AuthComponent permitir acesso público a todas as actions. Isto é apenas temporário e será removido quando tivemos alguns usuários e grupos cadastrados em nossa base de dados. Mas só não adicione seus usuários e grupos ainda.
Antes de criar quaisquer usuários ou grupos, nós queremos conectá-los ao Acl. Entretanto, no momento ainda não temos nenhumas tabelas de Acl de forma que se você tentar visualizar quaisquer páginas neste exato momento você vai receber uma mensagem de erro de tabela faltando ((“Error: Database table acos for model Aco was not found.”). Para remover estes erros, precisamos executar um arquivo de esquema. Usando console Schema, execute o seguinte:
Este esquema irá lhe perguntar sobre a criação e remoção de tabelas. Diga sim para remover e criar as tabelas.
Se você não tiver acesso ao shell de linha de comando, ou se estiver tendo problemas ao utilizar o console, você pode executar o arquivo de sql encontrado em /caminho/do/app/config/sql/db_acl.sql.