hook_user - automatisch weitere Rolle hinzufügen
hook_user - Rolle automatisch hinzufügen
Der hook_user bietet die Möglichkeit auf verschiedene auf einem Benutzerkonto ausgeführte Operationen Einfluss zu nehmen.
Die einzelnen Parameter werden auf der Drupal-API Seite beschrieben: hook_user($op, &$edit, &$account, $category = NULL)
Die Ausgangssituation:
- über den hook_theme geändertes Registierungsformular
- Nutzung des profile Moduls für zusätzliche Felder ( DropDowns + Textfelder) während der Registrierung zur Verfügung zu stellen
Auf Grundlage der gefüllten Felder (Dropdowns) soll dem Nutzer eine bestimmte Rolle hinzugefügt werden. Laut API Beschreibung wird hierzu
die $op insert verwendet ( hier kann man aus dem Objekt $account ( nicht $user ! ) die Werte des gerade angelegten Accounts auslesen und verändern.
So viel zur Theorie - mein Versuch in diesem Step eine weitere Benutzerrolle zuzufügen schlug leider fehl.
<?php
function testmodule_user($op, &$edit, &$account, $category = NULL) {
switch ($op) {
case 'insert':
// Validierung etc ..
$new_roles = array('3' => 'editor'); // neue Rolle für den Nutzer
user_save($account, array('roles' => $new_roles));
break;
}
}
?>Der Nutzer wird in diesem Fall natürlich angelegt - nur die Rolle nicht - folgendes Posting brachte dann auch die Antwort.
Ich habe mir dann einmal den Code des Moduls autoassignrole genauer angeschaut - hier wird nicht das Objekt $account aus dem hook_user, sondern das Objekt $edit für das Hinzufügen der neuen Benutzerrollen genutzt.
Dies führte dann auch zun gewünschten Ergebnis ( neben der Rolle kann man hier natürlich noch weitere Werte des aktuell angelegten Benutzers ändern )
<?php
function testmodule_user($op, &$edit, &$account, $category = NULL) {
switch ($op) {
case 'insert':
// Validierung etc ..
$edit['roles'][3] = 'editor';
break;
}
}
?>

Hatte ca. 2 Stunden das
Hatte ca. 2 Stunden das gleiche Probiert. Die Doku ist an dieser Stelle fehlerhaft. Danke so rennt es nun.