Informática Numaboa - Tutoriais e Programação
Plugin de Autenticação para o Joomla 1.5
Sex 26 Jun 2009 11:08 |
- Detalhes
- Categoria: Joomla
- Atualização: Segunda, 02 Julho 2012 19:41
- Autor: vovó Vicki
- Acessos: 7183
Os novos plugins de autenticação do Joomla 1.5 tornaram o sistema muito mais flexível e seguro. Agora é possível autenticar usuários das mais diversas origens - da base de dados interna do Joomla, do sistema Open ID, de um diretório LDAP, da base de dados do GMail ou qualquer outro sistema de autenticação que possa ser acessado usando PHP.
Neste tutorial veremos como criar um plugin de autenticação. É apenas um exemplo bem básico, com ênfase nos aspectos mais importantes... o assim chamado "caminho das pedras" para se criar um plugin personalizado.
A classe plgAuthenticationAutentica
Para criar um plugin Joomla 1.5 não precisamos começar do zero - basta usar a classe JPlugin como modelo. Quando criamos uma classe filha, ela herda todas as características da classe mãe. O novo objeto fornece toda a infraestrutura e todas as funcionalidades básicas e, a partir daí, só precisamos criar os métodos necessários para gerenciar o evento desejado.
Para criar um plugin de autenticação, o nome da classe filha precisa começar com plgAuthentication e terminar com o nome que você escolher. No nosso caso vamos usar o nome altamente criativo de Autentica :blush:, ou seja, nossa classe se chamará plgAuthenticationAutentica.
Esta classe terá dois métodos muito simples: constructor e onAuthenticate().
O construtor
O construtor precisa de um parâmetro, o qual deve ser passado por referência. Tudo o que o construtor faz é passar este parâmetro para o construtor da sua classe mãe. O nome deste método construtor é muito importante: deve ter o mesmo nome da classe. Veja abaixo:
O construtor da classe mãe vai nos fazer o favor de atrelar nosso observador de eventos (o plugin) à ocorrência (o despachador de eventos).
Lidando com o evento
Quando um usuário estiver se autenticando, queremos capturar e tratar este evento específico. Quando isto ocorre, o método que é chamado pelo sistema é o onAuthenticate(). Este método precisa de três parâmetros: nome do usuário, senha e uma referência a um objeto do tipo JAuthenticationResponse. Com estes parâmetros o método vai poder determinar se o nome do usuário e a senha são uma combinação válida e vai poder retornar o resultado obtido através do objeto JAuthenticationResponse.
Só a título de exemplo, a verificação de autenticidade que vamos fazer é muito simples. Vamos verificar se o nome do usuário consta na tabela de usuários e, caso tenha sido encontrado, vamos checar se a senha deste usuário é o nome dele ao contrário. Veja a seguir:
Este código bobinho pode ser substituído por um mais parrudo, com uma autenticação mais consistente. Só depende de você e dos seus conhecimentos de PHP
Depois de determinarmos o que ocorreu com a autenticação podemos criar respostas de acordo com o resultado:
Para as falhas, definimos duas propriedades do objeto resposta: as propriedades status e error_message. Existem três valores de status que são reconhecidos - JAUTHENTICATE_STATUS_SUCCESS, JAUTHENTICATE_STATUS_FAILURE e JAUTHENTICATE_STATUS_CANCEL. Para maiores informações sobre valores de status consulte a biblioteca libraries/joomla/user/authentication.php.
A propriedade error_message é definida caso a autenticação falhe. No nosso plugin determinamos dois valores possíveis: 'Usuário não existe', que indica que o usuário não foi encontrado na base de dados, e 'Nome e senha inválidos', indicando que a senha não é o inverso do nome. Por uma questão de segurança, o usuário só vai receber a mensagem 'Nome e senha inválidos' ou logar sem receber mensagem alguma. O Joomla pode ser configurado para que estas mensagens de erro sejam colocadas num arquivo de log para facilitar o debug.
Opcionalmente, se a autenticação funcionar, podemos colocar informações da nossa fonte de autenticação na resposta. Neste exemplo estamos buscando informações do usuário na base de dados do Joomla e guardando seu endereço de email no objeto resposta. Para mais informações sobre o tipo de dado que pode ser colocado num objeto resposta consulte a API do Joomla. Estes dados podem ser usados quando se quiser criar usuários automaticamente ou realizar outras tarefas de login.
O código completo
Definidos os dois métodos que são necessários para a nossa classe, podemos colocá-la num arquivo PHP que tenha o mesmo nome do plugin. Como o plugin foi chamado de Autentica, o arquivo receberá o nome de autentica.php. Segue a listagem completa do código:
Note que, no início do código, importamos a definição da classe JPlugin com:
O manifesto de instalação XML
O arquivo de instalação XML indica como o programa instalador do Joomla deve proceder. Neste caso, é bastante simples:
Esta é praticamente a cópia do arquivo xml do exemplo do Joomla. Observe apenas alguns detalhes.
- O atributo grupo do elemento raiz: para plugins de autenticação, o atributo grupo precisa ter o valor 'authentication'. Isto faz com que o Joomla trate o plugin como um plugin de autenticação.
- O atributo versão do elemento raiz: 1.5 indica que se trata de um plugin escrito para Joomla 1.5 que deve funcionar sem o modo legado.
- O nome 'Authentication - Autentica': você NÃO precisa seguir esta convenção de nome, mas fica melhor no gerenciador de plugins quando se segue o padrão.
- O atributo filename: este tem um atributo chamado plugin, cujo valor é o nome do nosso plugin (plugin="autentica").
Isto é tudo! Agora é só zipar os dois arquivos (autentica.php e autentica.xml) para criar um pacote de instalação automática. O texto original deste HOWTO você encontra documentação online do Joomla 1.5.
Grande abraço
vó Vicki