Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Anfängerfragen ›

[gelöst]User status "pending" einführen

Eingetragen von dontgotanick (156)
am 12.04.2010 - 10:39 Uhr in
  • Anfängerfragen
  • Drupal 6.x

Hallo,

ich wollte mal fragen ob sich damit shcon mal wer befasst hat und mir evtl ein paar Ratschläge geben kann.

Die Situation ist folgende, ich würde gerne 3 verschiedene Benutzer Gruppen haben.

  1. Benutzer registriert sich, ist in der Accept Liste, hat sofort Zugriffsrechte, und bekommt eine Begrüßungsmail.
  2. Benutzer ist registriert, seine email adresse gibt es nicht mehr, wird geblocked.
  3. Benutzer registriert sich, email ist nicht in Accept oder Deny Liste, dieser sollte dann pending sein, Begrüßungsemail mit info pending,
    Admin bekommt email das er prüfen soll.

Dafür muss ich mir ja ein Modul schreiben, dass dem Modul User Register Notification ähnelt.
Meine Frage ist nun hat jemand schon sowas oder was ähnliches geschrieben udn kann mir ein paar Tips geben?
Wie ist das mit dem neuen Status pending, den gibt es ja nicht wie führe ich den ein.

Über Hilfe wäre ich sehr erfreut.

Fange jetzt mal selbst an, falls ich erfolgreich bin werde ich den Code posten falls es wen interresiert.

LG

Dave

‹ Theme Probleme Views - die 200 aktuellstem Artikel einer Kategorie anzeigen ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Dazu braucht es eigentlich

Eingetragen von wla (9461)
am 12.04.2010 - 11:50 Uhr

Dazu braucht es eigentlich kein Modul. Wenn ein User sich noch nicht einloggen kann, weil er noch nicht freigeschaltet ist, ist er Gast. Du kannst in Deinem System einstellen, daß User nur nach Freigabe Durch einen Admin registriert werden. Die zugehörigen Mails sind dazu schon im System vorhanden. Mehr hast Du nicht zu tun.
Willst Du es mit einem Pending Status umsetzten einfach die Userregistrierung auf automatisch setzen und mit auto_assign_role den User in die Rolle "Pending" stecken und dieser Rolle alle Rechte nehmen. Der Admin vergibt dann für diese User eine passende Rolle. Die Benachrichtigung des Admin per Email kannst Du über Rules erreichen.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi

Eingetragen von dontgotanick (156)
am 12.04.2010 - 12:02 Uhr

danke für die schnelle Antwort.

Habe das auch gerade gefunden.

Das Problem ist nur das dann auch die Accept Liste nicht mehr berücksichtigt wird, bei denen ich ja gleich will das der Account funktioniert.
Das kann ich aber über eine Modifikation des Codes ändern. Sollte nicht schwer sein.

Wenn ich das mit dem Pending mache, sind doch alle auf pending auch die in der Accept List oder?

LG

dave

  • Anmelden oder Registrieren um Kommentare zu schreiben

Die User sind dann bereits

Eingetragen von wla (9461)
am 12.04.2010 - 13:32 Uhr

Die User sind dann bereits zugelassene User und fallen in die Rolle "authenticated User". Damit mußt Du dieser Rolle alle Rechte weg nehmen. Vielleicht ist es sogar besser, das mit dem "Pending"-Zustand gleichzusetzen. Der Admin hebt dann den User in eine andere Rolle. Deine Accept-Liste ist dann allerdings außer Funktion. Du könntest evtl in Rules eine Regel über PHP einbauen und den User in eine andere Rolle heben lassen. Auch ein "Deny" könnt vielleicht so abgebildet werden. Das solltest Du dann mal testen.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi

Eingetragen von dontgotanick (156)
am 12.04.2010 - 14:10 Uhr

also ich habe das jetzt wie folgt gemacht.

Eine Rolle die nur für user freischalten zuständig ist um später besser an die email Adresse zu kommen.

Jedoch habe ihc noch ein Problem, wie heißt denn der Aufruf um die Acces Lsite zu überprufen von drupal, daran harperts noch ?

