Pular para o conteúdo principal

Tela personalizada de login do Moodle

As vezes queremos ou precisamos sair do tradicional e necessitamos fazer uma tela de login personalizada no Moodle. Em uma dessas necessidades que surgiu esse POST em que vou explicar como fiz uma tela personalidade para utilizar no Moodle. Lembrando sempre que existem inúmeras formas de se fazer a mesma coisa na programação, essa foi a forma que eu encontrei. Vamos lá:

Primeiramente vamos contextualizar. Por padrão a tela de login do Moodle é como na imagem abaixo, ou ainda pode estar no index da página em um bloco de acesso. (Clique na imagem para ampliar)

1º Criando o arquivo login.php
Criei o arquivo PHP com os campos de usuário e senha e dei a ele o nome de login.php. Coloquei esse arquivo na pasta raiz do Moodle.  A grande questão desse arquivo é no parâmetro action do formulário. Ele aponta para o caminho login/index.php" que é o caminho de login tradicional do Moodle. Veja na imagem abaixo:



2º Usando o método isloggedin(); do Moodle
Esse método faz uma verificação se existe ou não ou sessão criada para essa conexão, ou seja, verifica se você está ou não logado retornando TRUE ou FALSE. Com ele fiz uma verificação no index.php que está na raiz do Moodle. Caso o usuário estiver logado ele exibirá a página inicial como usuário autenticado, caso contrário exibirá o arquivo login.php que criamos anteriormente. Veja como ficou:

Note que na linha 266 eu faço a verificação com o método isloggedin(); e caso não esteja logado na linha 268 eu faço um require de login.php.

3º Recebendo os dados passados via POST no arquivo login/index.php
Como passei os dados via método POST para o arquivo login/index.php criei 2 variáveis ($usuario e $senha) e preenchi elas com os valores passados pelo formulário. Lembrando que como o foco da postagem não é tratar SQL INJECTION, e não fiz o tratamento, mas é altamente aconselhado tratar essa falha de segurança tanto no método POST quanto no método GET. Outro detalhe, usei o @ a frente das variáveis apenas para esconder o erro de variável não preenchida: Notice: Undefined variable ou Undefined. Erro comum para quem já programa em PHP. Esse erro, para não sabe, é corrigido com o método isset() do PHP, porém não vou entrar em detalhes.



4º O pulo do gato: Preenchendo o objeto $frm para efetuar o login
Aproximadamente na linha 111 do arquivo login/index.php acontece o envio dos dados digitados no formulário para serem autenticados. Os dados são enviados através do objetivo $frm que já está criado e com os atributos $frm->username e $frm->password. Nesse ponto fiz a verificação das variáveis que criei  ($usuario e $senha) se elas estavam ou não preenchidas. Para isso usei o método isset() do PHP. Caso elas estejam preenchidas quer dizer que os dados foram passados pelo arquivo login.php que criamos. Dessa forma preencho os atributos frm->username e $frm->password com usuario e senha respectivamente. Veja na imagem abaixo:




Dessa forma criamos um login de forma alternativa e personalizada sem deixar a estrutura do Moodle. Como disse no início da postagem existem várias formas de se fazer a mesma coisa. Essa foi a forma que eu encontrei. 

Se gostou, divulgue o POST, comente e contribua. Se não gostou, comente também e vamos juntos melhorar.

Abraço a todos!






Comentários

  1. Marcelo, qual seu contato?

    ResponderExcluir
  2. Parabéns pelo site.
    Eu já tinha conseguido fazer a tela de login personalizada, estou pesquisando como faço para o retorno de erro quando usuário digita senha ou login errados. Pois aqui ele está retornando para página de login, e não mostra a mensagem.

    ResponderExcluir
    Respostas
    1. E ai Adeilton? Obrigado sempre importante a participação!
      Conseguiu fazer a tela de retorno de usuário ou senha incorretos? Depois vou fazer um post com isso. Você pode validar as informações passadas pelo usuário diretamente no banco de dados e depois fazer a autenticação. Nesse caso será preciso criptografar a senha passada pelo usuário da mesma maneira que sua versão do Moodle. Boa Sorte! Abraços

      Excluir

Postar um comentário

Postagens mais visitadas deste blog

Resolvendo problema na instalação do Moodle 3.1 [mysql_full_unicode_support]

Fala Galera! Recentemente fui instalar a versão do 3.1 do Moodle e me deparei com a seguinte mensagem de erro da instalação: Ou seja, a mensagem está falando que o seu banco de dados foi criado em um formato de arquivos não suportado. Na maioria das vezes a collaction criada automaticamente é LATIN1 e ele está pedindo UTF-8. Para resolver esse problema basta rodar o seguinte SQL em seu banco de dados MySQL. ALTER SCHEMA `NOME_DO_SEU_BANCO`  DEFAULT CHARACTER SET utf8  DEFAULT COLLATE utf8_general_ci; Feito isso prossiga normalmente com sua instalação do Moodle 3.1 e desfrute das novidades que essa versão traz. Espero que tenha gostado e até mais.

Criando campos complementares no perfil de usuário do Moodle

Olá Pessoal, Tudo Bom? O post de hoje é sobre criar campos complementares no perfil de usuário do Moodle. Muitas vezes o perfil de criação de usuário no Moodle não permite inserir informações importantes, por exemplo: RG, CPF, Data de Nascimento, Sexo, entre outras que você desejar. Não é possível inserir já que o formulário não contempla esses campos. Para suprir essa demanda você pode criar campos complementares. Vamos lá! 1º Logado com administrador do Moodle você irá em ADMINISTRAÇÃO DO SITE > USUÁRIOS > CONTAS > CAMPOS DE PERFIL DO USUÁRIO: 2º Dentro de CAMPOS DE PERFIL DO USUÁRIO será necessário criar uma categoria onde você irá criar seus campos complementares. Por padrão o Moodle traz a categoria "Outros Arquivos". Aconselho criar uma nova categoria por questão de organização. Para criar a categoria vá em CRIAR UMA NOVA CATEGORIA DE PERFIL: 3º Basta dar o nome desejado para essa nova categoria. No exemplo usei DADOS PESSOAIS: 4º Cri...

Relatório de alunos matriculados por curso no Moodle em SQL

Olá Pessoal, tudo bem? Hoje vou postar aqui uma consulta em SQL que vai retornar os alunos matriculados por curso no Moodle. Uma consulta simples que irá funcionar no MySQL. SELECT mdl_user.id as ID, upper(CONCAT(mdl_user.firstname,mdl_user.lastname)) as NOME  FROM mdl_role_assignments  JOIN mdl_user ON mdl_user.id = mdl_role_assignments.userid  JOIN mdl_context ON mdl_role_assignments.contextid = mdl_context.id  WHERE mdl_role_assignments.roleid = 5 AND mdl_context.contextlevel = 50 AND mdl_context.instanceid = ID_CURSO  ORDER BY firstname Nessa consulta SQL utilizei as tabelas  mdl_user  (armazena as informações de usuário como nome, id, e-mail, etc),  mdl_role_assignments  (armazena as informações da matricula do usuário no curso) e  mdl_context  (armazena as informações do contexto desse usuário no curso.)  No campo  mdl_context.instanceid deverá será ser utilizado o ID DO CURSO.  Para saber q...