• Cadastro
  • Fóruns
  • Manual
  • Tradução
  • Tutoriais
Início

Pesquisa no site

Google

Itens ativos

  • computed field
  • MULTILINGUAGENS
  • internacionalization, vistas e view field
  • arquivos css temporarios.
  • Galeria de Fotos
  • Preciso de pessoa com experiência em Drupal
  • Como ter opção para publicar ou não comentários
  • Estudo de caso, galerias com subcategorias de imagens
  • URLs, dúvida no caminho
  • Convertendo conteúdos (nodes) de page para book!
more

Posts mais lidos hoje

  • Como Criar um Tema Para Drupal 6 - Parte 01
  • Tutoriais
  • Sobre o Drupal
  • arquivos css temporarios.
  • Manual
  • Galeria de Fotos
  • Tutorial - Criando um site com caixas de notícias
  • Como Criar um Tema Para Drupal 6 - Parte 02
  • Canal Drupal-BR de IRC
  • Preciso de pessoa com experiência em Drupal

Login do usuário

  • Criar uma conta
  • Recuperar senha

Assine o RSS do Drupal-BR

RSS dos itens mais ativos

RSS do conteúdo

RSS dos comentários

Início

Autenticação através de um banco de dados externo no Drupal 6

Na empresa em que trabalho desenvolvi um módulo para permitir o login em um site Drupal 6 baseado nas informações presentes em um banco de dados Oracle externo. Abaixo segue o código das principais funções do módulo, que aqui chamarei de modulox. O módulo é bem simples e omiti apenas as funções para acesso ao banco de dados externo e a função que define o perfil do usuário baseado nas informações do banco de dados externo.

//implementação do hook_form_alter
//esta função altera qual função irá validar o formulário de login

function modulox_form_alter(&$form, $form_state, $form_id){
//esta expressão verifica se é o formulário que esta sendo submetido é o de login.
//Em caso afirmativo define uma nova função de validação
if (is_array($form['#validate']) && ($key = array_search('user_login_authenticate_validate', $form['#validate'])))
$form['#validate'][$key] = 'modulox_login_validate';//funcao que irá validar o formulário de login

}

//Esta função irá validar os dados submetidos pelo formulário de login
function modulox_login_validate($form, &$form_state) {

// obtem usuário e senha do formulario de login
$values = $form_state['values'];
$name = $values['name'];//usuário
$pass = $values['pass'];//senha

//Verifica se o usuário que está tentando logar é o administrador. Em caso positivo executa a
//autenticação normal através da função user_authenticate().
$result = db_query("SELECT uid FROM {users} WHERE name = '%s' AND uid = '1'", $name);
if ($account = db_fetch_object($result)) {
user_authenticate($values);
return;
}

/*
Aqui é feito o acesso ao banco de dados externo.
No caso do meu sistema, eu obtinha a senha criptografada do banco de dados externo para o usuário $name e armazenava esta senha na variável $senha.
*/

if(/*Aqui vai uma expressão que retorna verdadeiro se a senha do formulário de login ($pass) for a mesma do banco de dados externo ($senha) */){
$account = user_external_load($name);
if (isset($account->uid)) {
//Se o usuário já esta gravado no banco do Drupal,aqui é feito seu login
user_external_login($account);
}
else {
//Se este é o primeiro acesso do usuário, aqui ele gravado no banco de usuários do Drupal
// com uma senha qualquer e é feito seu acesso.
user_external_login_register($name, 'sgelogin');
}

}
else{
//Se a senha for inválida, aqui é feita a tentativa de logar pelo banco de usuários do Drupal.
user_authenticate($values);
}

}

Espero que esta dica seja útil.

Celso

Enviado por celsog em 15/06/2009 - 15:01
  • Se logue ou se registre para poder enviar comentários
  • 311 leituras
Designimage

Este site é feito, orgulhosamente, com Drupal.