Da das hier leider nicht funktioniert wie gewünscht: variable_get('user_email_verification', TRUE)

<?php



// david
     
     
if(variable_get('user_email_verification', TRUE)){
     
$sql = "INSERT INTO drupal_users_roles (uid, rid) VALUES ($account->uid, 3)";
     
db_query($sql);
     
$sql = "UPDATE drupal_users SET status = 1 WHERE uid = $account->uid";
     
db_query($sql);
     
// Create new user account, no administrator approval required.
     
$op = $notify ? 'register_admin_created' : 'register_no_approval_required';
     
_user_mail_notify($op, $account);
      if (
$notify) {
       
drupal_set_message(t('Password and further instructions have been e-mailed to the new user <a href="@url">%name</a>.', array('@url' => url("user/$account->uid"), '%name' => $account->name)));
      }
      else {
       
drupal_set_message(t('Your password and further instructions have been sent to your e-mail address.'));
       
$form_state['redirect'] = '';
        return;
      }
     
     
     
      }else{
     
_user_mail_notify('register_pending_approval', $account);
     
$sql = "SELECT uid FROM drupal_users_roles WHERE rid = 18";
     
$user = db_query($sql);
     
$sql = "SELECT mail FROM drupal_users WHERE uid = $user";
     
$mail = db_query($sql);
     
     
$message = array(
       
'to' => '$mail',
       
'subject' => t('User Registration, with unknown email-address'),
       
'body' => t('A User with an unknown e-mail address has registered. Username: $account->name e-mail: $account->mail'),
       
'headers' => array('From' => 'webmaster@configuration-workgroup.com'),
      );

     
drupal_mail_send($message);
     
     
     
drupal_set_message(t('Thank you for applying for an account. Your account is currently pending approval by the site administrator.<br />In the meantime, a welcome message with further instructions has been sent to your e-mail address.'));
     
$form_state['redirect'] = '';
      return;
        }
       
   
// david ende



?>

LG

dave

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hab es fertig falls es wen interresiert

Eingetragen von dontgotanick (156)
am 13.04.2010 - 12:37 Uhr

Hab eine Rolle eingefügt für den User der dann zur VErwaltung zuständig iust und die mails bekommt.

Kommt in den else Block Zeile 2394 users.module

<?php

 
// Create new user account, administrator approval required.
     
      // david
     
$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'){
     
$sql = "INSERT INTO drupal_users_roles (uid, rid) VALUES ($account->uid, 3)";
     
db_query($sql);
     
$sql = "UPDATE drupal_users SET status = 1 WHERE uid = $account->uid ";
     
db_query($sql);
     
// Create new user account, no administrator approval required.
     
$op = $notify ? 'register_admin_created' : 'register_no_approval_required';
     
_user_mail_notify($op, $account);
      if (
$notify) {
       
drupal_set_message(t('Password and further instructions have been e-mailed to the new user <a href="@url">%name</a>.', array('@url' => url("user/$account->uid"), '%name' => $account->name)));
      }
      else {
       
drupal_set_message(t('Your password and further instructions have been sent to your e-mail address.'));
       
$form_state['redirect'] = '';
        return;
      }
 
      }else{
     
_user_mail_notify('register_pending_approval', $account);
     
     
$sql = "SELECT uid FROM drupal_users_roles WHERE rid = 18";
     
$uid = db_query($sql);
     
$row = mysql_fetch_row($uid);
     
$sql = "SELECT mail FROM drupal_users WHERE uid = $row[0]";
     
$mail = db_query($sql);
     
$row = mysql_fetch_row($mail);
     
     
$trans = array (
       
"%name" => $account->name,
       
"%mail" => $account->mail
     
);
     
     
$body = "A User with an unknown e-mail address has registered. Username: %name e-mail: %mail";
     
     
     
     
$message = array(
       
'to' => $row[0],
       
'subject' => t('User Registration, with unknown email-address'),
       
'body' => strtr($body, $trans),
       
'headers' => array('From' => 'webmaster@configuration-workgroup.com'),
      );

     
drupal_mail_send($message);
     
     
     
drupal_set_message(t('Thank you for applying for an account. Your account is currently pending approval by the site administrator.<br />In the meantime, a welcome message with further instructions has been sent to your e-mail address.'));
     
$form_state['redirect'] = '';
      return;
        }
       
   
