Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Super_Zica_Man

Criação de Novos Usuários externamente

Recommended Posts

Pessoal,

 

Sou programador Java, tenho uma aplicação e estou criando um sistema para administrar os clientes e a criação de novos clientes. A documentação do software está em uma área restrita na página que utiliza Joomla. Então, eu preciso para todo novo cliente criar um novo usuário no Joomla para ele ter acesso à documentação.

Para fazer essa comunicação eu pensei em fazer uma chamada REST ou WebService à página passando os parametros do novo usuário.

 

Achei essa página que me ajudaria:

http://www.fititnt.org/j15/codigo/joomla/funcao-criar-novo-usuario-joomla-15.html

 

Mas, como não tenho conhecimentos em PHP preciso tirar algumas dúvidas, alguém disposto à me ajudar?

 

Criei o arquivo criacao_usuarios.php

 

<?php

function CreateNewUser($name, $username, $email, $password, $registerDate = NULL, $usertype = 'Registered', $block = '0', $sendEmail = '1', $gid = '18') 
{
global $db;

       $db = & JFactory::getDBO();
       jimport('joomla.user.helper');

       //Make the joomla password hash
       $salt = JUserHelper::genRandomPassword(32);
       $crypt = JUserHelper::getCryptedPassword($password, $salt);
       $joomlapassword = $crypt . ':' . $salt;

       //Table #__users
       //Informations about the user
       $user = new stdClass;
       $user->id = NULL;
       $user->name = $name;
       $user->username = $username;
       $user->email = $email;
       $user->password = $joomlapassword;
       $user->registerDate = registerDate;
       $user->usertype = $usertype;
       $user->block = $block;
       $user->sendEmail = $sendEmail;
       $user->gid = $gid;

       if (!$db->insertObject('#__users', $user, 'id')) 
{
           echo $db->stderr();
           return false;
       }

       //Table #__core_acl_aro
       //Discover what is the last value of value in #__core_acl_aro
       $query = "SELECT value FROM #__core_acl_aro ORDER BY id DESC LIMIT 1";
       $db->setQuery($query);
       $coreaclarolastvalue = $db->loadResult();

       $coreaclaro = new stdClass;
       $coreaclaro->id = NULL;
       $coreaclaro->section_value = 'users';
       $coreaclaro->value = $coreaclarolastvalue + 1;
       $coreaclaro->order_value = NULL;
       $coreaclaro->name = $name;
       $coreaclaro->hidden = NULL;

       if (!$db->insertObject('#__core_acl_aro', $coreaclaro, 'id')) 
{
           echo $db->stderr();
           return false;
       }

       //Table #__core_acl_groups_aro_map
       $coreaclmap = new stdClass;
       $coreaclmap->group_id = $gid;
       $coreaclmap->section_value = NULL;
       $coreaclmap->aro_id = $coreaclaro->id; // maybe just $user->id ?

       if (!$db->insertObject('#__core_acl_groups_aro_map', $coreaclmap)) 
{
           echo $db->stderr();
           return false;
       }

       $CreateNewUserInfo = array($user->id, $user->name, $user->username, $user->email);
       return $CreateNewUserInfo;
}

//This exemple will take data from one post, for example
$username = JRequest::getVar('username');
$name = JRequest::getvar('name');
$email = JRequest::getVar('email');
$password = JRequest::getVar('password');

//This code will call your funcion, then register with your data
$NewUserInfo = CreateNewUser($name, $username, $email, $password, $registerDate);

?>

 

Recebi o seguinte erro:

Fatal error: Class 'JRequest' not found in /home/xxxxx/www/criacao_usuarios.php on line 72

 

O arquivo .php está no raiz do servidor. Devo colocar dentro de alguma pasta do Joomla?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz alguns testes hoje a tarde e consegui fazer o INSERT direto no banco usando a senha em MD5 e consegui fazer login usando este usuário.

Porém, eu precisava salvar a senha com o salt. Teoricamente está tudo certo, mas quando tento fazer o login diz que a senha é inválida,

 

Sabe se tem algum meio de verificar se o salt que estou gerando é válido?

A senha fica assim: MD5(salt + senha) + ":" + salt

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.