Drupal:personalizando o registro do usuário de fluxo de trabalho para comunicação com o outro webapp

StackOverflow https://stackoverflow.com/questions/2119005

  •  22-09-2019
  •  | 
  •  

Pergunta

Eu sou novo para Drupal6 e passou um longo tempo na busca de como implementar o seguinte recurso, sem sucesso:Eu uso o Drupal como front-end/doc conselho para um web-app.Eu quero o espelho de todas as contas de utilizador de criação, atualização e a exclusão neste web-app, i.é.enviar nome de usuário e senha.

Eu comecei a programar um pouco módulo de execução hook_user (http://api.drupal.org/api/function/hook_user/6), mas eu ainda estou querendo saber sobre várias pergunta sobre este gancho:

1) eu não consigo encontrar um doc sobre o $account campos, e, portanto, não sei como recuperar o nome de usuário e senha.
2) O insert operação informa que "A conta de utilizador está a ser adicionado".É que, acionado quando o usuário consulta de uma conta ou quando o seu/sua pendentes de criação de conta foi aprovada?
3) gerenciamento de usuários sobre o 'escravo' webapp é feito através de uma URL interface.Eu só sei o header("Location: http://webapp/users/add?user=martin&pwd=bla") PHP primitivo, mas eu temo que isso vai fazer um redirecionamento, em vez de apenas batia a página de destino e continuar o fluxo de código.Alguma sugestão?

Talvez alguns de vocês já programado como um módulo, ou teria links para documentação mais?
Obrigado antecipadamente,
Martin

Foi útil?

Solução 4

Aqui está a peça final de código que funciona. Observe que a senha é recuperada MD5ified, para que o WebApp escravo também possa fazer isso:

function mirror_registration_user($op, &$edit, &$account, $category = NULL) {
 $cmd = 'http://www.example.com/register?name='.$account->name.'&pass='.$account->pass;

 if($op == 'insert'){
$cmd .= '&op=insert';
drupal_http_request( $cmd );
 }
 else if($op == 'delete'){
$cmd .= '&op=delete';
drupal_http_request( $cmd );
 }
 else if($op == 'after_update'){ // 'update' is a "before update event"
$cmd .= '&op=update';
drupal_http_request( $cmd );
 }
}

Observação: No nosso caso, o registro requer aprovação do administrador. Nesse caso, há um evento de 'atualização'. O evento 'Insert' é acionado assim que o usuário consulte uma conta.

Informações para outros novatos:

  • Ao tentar depurar o código, pode -se ecoar $ CMD para ter o conteúdo de $ CMD escrito no canto superior esquerdo da página a seguir.
  • Se você escrever código PHP crapinha e obter uma página em branco ao usar o gancho, poderá adicionar ao drupal/index.php as seguintes chamadas: error_reporting (e_all); ini_set ('display_errors', true); ini_set ('display_startup_errors', true); Isso permite ter informações de depuração.

  • Outras dicas

    Dando um passo para trás e olhando para o quadro geral, você tem várias opções.

    1. Use OpenID (há um módulo DRUPAL CORE para ele) para ambos os sites
    2. Use LDAP (há um bom módulo de contribuição Drupal para ele)
    3. Veja outros módulos oferecem compartilhamento de login de usuários com outros aplicativos (como http://drupal.org/project/phpbb ou http://drupal.org/project/moodle ou muitos outros) para inspiração
    4. Peça ao seu aplicativo da web usar a tabela de usuários do Drupal. Isso é relativamente fácil, pois o nome de usuário está lá em texto simples e a senha é apenas MD5'ED (para que não sejam sais ou qualquer coisa para enlamear as águas).

    Basicamente, hook_user é errado.O que você precisa fazer é usar hook_form_alter para alterar o '#validar' parâmetro do formulário de login.Dessa forma, validar é passado para a função no seu módulo onde você está recebendo $form_values['username'] e $form_values['senha'].Você que passar na sua URL através de enrolar.Se ela retorna corretamente, devolver nada.Se não retornar, use form_set_error e ele vai negar o login.

    Boa sorte!

    Para apenas recuperar uma resposta de uma página, você pode usar drupal_http_request ()

    E uma nota de segurança geral, verifique se você está autenticando e validando as solicitações entre aplicativos. Passar senhas em texto simples via GET Parâmetros sobre o HTTP também me deixa um pouco enjoado, mas não conheço seu aplicativo configurado.

    Licenciado em: CC-BY-SA com atribuição
    Não afiliado a StackOverflow
    scroll top