Skip to main content

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)

I commenti sono chiusi.