it-swarm-eu.dev

Jak zjistím seznam dostupných hodnot $ string pro funkci user_access ($ string)?

user_access ($ string, $ account = NULL)

$ string: Je kontrolováno oprávnění, například „spravovat uzly“.

Jak najdu seznam dostupných hodnot $ stringů pro funkci user_access()?

27
gilzero

Dokud může každý modul definovat svá vlastní oprávnění, neexistuje „přísný“ seznam těchto řetězců. Budete-li potřebovat mít takový seznam programově, budete jej muset „sestavit“.

Tento skript můžete spustit na stránce/devel/php. (Samozřejmě potřebujete modul Devel .)

// Render role/permission overview:
$options = array();
foreach (module_list(FALSE, FALSE, TRUE) as $module) {
  print_r($module);
  // Drupal 6
  // if ($permissions = module_invoke($module, 'perm')) {
  //  print_r($permissions);
  // }

  // Drupal 7
  if ($permissions = module_invoke($module, 'permission')) {
    print_r($permissions);
  }
}
12
Haza

Jak řekl @Berdir, nejjednodušší způsob, jak zjistit, která oprávnění jsou k dispozici, je přejít na oprávnění správce/lidé/oprávnění v Drupal 7).

Problém, na který jsem narazil, spočívá v tom, že jsem nikdy nemohl přijít na to, jaký řetězec jsem potřeboval dodat jako „přístupový argument“, abych skutečně využil povolení. Zde je návod, jak najít název řetězce pro oprávnění, která chcete použít (Tento příklad používá Google Chrome.)

Krok první. Přejděte na administrátora/lidé/oprávnění a najděte oprávnění, které chcete použít, a klikněte pravým tlačítkem na zaškrtávací políčko vpravo od oprávnění, které chcete použít. Vyberte možnost Zkontrolovat prvek nebo se jen podívejte na zdroj.

Example

Poté vyhledejte hodnotu zaškrtávacího políčka a poznamenejte si hodnotu. (V tomto případě je řetězec „vytvořit obsah kupónu“)

enter image description here

Toto je řetězec, který musíte zadat jako argument přístupu v hook_men ()

Příklad kódu: (nerelevantní položky byly odstraněny, nezapomeňte název, zpětné volání atd. V hook_men ())

function fsrsys_menu() {
    $items = array();
    $items['my-custom-url'] = array(
        'access callback' => 'user_access',
        'access arguments' => array('create coupon content'),
    );
    return $items;
}
26
Citricguy

Zde je verze Hazovy odpovědi D7, upravená pro použití DSM místo print_r a vynechání modulů, které implementaci hook_permission nevykonávají:

// Render permission overview:
$options = array();
foreach (module_list(FALSE, FALSE, TRUE) as $module) {
  if ($permissions = module_invoke($module, 'permission')) {
    // List only the modules that have permissions.
    dsm($module);
    dsm($permissions);
  }
}
9
fureigh

Můžete použít funkci user_permission_get_modules() , která vrací pole všech definovaných oprávnění a jejich modulů.

Určete moduly, ke kterým oprávnění patří.

Vrácená hodnota

Asociativní pole ve formátu $ oprávnění => $ modul.

6
Елин Й.

Nejjednodušší způsob je zkontrolovat stránku oprávnění (D7: admin/people/oprávnění, D6: admin/uživatel/oprávnění). Všimněte si, že přímo zobrazený řetězec použijete v Drupal 6, pro 7 musíte zkontrolovat název/hodnotu zaškrtávacího políčka. Důvodem je, že oprávnění mají nyní přeložený název a popis v Drupal 7.

Pokud tedy chcete získat název oprávnění „Zobrazit publikovaný obsah“ v Drupal 7, je hodnota „přístup k obsahu“, což je jméno vašeho oprávnění.

Pokud víte, ze kterého modulu pochází oprávnění, můžete také zkontrolovat odpovídající hook_perm () (D6)/ hook_pemission () (D7) implementaci tohoto modulu.

V mnoha případech chcete definovat vlastní pemise a použít je, můžete to udělat pomocí výše uvedených háčků.

4
Berdir

Použití modulu Devel

  • Po instalaci a povolení modulu Devel přejděte na admin/config/development/devel. Existuje nastavení s názvem „Zobrazovat názvy oprávnění a modulů v počítači“. Ujistěte se, že je zaškrtnuto.

  • Nyní na stránce oprávnění na adrese people/permissions, umístěte kurzor nad název povolení, které chcete vyslýchat. Může to zpozdit vteřinu nebo dvě, ale pak se zobrazí hodnota řetězce.

4
mlanning

Vytvořil jsem tento úryvek kódu JavaScript , který mi v tom pomáhá. Testoval jsem to v Drupal 7 pouze na Lesklý motiv .

V podstatě vydává název stroje, převzatý z prvního zaškrtávacího políčka tohoto jména, do první buňky pod štítkem. Skript se spoléhá na jQuery, což by neměl být problém na Drupal 7.

Obvykle ji vložím do konzole pro vývojářské nástroje a odtud ji spusťte. Mohl bych pro něj v budoucnu vytvořit záložku.

// Go through each of the rows on the permissin table
rows = jQuery('#permissions tr');
rows.each(function() {
    // Get the first checkbox in the row.
    checkbox = jQuery('.checkbox .form-checkbox', this).first();
    // Get the first cell, containing the permission label.
    nameCell = jQuery('td:first-child', this);
    // In case this is not a permission row
    if(checkbox.length == 0) {
        return;
    }

    // Embed the permission maching name on permission label cell.
    nameCell.append("<div><code>" + checkbox.val() + "</code></div>");
});
1
Batandwa

Zde je jednoduchá změna formuláře, která přidá název oprávnění na jméno na stránce oprávnění. To by mělo usnadnit vyhledávání. Budete jej muset přidat do vlastního modulu a nahradit „mymodule“ názvem tohoto modulu.

/**
 * Implements hook_form_FORM_ID_alter().
 */
function mymodule_form_user_admin_permissions_alter(&$form, $form_state) {
  foreach ($form['permission'] as $key => &$item) {
    if (isset($item['#type']) && $item['#type'] == 'item') {
      $item['#markup'] .= ' (' . $key . ')';
    }
  }
}
1
Randall Knutson

Toto je jednoduchý modul, který usnadňuje: Access Arguments List

Pozdravy

1
Bilal
db_query("SELECT DISTINCT {permission} FROM role_permission");
1
emallove

jen pokles v některém modulu, uvidíte strojová oprávnění na / admin/people/rights

function YOURMODULE_form_user_admin_permissions_alter(&$form, &$form_state) 
{
    $perms = &$form['permission'];

    $group_counter = 0;
    foreach ($perms as $k => &$v) {
        if ($k == $group_counter) { // skip fieldsets
            $group_counter++;
            continue;
        }

        $v['#markup'] .= ' (<span class="description" style="color:brown">'.$k.'</span>)'; 
    }
}

pozdravy

0
Yurii K.