Automatische Rollenvergabe

am 10.06.2013 - 19:45 Uhr in
Hallo,
es sieht so aus dass ich ein eigenes Modul zur Erstellung eines Profils geschrieben hab(unabhängig vom User System Druapls). Nur wenn dieses Formular ausgefüllt ist, soll der User alle Rechte auf die anderen Module bekommen. Meine Idee sah so aus, dass ich beim validieren automatisch den User eine neue Rolle geben, nur leider finde ich keine Funktion die das einfach so übernimmt.
Vielen Dank
- Anmelden oder Registrieren um Kommentare zu schreiben
Mit Rules wirst du vermutlich
am 10.06.2013 - 23:35 Uhr
Mit Rules wirst du vermutlich weiterkommen.
Man braucht etwas Einarbeitungszeit, aber danach kann man alles mögliche damit anstellen :-)
https://drupal.org/project/rules
WEBTRANSFORMER
unabhängig von drupal???
am 11.06.2013 - 06:29 Uhr
unabhängig von drupal??? nimmer doch user profile, entity registry oder ähnliches
C.A.W. Webdesign

Also damit man das etwas
am 11.06.2013 - 11:10 Uhr
Also damit man das etwas besser versteht mal so ein paar Ausschnitte aus dem Quelltext:
function profil_erstellen_form_validate($form, &$form_state) {
//Die uid wird im Firmenprofil gespreicht um so einfachere Abfragen über diese Id zu gewährleisten
global $user;
//Sämtliche Feldinhalte werden aus den enstprechenden Felder zwischengespeichert
$name= $form_state['values']['name'];
....//andere Felder
//weitere Fehler abfrage
if(empty($name)) {
form_set_error('', t('Bitte Feld Firmenname ausfüllen!'));
}
else{
//Profil aus gesammelten Daten erstellen
$profil= new profil($name, .....);
//DAO erstellen um Profil hinzuzufügen/ändern
$dao_profil ="";
$dao_profil = new DAO_Firma();
//falls schon ein Profil vorhanden ist updaten
if($dao_profil->isProfilvorhanden($user->uid)){
$dao_profil>updateprofil($profil);
//Falls noch nicht vorhnaden: hinzufügen! Und User neue Rechte geben
} else {
//in die Dao einfügen
$dao_profil->addProfil($profil);
//Hier nun die neue Rolle setzen. Hab dafür eine neue Rolle erstellt.
$author = user_load($user->uid);
$roles = $author->roles;
$roles[3] = 'authenticated user with profil';
user_save($author, array('roles' => $roles));
}
}
}
So möchte ich das ungefähr haben. Das ich nach dem das Profil hinzugefügt wurde einmal die Rolle geändert wird und der User danach mehr Rechte bekommt.
Wie Goekmen schon sagte, geht
am 11.06.2013 - 11:54 Uhr
Wie Goekmen schon sagte, geht das mit Rules.
vereinfacht:
event: user hat Profile (neu) gespeichert/erstellt
do: gib ihm Rolle xyz
Fertig!
Drupal rockt!!!
Um Rules zu nutzen benötigt es im custom profile ein event
am 11.06.2013 - 14:06 Uhr
Wenn ich das richtig verstanden habe gibt es eine separate custom Profile-erweiterung. Ob die Notwendig ist oder nicht kann und will ich gerade nicht beurteilen. Es heißt, daß deren Benutzung erst zur neuen Rolle führen soll. Da hilft dann allerdings kein Rules, weil es dafür kein Event gibt. Dies lässt sich allerdings auch selbst programmieren.
In diesem Fall würde ich aber auch den Weg weiter verfolgen: "Rolle per custom Code der User Entität hinzufügen".
# DrupalCenter-Moderator # Mitglied im Drupal e.V. # https://www.drupal.org/u/c-logemann
# CTO der Nodegard GmbH: CMS Security & Availability Operations / Wir unterstützen IT-Abteilungen, Agenturen, Freiberufler:innen