Gruppo di amministrazione ROLE_TYPE Colonna da tavolo
Domanda
Nella tabella admin_role
c'è una colonna role_type
che può avere 2 valori:
- .
- 'g' -
Mage_Admin_Model_Acl::ROLE_TYPE_GROUP
- 'u' -
Mage_Admin_Model_Acl::ROLE_TYPE_USER
Con i loro nomi i nomi salta la conclusione che si è per i ruoli utente e l'altro è per i ruoli di gruppo, ma non riesco a capire come sono utilizzati questi valori.
AFAIK Ogni utente amministratore, al fine di avere accesso ad alcune aree di amministrazione deve avere un ruolo.È quel ruolo 'il gruppo'?Se sì, allora qual è l'uso del valoreU
.Se no, qual è il 'il gruppo' allora?La versione magente non è importante.È stato lì dal "Big Bang" (V0.7) ed è persino portato nel prossimo universo (Magento 2).
Soluzione
Sì, quello è "il gruppo".Ogni utente ha un ruolo utente che ha un genitore di un ruolo di gruppo, tutti gli utenti sono assegnati a un gruppo tramite Parent_ID in quella tabella.
L'unico valore reale che posso vedere è nella generazione ACL in cui possono scaricare in tutta la tabella e generare la struttura ACL basata sulle informazioni fornite, in Mage_admin_Model_RESOURCE_ACL :: LoadRoles
public function loadRoles(Mage_Admin_Model_Acl $acl, array $rolesArr)
{
foreach ($rolesArr as $role) {
$parent = ($role['parent_id'] > 0) ? Mage_Admin_Model_Acl::ROLE_TYPE_GROUP . $role['parent_id'] : null;
switch ($role['role_type']) {
case Mage_Admin_Model_Acl::ROLE_TYPE_GROUP:
$roleId = $role['role_type'] . $role['role_id'];
$acl->addRole(Mage::getModel('admin/acl_role_group', $roleId), $parent);
break;
case Mage_Admin_Model_Acl::ROLE_TYPE_USER:
$roleId = $role['role_type'] . $role['user_id'];
if (!$acl->hasRole($roleId)) {
$acl->addRole(Mage::getModel('admin/acl_role_user', $roleId), $parent);
} else {
$acl->addRoleParent($roleId, $parent);
}
break;
}
}
return $this;
}
.
Sembra che abbiano potuto usare ($ ruolo ['genitore_id']> 0) per determinare se è un gruppo o un ruolo utente, ma immagino che sia un vero errore.
Altri suggerimenti
In breve: cosa chiami "il ruolo" è il gruppo (come "amministratori").
Ogni gruppo ha una voce con il tipo G
e ciascun utente ha una voce con il tipo U
che si riferisce al gruppo dell'utente tramite parent_id
.Tutte le regole di accesso sono definite a livello di gruppo.Se guardi il tavolo admin_rules
, vedrai che tutte le voci hanno G
come tipo di ruolo.
La funzione admin_rule.role_type
sembra essere qualcosa come il stock_id
, in qualche modo previsto, mai completamente implementato e quindi portato avanti perché nessuno osa toccarlo.
Fuori dalla curiosità Ho provato a inserire un set di dati con tipo di ruolo U
manualmente ma il ruolo principale richiede sempre la precedenza, non importa se è una regola generacodicagcode o allow
.E senza un ruolo genitore, non si accede a tutti i pannelli di amministrazione.