[gelöst]Rolle User zuweisen
Eingetragen von dontgotanick (156)
am 16.04.2010 - 14:42 Uhr in
am 16.04.2010 - 14:42 Uhr in
Hi,
ich will einem USer in einem bestimmten Fall eine Rolle zuweisen wenn er sich registriert, die Rolle hat die ID 3.
Das Problem ist er speichert nicht in die db wenn ich eine eigene Insert query ausführe.
Die Methode sieht aus wie folgt ( die Email werden versandt daher funktioniert der Rest):
<?php
function cwg_registration_user($op, &$edit, &$account, $category = NULL){
switch ($op) {
case 'insert':
$array = explode("@", $account->mail);
$sql = " SELECT Count(*) FROM drupal_access WHERE status = 1 AND mask LIKE '%%%s' ";
$t = db_result(db_query($sql, $array[1]));
if($t > '0'){
//$test = db_query("INSERT INTO {users_roles} (uid, rid) VALUES ('%d', 3)",$account->uid);
$account->roles = 3;
drupal_set_message(t('Saved @uid.', array('@uid' => $account->uid)));
$trans = array (
"%username" => $account->name
);
$body = db_fetch_object(db_query('SELECT confirmation_mail FROM {cwg_registration'));
$email = db_fetch_object(db_query('SELECT mail_addresses FROM {cwg_registration}'));
$message = array(
'to' => $email->mail_addresses,
'subject' => t('Admin approved your registration.'),
'body' => strtr($body->confirmation_mail, $trans),
'headers' => array('From' => 'webmaster@configuration-workgroup.com'),
);
drupal_mail_send($message);
}
?>
Das Problem ist ich weis nicht wie ich einem Account die Rolle zuweise.
Weis mir da wer abhilfe?
LG
dave
- Anmelden oder Registrieren um Kommentare zu schreiben
Wie wärs mit Auto Assign
am 16.04.2010 - 20:06 Uhr
Wie wärs mit Auto Assign Role? Damit kannst Du automatisch Rollen vergeben bei der Registrierung.
Oder mit Rules, damit dürfte
am 18.04.2010 - 01:33 Uhr
Oder mit Rules, damit dürfte das auch funktionieren.
Hi,
am 18.04.2010 - 07:32 Uhr
naja das problem ist das ich die rolle nur verteilen will wenn di eemail addresse in der Acces list ist.
Daher entfalen die 2 Module da ich da sonst customizen muss, dann kann ich es gleich selbst programmieren.
Aber danke für die tipps
lg
dave
Hö? Einfach in Rules eine
am 18.04.2010 - 12:45 Uhr
Hö? Einfach in Rules eine kleine PHP-Abfrage machen, dann als Action die Rolle zuweisen, fertig, das macht man in 5 Minuten.
Wenn ich mir deinen geposteten Quelltext ansehe, dann kommst du mit Rules weitaus besser weg, schließlich musst du da nur eine kleine Abfrage machen und überprüfen, das sind 3 oder 4 Zeilen. Da sind zwischen Rules und selbst programmieren schon noch große Unterschiede, zumal das mit deinem Quelltext ja nicht so recht zu klappen scheint. Das hast du mit Rules wesentlich schneller gezaubert, wenn man bedenkt, dass du erst herausfinden musst, wo da der Wurm drin usw.
Also ich würde dir nach wie vor Rules empfehlen, "customizen" musst du vermutlich überall.
Zumal, was genau ist denn diese "Access list"? Liegt die in einer extra Tabelle in der Drupal-DB? Wenn ja, dann musst du ohnehin selbst Hand anlegen.
Das brauch ich aber nicht
am 19.04.2010 - 08:14 Uhr
Das Modul das ich Schreibe soll ja nich nur diese Rolle zuweisen.
Die AccesList ist eine Lsite die jedes Drupal hat, dort kann man festlegen welche domains beim registrieren sofort activiert werden und blockiert.
Das komische ist das der Rest des Codes einwandfrei funktioniert nur das mit den Rollen nicht, warum auch immer.
Ein anderes Modul ist keine Option für mich weil ich will nicht lauter Module haben die ich sogesehen nicht brauche, das ist nur Datenmüll in der DB und unnötiger Administrationsaufwand.
Aber trotzdem danke für die Tipps.
LG
dave
Das Problem
am 19.04.2010 - 08:55 Uhr
liegt daran, dass er im SQL Befehl die Variable nicht mag.
Wenn ich einen statischen Wert wie 1234 nehme, dann wird die Query ausgeführt mit jeglicher variable nicht.
Jemand ne Idee.
lg
Vielleicht soltest Du in der
am 19.04.2010 - 11:57 Uhr
Vielleicht soltest Du in der Query statt '%%%s' nur %s schreiben. Die äußeren Quotes sind völlig ausreichend.
Beste Grüße
Werner
Hi
am 19.04.2010 - 12:04 Uhr
ne diese SQL Query tut ja was sie soll, und da es ein Like Befehl ist indem gestattet ist das nur vor dem Text noch was anderes stehen darf stimmt das genau.
Ich meinte den auskommentierten Befehl
Aber ich habe das Problem erkannt, da der User noch nicht gespeichert ist löscht drupal automatisch alle Rolleneinträge in der users_role, damit keine Probleme auftreten können, denn das Statement wurde ohne Fehler ausgeführt.
Naja egal ich mache die Rollenzuweisung beim ersten einloggen des Users da funktioniert es einwandfrei.
Aber trotzdem Danke für eure Ratschläge.
LG
dave