Nesta dica pretendo explicar como fazer uma simples autenticação usando o framework
cakePHP.
1. O primeiro passo é criar suas tabelas, no meu exemplo estou usando o MySQL. Crie as tabelas que serão usadas:
CREATE TABLE usuarios (
id integer auto_increment,
nome char(50),
login char(50),
password char(50),
grupo_id integer,
PRIMARY KEY (id)
);
CREATE TABLE grupos (
id integer auto_increment,
nome char(50),
PRIMARY KEY (id)
);
2. Adicione o componente de autenticação no
app_controller de sua aplicação. Edite o arquivo
app/app_controller.php e acrescente:
var $components = array('Auth');
3. Usando o cake bake crie: controllers, visões, modelos de: usuários, grupos.
4. Como não estamos usando a tabela com nome "users", devemos alterar o padrão com informações de nossa tabela.
No app_controller devemos acrescentar:
function beforeFilter(){
$this->Auth->userModel='Usuario';
$this->Auth->fields=array(
'username'=>'login',
'password'=>'senha'
);
}
5. Devemos criar no controller dos usuários as funções para login e logout.
Acrescente em app/controller/controllers/usuario_controller.php:
function login(){
}
function logout(){
$this->Session->setFlash('Ate +');
$this->redirect($this->Auth->logout());
}
6. Devemos criar a visão para a tela de login que o usuário usará para autenticação.
Crie o arquivo dentro de views/usuarios/login.ctp:
<h2>Login</h2>
<?php
echo $form->create('Usuario',
array('url' => array(
'controller' => 'usuarios',
'action' =>'login')));
echo $form->input('Usuario.login');
echo $form->input('Usuario.senha',array('type'=>'password'));
echo $form->end('Login');
?>
7. Após seguir estes passos seu sistema já autenticará quando você tentar acessar alguma função.
Para que você tenha permissão de acessar todas as funções para poder acrescentar um usuário para teste, edite o arquivo app/app_controller.php e dentro de "beforefilter" coloque:
$this->Auth->allow('*');
Dessa forma será possível acrescentar usuários.
Após acrescentar os usuários, edite novamente este arquivo colocando as permissões para um usuário sem autenticação. Neste caso estarei permitindo que apenas veja o index visualize os dados.
$this->Auth->allow('index','view');
É isso! Obrigado.