domingo, 20 de março de 2011

Redirecionar Login do Moodle Para Um Sistema Externo

 Quanto o Moodle é integrado com outro sistema, o formulário de login pode ser desativado se os usuários logam no sistema externo e depois acessam o Moodle. Neste caso, o Moodle deve ser customizado para redirecionar à página de login do sistema externo todas as vezes que os usuários clicarem no link Acesso no ambiente do Moodle.

Essa implementação deve ser feita por meio de alteração do código PHP do Moodle.

Para redirecionar o login do Moodle para um sistema externo, siga os seguintes passos:

1° Passo  - Abrir o arquivo que processa o login
    Abra em um editor de texto  o seguinte arquivo: 
    $CFG->wwwroot/login/index.php

2° Passo  - Inserir URL do sistema externo
     No final  do arquivo, antes da linha do código
print_header("$site->...
aproximadamente na linha 319, insera seguinte trecho do código:
header( 'Location: http://NOVO_ENDERECO_LOGIN') ;

Substitua o texto  NOVO_ENDERECO_LOGIN pelo url de login do sistema externo.

Esse trecho do código interrompe e execução e redireciona para o site do  sisteme externo.

3° Passo  - Gravar alteração do arquivo
    Para que a alteração seja efetivada, grave o arquivo. Feito isso, o Moodle redireciona os usuários para logarem em um sistema externo.

    Com essa alteração, o formulário de login do Moodle fica desativada. Esse procedimento é recomendado em caso de integração em que  o sistema externo assume a autenticação dos usuários.

22 comentários:

  1. Olá,

    Estou tentando fazer a validação do usuário moodle no meu sistema de ERP. Como devo proceder? O usuário faz login no meu sistema e eu consigo exibir as disciplinas que eles está matriculado etc, mas quando ele clica na disciplina, o moodle não sabe que ele está logado. Seria de muita ajuda!!

    ResponderExcluir
  2. Este comentário foi removido pelo autor.

    ResponderExcluir
  3. Para integrar o login do Moodle com o ERP ou um sistema externo, siga os seguintes passos:

    1)Envie os dados do usuário pelo método GET para o Moodle. É recomendável usar um mecanismo de codificação dos dados para não expor os parâmetros.

    2)Crie um script PHP para receber os parâmetros enviados pelo método GET. Esse script deve cadastrar usuário caso ainda não exista. Faça autenticação automaticamente no Moodle usando a função complete_user_login da biblioteca do Moodle.

    3)Como mecanismo de segurança, define que o script só pode ser invocado pelo IP do do sistema ERP

    ResponderExcluir
  4. Olá meu caro! na instituição onde trabalho, a direção decidiu que o login dos alunos no moodle se daria através da página do site da escola. Terá um formulário que ao ser digitado os dados do usuário e senha, ele já autentique no moodle. Sou iniciante em Php ( Descobri o prazer de trabalhar com Moodle tem poucos meses , venho da área de redes hehe) E esta dica que você deu acima funciona no meu caso? como eu realizo estes procedimentos? Agradeço muito sua ajuda. Sucesso!

    ResponderExcluir
    Respostas
    1. Só para constar: Percebi que acima você cita que quando o usuário clicar em acesso ele vai ser redirecionado para o sistema externo que se responsabilizará pelo login. No meu caso o login poderá ser realizado tanto da página externa do colégio para o moodle, quanto do próprio login do LMS. Visto que o aluno acessa o site para verificar seus dados, a instituição achou mais cômodo ele também ter a possibilidade de acessar por lá o moodle, porém permitindo aquele que quiser logar diretamente pelo AVA, ter esta liberdade. Obrigado!

      Excluir
  5. Thiago, para você logar no Moodle a partir de um outro site, você precisa implementar a seguinte solução:

    1) Gere o formulário de captura de login e senha dentro do site onde o aluno deve efetuar o login.

    2) Gere o script que faz a captura de login e senha digitada no formulário e efetue a autenticação. Esse script deve autenticar em alguma base de dados. Pode ser até a do Moodle.

    3) Gere a sessão de usuário no Moodle.

    4) Redirecione ao formulário de acesso do site externo quanto o usuário clicar no link acesso do Moodle. Esse procedimento é explicado no post.

    O caminho mais indicado para implementar essa solução consiste em criar um plugin de autenticação no Moodle. A outra alternativa consiste em criar um script do Moodle que capture o login e a senha digitada no formulário do site que processe a autenticação e gere a sessão do usuário. Uma alternativa para gerar esse script é clonar o arquivo login.php do Moodle e customizar o código. Isso requer conhecer um pouco do API do Moodle.

    ResponderExcluir
    Respostas
    1. Muito obrigado Badiu! vou estudar a melhor forma segundo o que você me instruiu. Vlw!

      Excluir
    2. Este comentário foi removido pelo autor.

      Excluir
    3. Eu preciso usar a autenticação do sistema que já foi feita a primeira vez e quando clicar no link do moodle dentro do sistema acadêmico o usuário acessa o moodle sem ter que logar novamente.
      Como eu vou gerar a sessão de usuário no moodle?

      Excluir
  6. É mais simples ir em Administração do site ▶ Plugins ▶ Autenticação ▶ Gerenciar autenticação

    Após isso alterar o valor em "URL alternativa para login". Ali também tem as instruções de como criar esta nova tela.

    ResponderExcluir
  7. Badiu,

    Você conhece algum plugin de autenticação com um OPENID PROVIDER?
    queria apenas que esse plugin fizesse o serviço do CONSUMER OPENID.
    Encontrei alguns mas todos são para versões anteriores ao 2.4.
    Se não conhecer, sabe como fazer ?

    ResponderExcluir
    Respostas
    1. Thiago,
      Nunca testei nenhum tipo de plugin que faz esse tipo de autenticação. Caso esse plugin não exista no repositório de plugin, é possível implementar um que faça isso.

      Excluir
  8. Gostaria de saber como faço para fazer o login e autenticação pelo moodle e se o usuario logar ele entra na página que eu criei.

    Fiz o redirecionamento, porém o usuario aparece como não logado

    ResponderExcluir
  9. Olá, estou tendo problema para carregar o moodle dentro em um FRAME, ele perde a sessão e pede o login novamente.

    Alguém sabe o que poderia estar acontecendo e como poder resolver isso ???

    OBS: se eu carregar o moodle sem o frame, funciona perfeitamente.

    Abraço.

    ResponderExcluir
  10. Cara isso é questão de segurança do navegador, ele não deixa, não recomendo mais tem como desabilitar.
    Procura sobre p3p meta tag

    ResponderExcluir
    Respostas
    1. Não entendi bem a sua questão.
      O que você está sugerindo desabilitar. Contextualize a questão.

      Excluir
  11. Prezados, estou tentando aplicar a opção de url alternativa porém sem sucesso. Estou usando a versão 2.9 do Moodle e nela não conta a linha de código citada no arquivo $CFG->wwwroot/login/index.php como informado no começo do post.

    Optei por inserir a url diretamente nas configurações de plugin de autenticação via web porém o endereço foi digitado de forma errada e não consigo mais acessar o moodle.

    Tentei atualizar esse valor diretamente no banco, na tabela mdl_config campo alternateloginurl, mas mesmo atualizado o endereço antigo continua sendo chamado.

    Como faço para retornar as configurações originais de login direto no moodle?

    ResponderExcluir
    Respostas
    1. Lino poderia auxiliar melhor quanto ao código da página de autenticação e validação com o Moodle, usando a função complete_user_login. Não ficou claro a execução do passo a passo de como realizar autenticação a partir de um banco externo.

      Excluir
  12. Teria como eu acessar o moodle de um sistema externo?

    ResponderExcluir
  13. Gostaria de integrar o moodle a um sistema contruído em C# onde toda a gestão dos usuários seria do lado do sistema. Isso é possível?

    ResponderExcluir