Formularzugriff nur für bestimmte Rollen
am 02.02.2012 - 14:53 Uhr in
Hallo zusammen,
für meine eigenen Formulare möchte ich die Zugriffssteuerung relativ fein bestimmen.
Ich habe verschiedene Rollen angelegt (Vertrieb, Einkauf, Logistik). Wie muss ich die access arguments
gestalten das z.b. das Formular xy nur von den Rollen Logistik und Administrator bearbeitet werden dürfen?
Ati
- Anmelden oder Registrieren um Kommentare zu schreiben

Ich würde
am 02.02.2012 - 15:13 Uhr
content_access in Verbindung mit unterschiedlichen content types einsetzen.
Damit ist eine Regelung auf der Ebene des content_types (sogar für jeden Node) möglich.
Damit könnte der Einkauf ein Dokument erzeugen, dass nur von ihm selbst, und dem Vertrieb gelesen werden kann, andere Dokumente aber nur Intern verwendet werden.
Und sehr vieles mehr.
Dafür ist keine eigene Programmierung nötig.
Hi ronald, nun es ging
am 02.02.2012 - 15:23 Uhr
Hi ronald,
nun es ging hierbei um bereits eigene Module, welche ich jetzt entsprechend berechtigen wollte.
Aber in meinem Fall war die Lösung schon wieder zu einfach für mich. Einfach bei
access arguments array('Edit data in the Termine table') eintragen und das war es schon.
Werde mir das Modul content_access aber mal anschauen..kann ja nicht schaden ;-).
Danke für Deine Mühe!
Ati
Kommando zurück...das klappt
am 02.02.2012 - 15:27 Uhr
Kommando zurück...das klappt doch nicht!
Was klappt doch nicht? Wie
am 02.02.2012 - 16:23 Uhr
Was klappt doch nicht? Wie genau rufst du das Formular denn auf? Und bitte nicht nur "drupal_get_form" oder so posten, sondern den ganzen Code, der das Formular ausgibt.
Dein Wunsch ist mir
am 02.02.2012 - 16:43 Uhr
Dein Wunsch ist mir Befehl..
function ltermverwaltung_menu() {
$items = array();
$items['ltermverwaltung/form'] = array(
'title' => t('Terminerfassung'),
'page callback' => 'ltermverwaltung_form',
'access arguments' => array('edit data in the termine table'),
'type' => MENU_CALLBACK,
);
$items['ltermbearbeitung/%/form'] = array(
'title' => t('Terminbearbeitung'),
'page callback' => 'ltermbearbeitung_form',
'access arguments' => array('edit data in the termine table'),
'type' => MENU_CALLBACK,
);
return $items;
}
function ltermverwaltung_form(){
return drupal_get_form('ltermverwaltung_my_form');
}
function ltermverwaltung_my_form($form, &$form_state) {
$result_tour = db_query('Select plz,ort from tbl_plz');
$touren = array();
foreach ($result_tour as $row) {
$touren[$row->plz] = $row->plz ." ". $row->ort;
}
$result_uhr = db_query('Select uhrzeit from uhrzeit');
$uhrzeit = array();
foreach ($result_uhr as $row) {
$uhrzeit[$row->uhrzeit] = $row->uhrzeit;
}
$form['tart'] = array(
'#type' => 'radios',
'#options' => array(
'Fix-Termin' => t('Fix-Termin'),
'Bis-Termin' => t('Bis-Termin'),
),
'#title' => t('Welche Terminart?'),
'#required' => TRUE,
);
Ich hoffe es ist in Ordnung wenn ich den Rest des Formulares euch erspare oder?
Unter Berechtigungen gibt es eben diesen besagten Eintrag. Auch hier habe ich eine Kuriosität.
Wenn ich den Haken bei den Rollen Administrator + Logistik setze kann der User "admin" alles.
Der User "Michael" beinhaltet auch die Rolle des Administrators und der bekommt das Formular nicht angezeigt.
Ich stöbere auch viel im Examples-Modul. Dort ist ja das gleiche Beispiel wie ich es hier umsetzen will...dort geht es Problem los.
Ich vermute mal daher das dieser Berechtigungshaken mit dem ich bei meinem Modul hantiere nicht richtig ist. Habe dann mal bissl
in dem Code von "Examples" gesucht, wie dieser "Berechtigungspunkt" überhaupt erzeugt wird. Bin aber noch nicht dahinter gekommen.
Ati
Ich bin wohl doch noch fündig
am 02.02.2012 - 17:04 Uhr
Ich bin wohl doch noch fündig geworden... hook_permission ist wohl das Zauberwort
function ltermverwaltung_permission() {
return array(
'liefertermin erfassen' => array(
'title' => t('Liefertermin erfassen'),
),
);
}
Jetzt kann ich wilde Haken setzen und es funktioniert auch.
Zitat: Auch hier habe ich
am 02.02.2012 - 18:04 Uhr
Auch hier habe ich eine Kuriosität.
Wenn ich den Haken bei den Rollen Administrator + Logistik setze kann der User "admin" alles.
Ist der User "admin" der erste User, den du während der Drupal-Installation erstellt hast? Wenn ja, dann ist das ganze nicht sonderlich kurios, denn dann ist der User "admin" der User1, quasi der "Superadmin" deiner Installation. Der darf grundsätzlich erstmal alles, unabhängig von den Rollen. Dem kannst du auch nicht so einfach Rechte entziehen. Daher solltest du diesen Account besonders gut schützen, damit kann man in einer Installation fast jeden erdenklichen Unsinn machen!
Ahso....da hatte ich dann
am 03.02.2012 - 06:04 Uhr
Ahso....da hatte ich dann wohl ein Verständnisproblem..Danke!