sexta-feira, 19 de novembro de 2010

Recuperar Senha de Administrador do Moodle com Programação PHP

O objetivo principal desse poste é desenvolver programação em linguagem PHP, em ambiente do Moodle, que recupere ou altere a senha do usuário administrador do Moodle.
    Então vamos iniciar a programação. Siga os passos a seguir.

1° Passo

Importe a biblioteca de funções do Moodle:

require_once("../config.php");

2° Passo

Receba o parâmetro da senha passado pelo método GET:

$password=$_GET['password'];

//caso for vazio use 12345 como senha padrão
if(empty($password)){$password="12345";}

Caso o parâmetro não for passado, a senha será 12345. Isso indica que a passagem de parâmetro é opcional.

3° Passo
Recuperar id do usuário administrador pelo login:

$sql="SELECT id FROM {$CFG->prefix}user WHERE username='admin'";
 $user=get_record_sql($sql);

if(empty($user->id)){echo "Não existe nenhum usuário cadastrado no Moodle com login admin";exit;}

O login padrão do administrador é admin. Caso tenha mudado isso após a instalação, atualize o novo login no parâmetro SQL. Você pode também  colocar login de qualquer usuário que não seja o administrador para alterar a senha. O processo de alteração da senha é a mesma para qualquer usuário.

4° Passo
Processar alteração na base de dados.

$user->password=hash_internal_user_password($password);
$result= update_record('user', $user);
if($result){echo "Senha alterado com sucesso";}

Nessa etapa, o comando SQL é executado no banco de dados através de funções da biblioteca PDO do ambiente Moodle.

Código Completo

Até então vimos o código em pedaço. Juntando tudo fica assim:
 
<?php
    require_once("../config.php");
    
     //receber parâmetro
    $password=$_GET['password'];
    //caso for vazio use 12345 como senha padrão
     if(empty($password)){$password="12345";}
    
 
 //extrair id do usuário admin pelo login
 $sql="SELECT id FROM {$CFG->prefix}user WHERE username='admin'";
 $user=get_record_sql($sql);

if(empty($user->id)){echo "Não existe nenhum usuário cadastrado no Moodle com login admin";exit;}

//atualizar senha
$user->password=hash_internal_user_password($password);
$result= update_record('user', $user);
if($result){echo "Senha alterado com sucesso";}
    
?>

Implementar no Moodle
Para executar esse código no Moodle, crie uma pasta denominado _extra dentro da raiz da instalação do Moodle. Em seguida, crie um arquivo denominado admin_change_password.php dentro da pasta _extra. Coloque o código php nesse arquivo.

Feito isso, acesse o endereço:
http://[endereço do moodle]/_extra/admin_change_password.php?password=12345

O url já passa o parâmetro da senha que é opcional. É necessário lembrar que caso nenhum parâmetro for passado, o a será 12345. 

Download
Se estiver com preguiça de criar o arquivo e digitar o código, faça download desse exemplo. Descompacte  o arquivo e cole na pasta _extra na raiz do seu Moodle. Caso a pasta _extra não exista ainda, crie-a. Agora faça o teste.

Esse código foi testado na versão 1.9.3 mas pode funcionar em qualquer versão do Moodle que use as funções do PDO para manipular a base de dados.
  

Veja Também:

Recuperar Senha do Administrador do Moodle com Comando SQL

Um comentário:

  1. Cara, obrigado, eu posso dizer que esta diga funcionou diretinho.

    valeuw.

    http://www.aface.com.br

    ResponderExcluir