Criando um módulo Drupal que redirecione o usuário após o login para uma página específica dependendo do papel.

Opa, tudo bom ?

Muitas pessoas tem dificuldade de usar módulos de redirecionamento no drupal, entao mostrar como seria para você desenvolver o seu próprio módulo utilizando a HOOK_USER, que irá redirecionar o usuário para uma página que iremos definir dependendo do papel atribuido a ele.

Primeiro vamos ao nosso arquivo projeto_redirecionador.info, que identifica o nosso módulo na listagem:

 

; $Id$
name = Redirecionador de login
description = "modulo que ira redirecionar o usuario depois de logar"
core = 6.x
package = Lithic

 

Beleza, com isso o nosso módulo já irá aparecer na listagem de módulos, agora precisamos criar o módulo em si. Para isso vamos ao nosso arquivo projeto_redirecionador.module:

 

<?php
 
  //Utilizaremos o hook_user para captarmos o momento em que o usuário está se logando no site.
  function projeto_redirecionador_user($op, &$edit, &$user, $category = NULL){
      if($op == 'login') {
        global $user;
        //pegando a url base para o redirecionamento.
        global $base_path;
        $var = $_GET['q'];
       
        // Estamos pegando a URL para saber se este acesso não se trata de um reset de password, pois o reset de password deverá ser enviado para a página de edição do usuario.
        $url = preg_match("/user\/reset/",$var);

        //se não for um reset de password.
        if(!($url)){
            //se for um login normal.
            foreach ($user as $key => $value) {
                $usuario[$key] = $value;
            }
            //se o usuário estiver no papel de cliente.
            if (in_array('cliente', $usuario['roles'])) {
                //setando o endereço que o usuário será redirecionado.
                $endereco = $base_path . "cliente";
                //redirecionando o usuário para a página.
                header("Location:$endereco");
                exit();
            }    
            //fazendo o mesmo, porem se o usuário for administrador.
            if (in_array('administrador', $usuario['roles']) ) {
                $endereco = $base_path . "administrardor";
                header("Location:$endereco");
                exit();
            }     
           
        }    
       
      }
  }
 
?>

 

Bom galera, com isso o seu módulo já estará prontinho para funcionar.

 

Qualquer coisa é só falar.


Nossos Serviços

  • Sistemas e Sites
  • Aplicativos Desktop
  • Aplicativos Mobile
  • Web Analytics

Contato

+55 21 32427310

+55 21 98880040

Redes Sociais

Quem Somos

Esta inovadora empresa nasceu para proporcionar aos nossos clientes novas tecnologias e serviços diferenciados...