Comment puis-je trouver une liste de valeurs disponibles de chaîne de $ pour la fonction user_access ($ string)?

drupal.stackexchange https://drupal.stackexchange.com/questions/2764

  •  16-10-2019
  •  | 
  •  

Question

  

user_access ($ string, $ compte = NULL)

     

$ string:. L'autorisation, comme "nœuds", Administrez en cours de vérification pour

Comment puis-je trouver une liste de valeurs de chaîne $ disponibles pour la fonction user_access()?

Était-ce utile?

La solution

Tant que chaque module peut définir leurs propres autorisations, il n'y a pas une liste « stricte » de ces chaînes. Vous aurez besoin de « construction » si vous avez vraiment besoin d'avoir une telle liste par programme.

Vous pouvez exécuter ce script dans un / devel / php page. (Bien sûr, vous avez besoin du module 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);
  }
}

Autres conseils

Comme @Berdir dit, la meilleure façon de voir les autorisations sont disponibles est d'aller aux autorisations admin / personnes / autorisations dans Drupal 7.

Le problème que je rencontrais est que je ne pourrais jamais comprendre quelle chaîne je devais fournir comme un « argument accès » à réellement faire usage de l'autorisation. Eh bien, voici comment vous trouvez le nom de chaîne pour les autorisations que vous souhaitez utiliser (Cet exemple utilise Google Chrome.)

une étape. Aller à l'admin / personnes / autorisations trouver l'autorisation que vous souhaitez utiliser et faites un clic droit sur une case à cocher à droite de l'autorisation que vous souhaitez utiliser. Sélectionnez « Inspecter l'élément » ou tout simplement aller chercher à la source.

Exemple

Consultez ensuite la valeur de la case à cocher et notez la valeur. (Dans ce cas, la chaîne est « de créer du contenu de coupon »)

entrer image description ici

Ceci est la chaîne que vous devez fournir un argument d'accès hook_menu ()

Exemple de code: (éléments non pertinents retirés, ne pas oublier le titre, rappel, etc. hook_menu ())

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

Voici une version D7 de la réponse de Haza, modifié pour utiliser DSM au lieu de print_r et de laisser des modules qui ne mettent pas en œuvre hook_permission:

// 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);
  }
}

Vous pouvez utiliser user_permission_get_modules() fonction qui renvoie un tableau de toutes les autorisations définies et leurs modules.

  

Déterminer les modules qui appartiennent à des autorisations.

     

Valeur de retour

     

Un tableau associatif dans le format de l'autorisation $ => $ module.

Le plus simple est de consulter la page d'autorisation (D7: admin / personnes / autorisations, D6: admin / utilisateur / autorisations). Notez que vous utilisez directement la chaîne affichée dans Drupal 6, pour 7, vous devez avoir un regard sur le nom / valeur case à cocher. En effet, les autorisations ont maintenant un titre et une description traduit dans Drupal 7.

Donc, si vous voulez que le nom de l'autorisation « Afficher le contenu publié » dans Drupal 7, la valeur est « le contenu d'accès » qui est le nom de l'autorisation.

Si vous savez quel module l'autorisation vient, vous pouvez également vérifier le correspondant hook_perm () (D6) / hook_pemission () (D7) mise en oeuvre de ce module.

Dans de nombreux cas, vous souhaitez définir vos propres pemissions et les utiliser, vous pouvez le faire avec les crochets ci-dessus.

Utilisation du module Devel

  • Après l'installation et l'activation du module Devel , accédez à admin/config/development/devel. Il y a un paramètre intitulé, « Les noms de machines d'affichage des autorisations et des modules ». Assurez-vous que est cochée.

  • sur la page des autorisations à people/permissions, vol stationnaire sur le nom de l'autorisation que vous remet en question. Il peut retarder une seconde ou deux, mais la valeur de chaîne affichera.

Voici une forme simple, alter qui ajoutera la clé d'autorisation au nom sur la page des autorisations. Cela devrait le rendre plus facile à regarder vers le haut. Vous devrez ajouter à un module personnalisé et remplacer « mymodule » avec le nom de ce module.

/**
 * 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 . ')';
    }
  }
}

ce extrait de code JavaScript qui me aide à ce sujet. Je l'ai testé dans Drupal 7 uniquement sur le thème brillant .

Il produit essentiellement le nom de la machine, tirée de la première case à ce nom, à la première cellule, sous l'étiquette. Le script repose sur jQuery, qui ne devrait pas être un problème sur Drupal 7.

Je colle généralement sur la console Outils de développement et l'exécuter à partir de là. Je pourrais créer un bookmarklet pour à l'avenir.

// 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>");
});
db_query("SELECT DISTINCT {permission} FROM role_permission");

Ceci est un simple module pour le rendre facile: Arguments accès Liste

Cordialement

baisse seulement dans certains module, vous verrez les autorisations de la machine à / admin / personnes / autorisations

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>)'; 
    }
}

ce qui a trait

Licencié sous: CC-BY-SA avec attribution
Non affilié à drupal.stackexchange
scroll top