Autenticação com Ion Auth

O Ion Auth é um processo de autenticação bastante difundido e utilizado em sistemas que necessitam de acesso restrito a algum ambiente. O Ben Edmunds fez uma implementação de autenticação com Ion Auth usando CodeIgniter e disponibilizou no GitHub, e nesse tutorial vou ensinar como utilizar essa codificação escrita pelo Ben em seus projetos.

Passo 1 – Download do código-fonte do Ben Edmunds e do CodeIgniter

Faça o download do código-fonte implementado pelo Ben Edmunds através do link abaixo e salve na sua máquina.

https://github.com/benedmunds/CodeIgniter-Ion-Auth

Depois faça o download e a instalação do CodeIgniter.

Passo 2 – Alinhando os arquivos

Agora que você já está com o ambiente preparado e já possui os arquivos do Ben na sua máquina, copie esses arquivos para os seus respectivos diretórios na instalação do CodeIgniter que acabou de fazer.

Os arquivos a serem copiados estão nos diretórios listados abaixo:

  • config
  • controllers
  • language (não é necessário copiar todos os diretórios dentro de language, pode copiar somente portuguese e english)
  • libraries
  • models
  • views

Passo 3 – Criando o banco de dados

Todo sistema de autenticação precisa de um banco de dados para armazenar as informações dos usuários. E para esse tutorial você pode usar as instruções SQL contidas no código do Ben, que estão no diretório ‘sql/ion_auth.sql’ e executá-las no seu gerenciador de banco de dados ou no terminal, o importante é estar com o banco de dados criado.

As instruções SQL criam 4 tabelas:

  • groups: grupos de usuários
  • login_attempts: informações do login
  • users: usuários
  • users_groups: relacionamento usuários-grupos

Após criar o banco de dados, não se esqueça de configurar a conexão no arquivo ‘application/config/database.php’.

Passo 4 – Configurando o ‘default_controller’

Para que seja possível acessar diretamente o ambiente de login ao acessar a URL que responde por esse código-fonte, você precisará fazer uma pequena alteração no arquivo ‘application/config/routes.php’.

Por padrão o ‘default_controller’ vem definido como ‘Welcome’, e você deverá substituir por ‘Auth’, que é o controller que foi copiado dos arquivos do Ben.

Feito isso, você já pode acessar a URL que responde pelo código-fonte desse tutorial em seu ambiente de desenvolvimento. Ao acessá-la você verá um formulário de login, como o que está acostumado a ver em outros sites, porém, sem nenhuma estilização.

Passo 5 – Métodos principais de autenticação do controller Auth

O controller Auth possui vários métodos, uma vez que o exemplo do Ben tem a possibilidade de criar grupos de usuários, ativar e desativar usuário e alguns outros. Veremos a seguir algumas informações sobre os métodos utilizados para autenticação.

__construct

Método construtor onde são feitas as cargas de libraries para banco de dados, validação de formulário e do próprio Ion Auth e de helpers como URL e language, já que o exemplo do Ben é multi-idioma.

Login (login)

Realiza o processo de validação dos dados, fazendo os redirects em caso de erro no login ou em caso de sucesso.

Logout (logout)

Encerra a sessão do usuário, levando-o de volta para a tela de login

Troca de Senha (change_password)

Faz o carregamento da view de troca de senha e o processo de validação da nova senha.

Recuperação de Senha (forgot_password)

Exibe e processa o formulário de recuperação de senha, disparando um email para o usuário.

“Reset” da Senha (reset_password)

É o método acionado através do link enviado por email quando ‘forgot_password’ é executado. Ele carrega e processa o formulário para o usuário inserir a nova senha.

Todos os métodos acima, exceto __construct() utilizam recursos da library Ion Auth, identificada por ‘$this->ion_auth’ no código-fonte do controller.

Para obter os dados do banco, é utilizado um model chamado ‘Ion_auth_model’, que possui os métodos básicos de um CRUD e alguns métodos adicionais para atender ao Ion Auth.

Eu poderia escrever um longo artigo, escrevendo todo o código-fonte para integração com o Ion Auth, mas não faz muito sentido “reinventar a roda”, ainda mais em uma era em que temos bastante colaboração em projetos open source, e o projeto que o Ben compartilhou é bem completo.

Se após ler esse tutorial ainda permanecer com dúvidas, use os comentários para compartilhá-las conosco, e sinta-se à vontade para nos enviar uma mensagem através da fanpage. Teremos o maior prazer em ajudar você com a integração do Ion Auth e qualquer outra dúvida que tiver sobre CodeIgniter.

Bons estudos!!!