MNet e Hosts remotos na autenticação

Este artigo trata de programação direta no banco de dados. Se você não é familiarizado com banco de dados e programação entre em contato com um especialista.

Redes MNet é uma funcionalidade adicionado no Moodle 1.8 e é uma forma do Moodle poder compartilhar seus usuários com outros sistemas. Assim um usuário do Moodle possui seus dados sincronizados com uma base de dados externa e principalmente, a alteração da senha só acontece no sistema externo e este é responsável pela sincronização com o Moodle.

Então na tabela mdl_user foi adicionado uma coluna chamada mnethostid. O campo mnethostid é referente ao campo id da tabela mdl_mnet_host. O valor padrão desta coluna é encontrado na variável global $CFG->mnet_localhost_id.

Para você acessar a lista de servidores remotos, você precisa acessar em seu Moodle a URL http://[URLMOODLE]/admin/mnet/peers.php e que não existe um menu que o leve a ele. Ao acessar você verá apenas um HOST que é o "Todos os hosts" e se você tentar cadastrar via formulário terá problemas grandes quando for pedido a Chave Publica deste HOST que requer um conhecimento avançado de openssl. E não vamos precisar disso.

Ta Kraus! Quando precisarei trabalhar com MNet?

Existe vários usos do MNet, mais o principal é quando se necessíta que as alterações de senha só devem acontecer em um backend externo e não deve ser feito no Moodle.

Também há como usar MNet para sincronizar usuários em cursos, baseado em sistemas externo, incrição remota, etc...

Então vamos por a mão na massa...

Primeiro via admin do banco de dados vamos adicionar um novo valor:

Só é necessário preencher os campos wwwroot, ip_address e name.

O SQL é:

INSERT INTO `mdl_mnet_host` (
         `id`, `deleted`, `wwwroot`, `ip_address`, 
         `name`, `public_key`, `public_key_expires`, `transport`, 
         `portno`, `last_connect_time`, `last_log_id`, `force_theme`, 
         `theme`, `applicationid`, `sslverification`) 
     VALUES (
         NULL, '0', 'http://www.salasead.com.br', '46.101.151.137', 
         'Salas EAD', '', '0', '0', 
         '0', '0', '0', '0', 
         NULL, '1', '0');

Agora só listar os valores, ou entrar em http://[URLMOODLE]/admin/mnet/peers.php e ver qual o ID deste MNet.

Temos o numero 3 que foi adicionado. Então agora for criar um usuário, ou atualizar os usuários, a coluna mnethostid deve receber este valor.

Exemplo abaixo adiciona um usuário com MNet gerenciado do Moodle:

$newUser = new stdClass();
$newUser->auth         = 'manual';
$newUser->firstname    = 'Nome';
$newUser->lastname     = 'SobreNome';
$newUser->username     = 'loginDoUsuario';
$newUser->password     = md5( 'senha' );
$newUser->email        = 'teste@teste.com';
$newUser->confirmed    = 1;
$newUser->mnethostid   = $CFG->mnet_localhost_id;
$newUser->lang         = $CFG->lang;
$newUser->maildisplay  = 1;
$newUser->timemodified = time();
$newUser->lastip       = getremoteaddr();
$newUser->id = $DB->insert_record( 'user', $newUser );

Veja como aparece o Perfil do usuário neste caso:

Veja que aparece o botão "Modificar perfil". Agora, se no lugar de mnethostid colocar o ID que foi adicionado, como abaixo:

$newUser = new stdClass();
$newUser->auth         = 'manual';
$newUser->firstname    = 'Nome';
$newUser->lastname     = 'SobreNome';
$newUser->username     = 'loginDoUsuario';
$newUser->password     = md5( 'senha' );
$newUser->email        = 'teste@teste.com';
$newUser->confirmed    = 1;
$newUser->mnethostid   = 3; // ID gerado no mdl_mnet_host
$newUser->lang         = $CFG->lang;
$newUser->maildisplay  = 1;
$newUser->timemodified = time();
$newUser->lastip       = getremoteaddr();
$newUser->id = $DB->insert_record( 'user', $newUser );

O perfil aparece assim:

Legal né? Você também pode editar os 

Fique por dentro de nossas novidades, ideias e atualizações