Uno sguardo veloce alle tabelle Joomla ACL core

Nota: questo articolo si applica a Joomla 1.5

Creare del codice per inserire un nuovo utente in Joomla non è così facile come sembra. O meglio: è abbastanza semplice per chi conosce già il framework di Joomla e usa i metodi esistenti per creare un utente.

Ma come si fa a creare un utente da uno script esterno in PHP lavorando direttamente sulle tabelle del database? O ad aggiungere “a mano” un nuovo utente nel database?
Ho fatto recentemente qualche ricerca, e di seguito ecco ciò che ho appreso.

Elenco delle tabelle

Ci sono diverse tabelle relative a utenti, gruppi e permessi:

  • #__core_acl_aro
  • #__core_acl_aro_groups
  • #__core_acl_aro_map
  • #__core_acl_aro_sections
  • #__core_acl_groups_aro_map
  • #__users (ovviamente)

Cosa tralasciare …

Nell’utilizzo base, esistono alcune tabelle che non necessitano di attenzione quando si crea/cancella un utente. Eccole:

#__core_acl_aro_groups : tabella statica; contiene tutti i gruppi Joomla disponibili e, a meno che non abbiate in programma di creare gruppi multipli (in questo caso suggerisco l’ottima estensione  Artof User di Andrew Eddie), non dovrebbe essere modificata.

#__core_acl_aro_map : ho controllato in molti siti Joomla e questa tabella risulta vuota. Penso di poter tranquillamente dedurre che non venga usata nell’utilizzo comune.

#__core_acl_aro_sections : tabella statica; contiene una sola sezione chiamata “users”. Immagino che la sua espansione possa essere collegata all’utilizzo della precedente tabella  …acl_aro_map

… e cosa no

Ci sono tabelle che invece necessitano di attenzione:

#__users : naturalmente il primo passo dovrebbe essere quello di aggiungere il record in questa tabella.

#__core_acl_aro : in questa tabella viene creato un nuovo record ogni volta che si crea un nuovo utente. Per quanto ne so, l’id si autoincrementa, section_value è sempre “users”, order_value è sempre “0” e hidden è sempre “0”; quindi, aggiungere questa tabella è piuttosto semplice. In pratica c’è un record per ogni utente in  #__users table.

#__core_acl_groups_aro_map : questo è il vero collegamento tra utenti e gruppi; l’unica precisazione è, anziché usare l’id della tabella  #__users, viene utilizzato quello della tabella #__core_acl_aro (come abbiamo già detto, c’è una relazione univoca tra queste due tabelle).

Riassumendo

Quindi, ogni volta che vorrete inserire un nuovo utente, dovrete:

  1. aggiungere un record alla tabella *_users
  2. aggiungere un record alla tabella *_core_acl_aro che punti all’id della tabella *_users
  3. ottenere l’id del nuovo record inserito, come indicato al punto 2
  4. ottenere l’id del gruppo che si vuole utilizzare, da *_core_acl_aro_groups
  5. aggiungere un record a *_core_acl_groups_aro_map con l’id di cui al punto 3 e al punto 4

Facile, no?

Commenti (4)

  • Salve,
    ho letto con interesse l’articolo. Putroppo, però, non c’è scritto come mettere in pratica i punti indicati al paragrafo “Riassumendo”. Potete darmi qualche chiarimento?

    Grazie mille
    Alessandro

  • @Alessandro:
    mi scuso in anticipo perchè questa risposta potrà sembrare antipatica, ma ritengo che sia la più adatta.
    Le istruzioni riportate nella sezione “Riassumendo” sono già ridotte alle operazioni più basilari: se per te non risulta facile tradurle in istruzioni PHP, forse devi prima approfondire la programmazione PHP, in particolare per quanto riguarda la gestione delle tabelle.

    Attenzione: l’articolo si riferisce alla creazione DA UNO SCRIPT ESTERNO. Se stiamo parlando della creazione o modifica di un componente per Joomla, quanto riportato nell’articolo non c’entra nulla.

  • @Leonardo:
    hai ragione. Tutto quanto riportato nell’articolo si riferisce a Joomla 1.5. In Joomla 2.5 la questione ACL cambia (è più potente, ma più complessa) e non sono in grado di assicurare che funzioni tutto allo stesso modo, anche se in teoria le tabelle principali dovrebbero essere le stesse.

I commenti sono chiusi.


GiBiLogic srl Società a socio unico  |  via Aldo Moro 48, 25124 Brescia  |  P.IVA 02780970980
REG.IMPRESE N.02780970980 BRESCIA  |  CAP. SOC. € 10.000 I.V.
info@gibilogic.com  |  +39.030.7778980

iubenda Certified Gold
Partner