Joomla.it Forum

Non solo Joomla... => Sviluppo => : Trigor 17 Jun 2010, 14:35:02

: Inserimento utenti in jos_users senza passare da joomla
: Trigor 17 Jun 2010, 14:35:02
ciao a tutti :)

sto lavorando sull'inserimento di un gran numero di utenti e ho deciso di leggere un file excel dove questi utenti si trovano e di inserirli nel database joomla.

va tutto bene nella lettura del file, ma quando provo ad inserire nel database gli utenti, le password inserite non corrispondono.

questo è il codice che uso per la creazione delle password usando il crypt di joomla:

:
$salt = JUserHelper::genRandomPassword(32);
$crypt = JUserHelper::getCryptedPassword($password, $salt);
$password = $crypt.':'.$salt;

dovrebbe in teoria essere corretto ma evidentemente mi è sfuggito qualcosa :)

ovviamente richiamo la classe e le password che ottengo sono nel format giusto, ad esempio
8cee5f829444da8fb515cdb75c23c69a:qzOOVP8Ba0YZJjO1Y0p9SMNazkDvFzrb
ma quando faccio login con la password di partenza, non funziona :(

grazie dell'attenzione :)
: Re:Inserimento utenti in jos_users senza passare da joomla
: assicomputer 17 Jun 2010, 14:50:07
Ma le password le hai criptate in md5?'
: Re:Inserimento utenti in jos_users senza passare da joomla
: Trigor 17 Jun 2010, 14:52:49
no, il dato $password the do al metodo getCryptedPassword($password, $salt); è un plain text come scritto nell'api di joomla

quindi se la mia password è "pippo" passerò $password = "pippo"

questo perchè nell'api di joomla ho trovato

getCryptedPassword  (line 106)

Formats a password using the current encryption.

    * return: The encrypted password.
    * access: public

string getCryptedPassword (string $plaintext, [string $salt = ''], [string $encryption = 'md5-hex'], [boolean $show_encrypt = false])

    * string $plaintext: The plaintext password to encrypt.
    * string $salt: The salt to use to encrypt the password. [] If not present, a new salt will be generated.
    * string $encryption: The kind of pasword encryption to use. Defaults to md5-hex.
    * boolean $show_encrypt: Some password systems prepend the kind of encryption to the crypted password ({SHA}, etc). Defaults to false.

non mi sembra che debba essere criptata prima con md5($password)... spero :)
: Re:Inserimento utenti in jos_users senza passare da joomla
: mau_develop 17 Jun 2010, 16:05:14
no, non è così che si fa.

utenti e autorizzazioni sono definiti su più tabelle.

M.
: Re:Inserimento utenti in jos_users senza passare da joomla
: Trigor 17 Jun 2010, 16:12:54
sì, ho notato e ora ho risolto.

non salvavo gli utenti sulle altre tabelle (3 totali, quelle 'aro').

per chi avesse il mio stesso problema questo è il codice dopo aver creato i dati necessari (visto che il "non è così che si fa" non è proprio utile per la soluzione...)

:
$query = "INSERT INTO #__users (id, name, username, email, password, usertype, block, sendEmail, gid, registerDate, lastvisitDate, activation, params) VALUES (NULL, '$username', '$email1', '$email', '$password', 'Registered', '0', '0', '18', CURDATE(), CURDATE(), '', '')";
$db->setQuery($query);
$result = $db->query();

$query2 = "INSERT INTO #__core_acl_aro (id, section_value, value, order_value, name, hidden) VALUES(NULL, 'users', '$id', '0', '$username', '0')";
$db->setQuery($query2);
$result2 = $db->query();

$query3 = "INSERT INTO #__core_acl_groups_aro_map (group_id, section_value, aro_id) VALUES('18', '', '$aro_id')";
$db->setQuery($query3);
$result3 = $db->query();