Back to top

Autore Topic: Database e Community Builder  (Letto 5502 volte)

Offline loopster

  • Nuovo arrivato
  • *
  • Post: 8
    • Mostra profilo
Database e Community Builder
« il: 03 Mar 2010, 13:10:30 »
Ciao a tutti,

sto cercando di usare CB su un sito realizzato in Joomla 1.5, facendo in modo che detto componente, per tutte le sue operaioni, login e il resto, vada ad agganciarsi su un database diverso da quello che è impostato sul CMS del sito.
In pratica ho bisogno di effettuare login iscrizioni e quant'altro su un database, e tutte le altre operazioni del sito sul database del sito stesso.

E' possibile?
Se si, quali impostazioni e/o varaibili devo modificare?
In quali file si trova il codice da cambiare per ottenere quello che desidero?

Grazie anticipatamente a ci potrà aiutarmi.

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Database e Community Builder
« Risposta #1 il: 03 Mar 2010, 18:48:49 »
ciao loopster,
  benvenuto sul forum!

la vedo un poco dura :( dato che seppure è possibile l'autenticazione su un sistema diverso con un plugin di tipo authentication, resta il problema che le pagine di CB dovrebbero girare in questo sito ed agire su un'altro (sito/db).

tecnicamente è possibile con iframe od altre soluzioni, fino alla riscrittura di CB (che diventa quasi completa, dato che per agire sul db si appoggia alle api di joomla che, ovviamente, non permettono ad un componente di selezionare il db), ma non lo ritengo un approccio corretto.

a naso di direi di rivedere il progetto.

prova a dare un'occhiata alla JED sezione 'Authentication External'

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline loopster

  • Nuovo arrivato
  • *
  • Post: 8
    • Mostra profilo
Re:Database e Community Builder
« Risposta #2 il: 03 Mar 2010, 19:12:19 »
Grazie per la risposta.

Quello che devo fare è questo:
Ho tre siti, da uno si dovrebbero effettuare le registrazioni agli abbonati di due giornali diversi.
Gli altri due siti sono quelli relativi ai giornali stessi, sui queli c'è un modulo per il login lato utente degli abbonati.
Quello che si vuole fare è avere la gestione comune, su un sito 'padre', per la registrazione degli abbonati, che viene fatta da un amministratore, mentre sui siti dei singoli settimanali si vuole solo dare l'accesso alla lettura del giornale alle persone autenticate.
Ovviamente questi due siti devono essere indpendenti tra di loro andando comunque a prendere le informazioni degli abbonati da un unica fonte.
Se devo rivedere il progetto non c'è nessun problema; accetto qualsiasi suggerimento che penso sarà senzaltro più sensato della mia impostazione  :)

Spero di essere stato più chiaro, adesso.
Grazie ancora.

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Database e Community Builder
« Risposta #3 il: 03 Mar 2010, 23:01:56 »
aluuura direi...
sul primo sito (il sito padre) gestisci le registrazioni e la personalizzazione dei profili (con o senza CB) e dagli altri due verifica se gli utenti sono abilitati alla lettura degli articoli.

l'autenticazione di joomla può essere anche 'esterna'; infatti viene controllata dal plugin 'Authentication - Joomla' che di norma effettua un look-up sul db locale, è, tuttavia, possibile sostituire questo plugin con un altro che effettui l'autenticazione in modo diverso (ad esempio LDAP, gmail...).
ora dovrai scrivere, se non trovi niente che ti aiuti tra le extesions già scritte, un plugin che verifichi l'autenticazione sul sito 'padre' e fornisca a joomla le informazioni che necessitano.

a questo punto potrai decidere a quali utenti consentire l'accesso, fermo restando che le operazioni di 'profilazione' saranno sul sito 'padre'.

come fare il tutto dipende dal sistema implementato...

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline loopster

  • Nuovo arrivato
  • *
  • Post: 8
    • Mostra profilo
Re:Database e Community Builder
« Risposta #4 il: 12 Mar 2010, 17:52:44 »
Ok, grazie per le informazioni.

Ho trovato tra le extensions un plugin che sembra fare al caso mio. Si chiama Authentication-ExtDb (il file compresso è MySQLextdbAuth-0.9.2.zip).
Questa estensione mi permette di configurare diversi parametri per l'accesso degli utenti, Database Name Table Name, Username Field, Password Field, ecc.
Mi da anche la possibilità di defiire che tipo di encryption ha la password resente sulla tabella del dibi che intendo configurare, (ho scelto md5 perchè mi pare di aver letto in giro che è lo standard usato dal CMS).
Tuttavia quando nel sito 'padre' salvo le password degli abbonati, non riesco a capire che tipo di encryption Joomla, o CB, stia usando.
Infatti quando guardo la stringa criptata, direttamente sul DB in MySql, mi sembra che sia una stringa più lunga di quella che si genera con la funzione md5.
Infatti quando da uno dei siti 'figli' provo ad effettuare l'accesso agli utenti del database collegato al sito 'padre', il sistema mi dice che c'è qualche errore di utente e/o password.

Così ho provato a salvare direttamente da MySql, con md5, la password degli utenti registrati sul sito 'padre' e in questo caso nei siti 'figli' mi vengono riconosciute le cerdenziali di accesso.

Il problema è che di solito i dati degli utenti si dovrebbero cambiare all'interno di Joomla nell'area amministrativa e non sul db con degli update direttamente su MySql.
Ma se lo faccio dall'amministrazione di Joomla, la password viene criptata in un modo che non capisco e che impedisce agli utenti dei siti figli di accedere alla loro area riservata.

Spero di non aver fatto un casino cercando di spiegarmi, ma come posso risolvere il problema?
 

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Database e Community Builder
« Risposta #5 il: 13 Mar 2010, 09:03:14 »
ciao,
 il motivo per cui il sistema non funziona è che la password nel db di joomla ha il seguente formato:

salt:md5(Pw . Salt)

pertanto se il plugin effettua solo l'md5 della pw non può funzionare.

i passi da fare sono i seguenti:

1. leggi la pw codificata dal db
2. dividi la pw al ':' la prima parte è il salt, la seconda l'hash
3. aggiungi in coda alla pw inserita dall'utente il salt ed effettua l'md5 della stringa
4. compara il risultato di 3. con la seconda parte della stringa in 2.

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline loopster

  • Nuovo arrivato
  • *
  • Post: 8
    • Mostra profilo
Re:Database e Community Builder
« Risposta #6 il: 13 Mar 2010, 10:47:04 »
Grazie ancora.

Mi sono reso conto che ieri ho omesso un'informazione che potrebbe essere utile.
In realtà il plugin che sto utilizzando, mi permette di inserire come parametro anche il Password Salt.

Tuttavia, non so che cosa dovrei mettere nel campo in questione. Purtroppo non riesco a trovare nessuna documentazione relativa a questa estensione.

Prima di mettere mano al codice, vorrei vedere se riesco a farlo funzionare con i parametri che mi vengono messi a disposizine.

Se facendo cosi proprio non riesco a risolvere il problema, mi arrmerò di pazienza e andrò a toccare il codice.

Ciao,
Antonino.

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Database e Community Builder
« Risposta #7 il: 13 Mar 2010, 14:56:23 »
armati di pazienza...  :(

mi pare, non ho controllato il codice ma sono abbastanza sicuro, che il salt sia generato di volta in volta (random), e non sia costante per ciascun sito joomla.

pertanto vale l'algoritmo datoti al precedente post.

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline loopster

  • Nuovo arrivato
  • *
  • Post: 8
    • Mostra profilo
Re:Database e Community Builder
« Risposta #8 il: 13 Mar 2010, 15:27:05 »
Ciao,

effettivamente è come dici tu.
Il salt è generato di volta in volta e questo provoca anche la modifica del mascheramento dell'hash della password.
Quindi ogni volta che si salvano le informazioni di un utente, anche se la password rimane invariata, sul db la relativa stringa viene modificata.
Per questo non è possibile utilizzare il parametro Password Salt messo a disposizione del plugin.

Quindi sto utilizzando l'algoritmo che mi hai suggerito tu, ma ho comunque delle difficolta a farlo funzionare.
Probabilmente sto sbagliando qualcosa, non so ancora cosa, perchè non riesco ancora a far funzionare il login (non riesco ad effettuare l'accesso degli utenti).

Forse starò sbagliando qualcosa nella sintassi del file .php del plugin.
Mi sa che ci sbattero ancora parecchio la testa, non so per quanto, prima di scrivere delle istruzioni corrette.  :D

Comunque grazie per l'aiuto, almeno adesso le cose sono più chiare.
Spero di risolvere presto perchè mi sta venendo mal di testa.  :)

Antonino
« Ultima modifica: 13 Mar 2010, 15:52:40 da loopster »

Offline loopster

  • Nuovo arrivato
  • *
  • Post: 8
    • Mostra profilo
Re:Database e Community Builder
« Risposta #9 il: 13 Mar 2010, 15:49:32 »
Ah dimenticavo.


in un'altro file ho notato un blocco di codice simile a questo, che credo poss essere utile al mio caso:

   $parts   = explode( ':', $result->password );
   $crypt   = $parts[0];
   $salt   = @$parts[1];


Da quello che capisco, explode è una funzione che m permetta di separare le due parti della stringa in funzione dei ':'.

Quello che volevo chiedere è se è giusto, come mi hai scritto tu, che la prima parte della stringa corrisponde al salt e la seconda all'hash, o è giusto il contrario come appare dalla porzione di codice che ho inviato qui sopra?

La @ prima della variabile, (@$parts) cosa significa?

Infine quando dici di accodare alla password inserita dall'utente il salt ed effattuare l'md5 della stringa, intendi una cosa del genere:

    $password = md5($credentials['password'].$salt);

o qualcosa di diverso?

Grazie ancora per la pazienza,
Antonino.


Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Database e Community Builder
« Risposta #10 il: 14 Mar 2010, 20:40:12 »
no, è
md5(Pw . Salt):salt

ero andato a memoria e mi sono sbagliato...  :(

la @ serve a sopprimere eventuali messaggi di errore.

la funzione da usare è md5($passwordInChiaro . $salt).

ciao
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

 



Web Design Bolzano Kreatif