user_access ($ string, $ account = NULL)
$ string: Die Berechtigung, z. B. "Knoten verwalten", auf die geprüft wird.
Wie kann ich eine Liste der verfügbaren $ string-Werte für user_access()
function finden?
Solange jedes Modul seine eigenen Berechtigungen definieren kann, gibt es keine "strenge" Liste dieser Zeichenfolgen. Sie müssen es "konstruieren", wenn Sie eine solche Liste wirklich programmgesteuert benötigen.
Sie können dieses Skript in einer / devel / php-Seite ausführen. (Natürlich benötigen Sie das Devel- Modul.)
// 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);
}
}
Wie @Berdir sagte, ist der einfachste Weg, um zu sehen, welche Berechtigungen verfügbar sind, zu den Berechtigungen admin / people / permissions in Drupal 7 zu gehen.
Das Problem, auf das ich stieß, war, dass ich nie herausfinden konnte, welche Zeichenfolge ich als 'Zugriffsargument' angeben musste, um die Berechtigung tatsächlich zu nutzen. Nun, hier finden Sie den String-Namen für die Berechtigungen, die Sie verwenden möchten (In diesem Beispiel wird Google Chrome verwendet.)
Schritt eins. Gehen Sie zu admin / people / permissions und suchen Sie die Berechtigung, die Sie verwenden möchten. Klicken Sie mit der rechten Maustaste auf ein Kontrollkästchen rechts neben der Berechtigung, die Sie verwenden möchten. Wählen Sie 'Inspect Element' oder schauen Sie sich einfach die Quelle an.
Suchen Sie als Nächstes nach dem Wert des Kontrollkästchens und notieren Sie den Wert. (In diesem Fall lautet die Zeichenfolge "Gutscheininhalt erstellen".)
Dies ist die Zeichenfolge, die Sie als Zugriffsargument in hook_menu () angeben müssen .
Beispielcode: (nicht relevante Elemente entfernt, Titel, Rückruf usw. in hook_menu () nicht vergessen )
function fsrsys_menu() {
$items = array();
$items['my-custom-url'] = array(
'access callback' => 'user_access',
'access arguments' => array('create coupon content'),
);
return $items;
}
Hier ist eine D7-Version von Hazas Antwort, geändert, um DSM anstelle von print_r zu verwenden und Module wegzulassen, die hook_permission nicht implementieren:
// 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);
}
}
Sie können user_permission_get_modules()
function verwenden, die ein Array aller definierten Berechtigungen und ihrer Module zurückgibt.
Bestimmen Sie die Module, zu denen Berechtigungen gehören.
Rückgabewert
Ein assoziatives Array im Format $ permission => $ module.
array_keys()
Sie offensichtlich nur die angeforderten Informationen. Sie können das Ergebnis dann beispielsweise auch verwendenuser_role_grant_permissions
, um der Administratorrolle alle Berechtigungen zu erteilen:user_role_grant_permissions(variable_get("user_admin_role"), array_keys(user_permission_get_modules()));
Am einfachsten ist es, die Berechtigungsseite zu überprüfen (D7: admin / people / permissions, D6: admin / user / permissions). Beachten Sie, dass Sie die angezeigte Zeichenfolge direkt in Drupal 6 verwenden. Für 7 müssen Sie den Namen / Wert des Kontrollkästchens überprüfen. Dies liegt daran, dass Berechtigungen in Drupal 7 jetzt einen übersetzten Titel und eine übersetzte Beschreibung haben.
Wenn Sie also den Namen für die Berechtigung "Veröffentlichten Inhalt anzeigen" in Drupal 7 möchten, lautet der Wert "Zugriffsinhalt". Dies ist Ihr Berechtigungsname.
Wenn Sie wissen, von welchem Modul die Berechtigung stammt, können Sie auch die entsprechende Implementierung von hook_perm () (D6) / hook_pemission () (D7) für dieses Modul überprüfen .
In vielen Fällen möchten Sie Ihre eigenen Pemissionen definieren und diese verwenden. Dies können Sie mit den oben genannten Hooks tun.
quelle
Verwenden des Entwicklungsmoduls
Navigieren Sie nach der Installation und Aktivierung des Devel- Moduls zu
admin/config/development/devel
. Es gibt eine Einstellung mit dem Titel "Computernamen von Berechtigungen und Modulen anzeigen". Stellen Sie sicher, dass dies aktiviert ist.Bewegen Sie nun auf der Berechtigungsseite unter
people/permissions
den Namen der Berechtigung, die Sie in Frage stellen. Es kann eine oder zwei Sekunden dauern, aber dann wird der Zeichenfolgenwert angezeigt.quelle
Hier ist eine einfache Formularänderung, die dem Namen auf der Berechtigungsseite den Berechtigungsschlüssel hinzufügt. Das dürfte das Nachschlagen erleichtern. Sie müssen es einem benutzerdefinierten Modul hinzufügen und "mymodule" durch den Namen dieses Moduls ersetzen.
quelle
Ich habe dieses JavaScript-Snippet erstellt , das mir dabei hilft. Ich habe es in Drupal 7 nur auf dem Shiny-Thema getestet .
Es gibt im Grunde den Computernamen aus, der vom ersten Kontrollkästchen dieses Namens in die erste Zelle unter dem Etikett übernommen wurde. Das Skript basiert auf jQuery, was unter Drupal 7 kein Problem sein sollte.
Normalerweise füge ich es in die Developer Tools-Konsole ein und führe es von dort aus aus. Ich könnte in Zukunft ein Lesezeichen dafür erstellen.
quelle
quelle
Dies ist ein einfaches Modul, um es einfach zu machen: Access Arguments List
Grüße
quelle
Schauen Sie einfach in ein Modul, Sie sehen die Maschinenberechtigungen unter / admin / people / permissions
Grüße
quelle