Zugriffsberechtigungen für einzelne User und Nodes programmatisch vergeben
am 09.10.2013 - 13:42 Uhr in
Hallo zusammen,
ich glaube, ich habe irgendwas grundsätzliches in Bezug auf die Zugriffssteuerung noch nicht begriffen, ich hoffe, ihr könnt mir helfen. Ich benötige für ein Projekt eine sehr feine Zugriffssteuerung, weswegen ich per Content Access für viele Inhaltstypen grundsätzlich festlege, dass die standardmäßige Nutzerrolle keinen Zugriff ('view') bekommen soll. Nur einzelne User sollen auf einzelne Nodes Zugriff bekommen. Passende Module habe ich gefunden: ACL (https://drupal.org/project/acl), in meinem Fall viel mehr AUL (https://drupal.org/project/aul) scheinen genau richtig zu sein.
Nun möchte ich die entsprechenden Berechtigung, einen Node anzusehen, im Folgenden Beispiel in Abhängigkeit von einer Auswahl in einem Webform vergeben:
function mymodule_webform_submission_insert($node, $submission) {
if ($node->nid == 9) { // react on a specific webform
// access testnode 1 if value 1 is chosen
if ($submission->data[1]['value'][0] == 1) {
$testnode = 1;
}
// access testnode 2 if value 2 is chosen
if ($submission->data[1]['value'][0] == 2) {
$testnode = 6;
}
if (isset($testnode)) {
global $user;
$aul_id = aul_create_aul('meinmodul', 'view_' . $user->uid);
aul_add_node($aul_id, $testkurs);
aul_user_add_aul($user->uid, $aul_id, 1, 0, 0);
}
}
}
Per Devel Node Access Modul lasse ich mir auch alle Berechtigungen anzeigen. Was in meinen Augen hier irgendwo fehlt ist der Schritt, die neue Berechtigung in die Node Access Tabelle in der Datenbank zu packen. Baue ich die Berechtigungen neu auf, bekommt der User auch die Zugriffsberechtigung, den Node zu betrachten - aber ich kann ja nun nicht jedes Mal, wenn ich eine neue View-Berechtigung für einen User vergeben möchte, die gesamten Zugriffsberechtigungen neu aufbauen.
Kann mir da jemand weiterhelfen?
Viele Grüße,
Tobias
- Anmelden oder Registrieren um Kommentare zu schreiben
Kann es sein, dass ich die
am 09.10.2013 - 14:14 Uhr
Kann es sein, dass ich die Berechtigungen (realm), die ich an einzelne User vergeben möchte, selber in die node_access Tabelle schreiben muss????
Ich verwende Node Option Premium
am 09.10.2013 - 14:20 Uhr
Mit dem Node Option Premium kann ich bei jedem Node festlegen, ob ihn nur privilegierte User sehen dürfe.
Diesen Status lege ich bei den betreffenden Usern fest.
Alle anderen bekommen nur den Anrisstext und eine selbst verfaßte Meldung zu sehen. Für meine Wünsche optimal.
Ob das für Dich etwas wäre, musst Du schauen.
Ich möchte wie beschrieben
am 09.10.2013 - 17:28 Uhr
Ich möchte wie beschrieben diese gesamte Sache über ein eigenes Modul erledigen, trotzdem danke
Da kann ich Dir nur raten,
am 09.10.2013 - 18:06 Uhr
Da kann ich Dir nur raten, Dir das Modul Content Access genauer anzusehen. Dieses Modul erlaubt auf einem speziellen Node einen User einzutragen über das entsprechende Formular. Sieh Dir in der Quelle an, was dort getan wird, um diese Information zu speichern. Genau so mußt Du in Deinem Modul vorgehen, damit es klappt.
Beste Grüße
Werner
Ja, so in etwa mache ich das
am 09.10.2013 - 18:26 Uhr
Ja, so in etwa mache ich das bereits, aber ich werde nicht schlauer... vor allem raffe ich nicht, wie es Content Access zum Beispiel hinbekommt, seine realms in die node access zu schreiben, wenn ein neuer Node angelegt wurde.
Hat hier jemand Erfahrung mit dem Erstellen eines eigenen Moduls, das per ACL Zugriffsberechtigungen organisiert????