create User programmatisch nach E-Mail-Confirmation
am 23.05.2019 - 11:46 Uhr in
die Situation:
Nach dem Absenden eines Webformulars (mit swiftmailer) bekommt der User eine Mail mit confirm-Link, der auf eine Seite führt, wo er seine Angaben bestätigen oder ablehnen kann (funktioniert soweit).
die Aufgabe:
Nach der Bestätigung soll ein neuer User (mit spezieller Rolle) im System angelegt werden, und er soll eine Mail bekommen mit temporären Zugangsdaten und einem Link, mit dem er auf die erzeugte Profil-Seite kommt, wo er seine Angaben modifizieren kann (Passwort u.a.).
die Fragen:
Wie geht man sowas prinzipiell an?
Mit dem Rules-Modul kann ich eine reaction rule "Nach dem Speichern von email confirmation" anlegen, und als Aktion "Einen neuen Benutzer erstellen" festlegen.
Das habe ich nicht ausprobiert, weil ich nicht sehe, wie ich hier spezielle Angaben festlegen kann, insbesondere die spezielle Rolle ($profile => 'type').
Ich würde das lieber programmatisch machen, wie z.B. hier.
Wie macht man das?
mfG, Michael
- Anmelden oder Registrieren um Kommentare zu schreiben
das ist das Standardverfahren bei Selbstregistrierung
am 23.05.2019 - 12:17 Uhr
Wenn die Bestätigung durch einen Admin erforderlich ist, wird der User informiert, sobald der Admin bestätigt hat.
Der gesamte Mailverkehr wird vom Registrierungsprozess übernommen.
Dazu bedarf es keiner zusätzlichen Module.
Der Admin kann auch für eine Gruppe, oder für alle neuregistrierten, eine Gruppenzugehörigkeit festlegen.
Grüße
Ronald
ich weiß nicht, ob ich das richtig verstehe:
am 23.05.2019 - 13:38 Uhr
der Ablauf:
1. der (anonyme) User sendet ein Fomular ab (mit Mail-Adresse und Name)
2. er bekommt eine Mail mit confirmation-Link
3. er bestätigt dort seine Mail-Adresse
und dann?
Unter Konto-Einstellungen steht: "Besucher dürfen Konten anlegen, diese müssen aber abschließend durch einen Administrator freigeschaltet werden."
wie denn?
Ich wollte das Konto automatisch erzeugen mit Schritt 3 (Bestätigung auf der confirm-Seite) - dann ist der User kein anonymer mehr, sondern ein registrierter mit bestimmter Rolle.
Oder wie legt ein nicht angemeldeter User ein neues Konto an?
Die Bestätigung durch den Admin kann doch erst erfolgen, wenn das neue Profil existiert.
Michael
richtig - der User legt sein Konto an
am 24.05.2019 - 07:54 Uhr
das bleibt gesperrt, bis ein Admin es freigegeben hat.
Sowohl der User als auch der Admin erhalten eine Nachricht per Mail.
Wenn der Admin das Konto freigegeben hat, bekommt der User eine weitere Mail mit einem Link für den Erstzugang.
Dies ist in Drupal bereits so geregelt und du musst dafür nichts weiter tun.
Eventuell solltest die die Mailtexte bei den Einstellungen anpassen.
Grüße
Ronald
das wollte ich eben vereinfachen:
am 24.05.2019 - 11:41 Uhr
nochmal:
1. der User sendet ein Fomular ab (z.B. eine Anfrage nach einer Veranstaltung)
2. er bekommt eine Mail mit confirmation-Link - ERSTE Mail
3. der Link führt auf die confirm-Seite
4.a wenn er dort seine Mail-Adresse ablehnt, wird er nach
<front>
geleitet4.b wenn er sie bestätigt, wird er nach
/user/register
geleitet (ERST HIER legt er ein Konto an)Hier gibt es jetzt die zwei Einstellungsmöglichkeiten:
[checkBox] Bestätigung per E-Mail verlangen, wenn ein Besucher ein Benutzerkonto anlegt
Neue Benutzer müssen ihre E-Mail-Adresse vor der Anmeldung an der Website validieren. Ihnen wird ein systemgeneriertes Kennwort zugewiesen. Wenn diese Einstellung inaktiviert ist, werden Benutzer unmittelbar nach der Registrierung angemeldet und können ihr eigenes Kennwort während der Registrierung auswählen.
5.a wenn der Admin es freigibt, bekommt der User eine ZWEITE Mail mit confirm-Link
oder
5.b der User kann sofort ein Konto anlegen, mit eigenem Username und PW - das könnte dann aber auch jeder andere, ohne die erste confirmation
Das wollte ich vereinfachen, indem ich mit der ersten confirmation selber ein Konto programmatisch erzeuge, und der User nur noch eine zweite Mail mit den Zugangsdaten bekommt, die er dann selber modifizieren kann.
(ein anderes Problem: wie erzeugt man so einen Zugang temporär - für 24 oder 48 Stunden?)
Michael