// david ende
   
}

?>

LG

dave

  • Anmelden oder Registrieren um Kommentare zu schreiben

Es ist prinzipiell keine gute

Eingetragen von wla (9461)
am 13.04.2010 - 15:14 Uhr

Es ist prinzipiell keine gute Idee den Core von Drupal zu hacken!!! Mit dem nächsten Update sind Deine Änderungen wieder weg und Du fängst von vorne an. Das sollte sich auch anders lösen lassen.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi das ist mir bewusst

Eingetragen von dontgotanick (156)
am 13.04.2010 - 15:23 Uhr

nur denke ich mal das ich solange ich bei drupal 6 bleibe das einfach so übernehmen kann.

Es gibt bestimmt eine elegantere Lösung, nur mir ist keine Eingefallen. :)

mfg

David Gillet

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also ich habe mich jetzt

Eingetragen von dontgotanick (156)
am 15.04.2010 - 12:05 Uhr

umentschieden und habe angefangen mein eigenes modul zu schreiben.

Es kann noch nicht viel, es hat nur eine configurations Page, sieht wie folgt aus:

<?php


function cwg_registration_menu() {

 
$items = array();

 
$items['admin/settings/cwg_registration'] = array(
   
'title' => 'CWG-Registration module settings',
   
'description' => 'Expands the registration process with certain notifications',
   
'page callback' => 'drupal_get_form',
   
'page arguments' => array('cwg_registration_admin'),
   
'access arguments' => array('access administration pages'),
   
'type' => MENU_NORMAL_ITEM,
   );

  return
$items;
}

/**
* Define the settings form.
*/
function cwg_registration_admin() {
$form = array();

$form['registration_confirmation_mail'] = array(
'#type' => 'textarea',
'#title' => t('Text of the confirmation mail'),
);

$form['registration_pending_mail'] = array(
'#type' => 'textarea',
'#title' => t('Text of the pending mail')
);

$form['registration_admin_mail'] = array(
'#type' => 'textarea',
'#title' => t('Text of the admin mail')
);

$form['registration_admin_mail_addresses'] = array(
'#type' => 'textfield',
'#size' => 75,
'#maxlength' => 75,
'#title' => t('Text of the admin mail')
);
return
system_settings_form($form);
}


?>

So jetzt würde ich natürlich gerne diese 4 Werte abspeichern, was empfehlt ihr mir in txt Dateien oder ein DB Table?
Wie bekomme ich den die Daten in das Form gibt es da sowas wie ein default Wert den ich setzten kann.

Ziel ist erstmal das ich die Emails sowie die Emailaddressen speichern und ändern kann.

Freue mich über jegliche Hilfe.

Danke im voraus.

LG

dave

  • Anmelden oder Registrieren um Kommentare zu schreiben

Habe

Eingetragen von dontgotanick (156)
am 19.07.2010 - 13:22 Uhr

alles in DB gespeichert und ich in den Registrierungs Prozess einmischt per passendem hook.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Нужна качественное стоматологическое лечение без неприятных ощущений в СПб?
  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Wochen 3 Stunden
  • Hey danke
    vor 2 Wochen 21 Stunden
  • Update: jetzt gibt's ein
    vor 2 Wochen 1 Tag
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 6 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 6 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 3 Tagen
  • In der entsprechenden View
    vor 3 Wochen 3 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 3 Tagen
  • gelöst
    vor 6 Wochen 9 Minuten
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 22 Stunden

Statistik

Beiträge im Forum: 250234
Registrierte User: 20453

Neue User:

  • Spravkiuxq
  • ByteScrapers
  • Mroppoofpaync

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 31 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association