Ich habe einige Berechtigungen, die ich einigen Rollen programmgesteuert zuweisen möchte, um die Installation zu vereinfachen.
Da ich das Modul installiere und sowohl Berechtigungen als auch Rollen erstelle, habe ich nicht die Rollen-IDs, in denen ich die Berechtigungen festlegen möchte. Bisher habe ich nur Möglichkeiten gefunden , Rollen programmgesteuert zuzuweisen , für die die Rollen-ID erforderlich ist.
Ich frage mich, ob ich die Rollen mit ihrem Namen (String) irgendwie nachschlagen, die Rollen-ID abrufen und dann die Berechtigung zuweisen könnte. Es fühlt sich einfach nicht richtig an.
Antworten:
Das Features-Modul macht das ganz gut und ermöglicht es Ihnen, Rollen und Berechtigungen (und viele andere Dinge) auf einen Schlag zu exportieren:
http://drupal.org/project/features
Wenn Sie jedoch Ihre eigene Check-out-Berechtigungs-API erstellen möchten, gehen Sie wie folgt vor:
http://drupal.org/project/permissions_api
quelle
Features sind für solche Dinge ziemlich praktisch. Wenn Sie jedoch Rollen erstellen und programmgesteuert Berechtigungen hinzufügen müssen, müssen Sie die Datenbank nicht selbst durchsuchen.
Wenn Sie eine neue Benutzerrolle mit erstellen
user_role_save()
, wird das übergebene Objekt mit der neuen Benutzerrollen-ID aktualisiert, die zugewiesen wurde. Ein Beispiel hierfür finden Sie in derstandard_install()
Funktion im Standard-Installationsprofil.Dieses Beispiel zeigt, dass Sie eine neue Benutzerrolle erstellen und dann auf deren
rid
Eigenschaft zugreifen können , die von ausgefüllt wurdeuser_role_save()
. Es wird auch gezeigt, wie dieser Rolle Berechtigungen hinzugefügt werdenuser_role_grant_permissions()
. In diesem Fall werden der Administratorrolle alle verfügbaren Berechtigungen erteilt.Wenn Sie die ID einer Benutzerrolle abrufen möchten, die von einer anderen Person erstellt wurde, können Sie
user_role_load_by_name()
das Objekt für diese Benutzerrolle abrufen. Dann schnappst du dir einfach den Ausweis mit$role->rid
.quelle
user_role_grant_permissions()
Ich möchte ein Codebeispiel hinzufügen, das der ursprünglichen Frage zum programmgesteuerten Zuweisen von Berechtigungen zu vorhandenen Rollen näher kommt.
Sie können die Rollen mit ihrem Namen suchen, die Rollen-ID abrufen und Berechtigungen wie folgt zuweisen (z. B. in einer hook_update-Implementierung):
quelle