Node freischalten mit token und email
am 20.10.2015 - 13:52 Uhr in
Hallo,
ich suche verzweifelt eine Antwort !
1.) Ich habe einen NodeTyp "Termineintrag", damit kann jeder einen Termin erstellen.
2.) Jetzt soll aber nicht das "User Registrations" - Verfahren angewendet werden.
Sondern der Termin soll mit einer Email (Mailfeld im NodeTyp) bestätigt werden.
Der Eintrag (Node ID?) wird gespeichert, der Ersteller bekommt eine EMAIL, in dem er auf einen Pfad (Token mit der richtigen Node ID) klickt um diesen Eintrag bestätigt/Freischaltet,
(Das ist ja dasselbe Verfahren wie beim Benutzer freischalten.)
Könnte mir jemand etwas genauer den Weg dahinweisen?? insbesonderem mit dem "Trigger" + etwas mehr mit "Rules" habe ich kaum Erfahrung.
Danke vorab !!
LG Peter
- Anmelden oder Registrieren um Kommentare zu schreiben
Du brauchst zwei Dinge
am 20.10.2015 - 15:00 Uhr
Zunächsteinmal wird der Node einfach gespeichert (evtl. ohne Veröffentlichen), das kann man beim content_type einstellen.
Dieser Vorgang löst eine E-Mail aus (Rules)
Darin kann natürlich wiederum ein Aufruf mit Parameter sein, der die Veröffentlichung,/Freischaltung des Nodes auslöst.
Da fällt mir nichts fertiges ein.
Grüße
Ronald
Hallo Ronald, ja es gibt nix
am 20.10.2015 - 15:06 Uhr
Hallo Ronald,
ja es gibt nix fertiges, aber ich habe schon öfters im Netz gelesen, das solch eine Lösung gesucht wird, ich glaube sogar das Wordpress ein Plugin hat....
BIN ABER DRUPAL <*grins*>.
Danke für Deinen Anstoß. Hoffe es geht Dir gut (unbekannter Weise)
Ich Frage weiter.
LG Peter
Ich frage mal anders
am 20.10.2015 - 15:23 Uhr
Ich frage mal anders, wie könnte der Token Pfad auf die genau Node Id aussehen ?
Ohne ein eigenes Modul wird
am 20.10.2015 - 15:26 Uhr
Ohne ein eigenes Modul wird es nicht gehen. Ich skizziere mal eine Lösung, ohne sie probiert zu haben:
Dein Termin bekommt ein Feld, das niemand ausfüllen darf. Vor der Speicherung des Nodes wird das Feld mit einer hinlänglich zufälligen Zahl gefüllt (hook_node_presave). Außerdem legst Du mit hook_menu einen Pfad an. Wenn jetzt ein Termin gespeichert wird (unveröffentlicht) springt eine Rule an (after savaing of new node of type Termin) und sendet eine Email, die einen Link auf den angelegten Pfad schickt mit dieser Zufallszahl (sie muß also auch lang genug sein, daß sie nicht mittels Brute-Force zu ermitteln ist). In dem Menüpunkt hast Du eine Funktion hinterlegt, die den Parameter, also Deinen Zufallswert, übernimmt und per Datenbankabfrage prüft, ob es einen Termin mit diesem Wert gibt. Wenn ja wird der veröffentlicht, wenn nein passiert nichts.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Nein nein Werner ....
am 20.10.2015 - 16:10 Uhr
Nein nein Werner .... Missverständnis der Gast schreibt den Termin ins "Date" Feld.
LG
NACHTRAG: Ich verstehe, kann es aber nicht umsetzten, hört sich sehr logisch an.
die Hauptproblematik ist die Sicherheit
am 20.10.2015 - 20:56 Uhr
Es gibt immer Idioten, die Systeme aushebeln wollen.
Du kannst es aber vereinfachen, indem du den Termin anlegen lässt, die Bestätigung aber nur mit einer Anmeldung ermöglichst.
Dennoch brauchst du eine crongesteuerte Bereinigungsroutine, die alle nicht bestätigten Termine löscht.
Ein System, in dem User ohne Anmeldung etwas eingeben können, ist hochgradig problematisch, weil es schnell von irgendwelchen Bots gefunden und bombardiert wird.
In jedem Falle ist Honeypot anzuraten, damit zumindest die normalen Automaten scheitern.
Überlege dir lieber eine Organisation, dass du deine Kunden zur Registrierung bringst, ehe sie einen Termin anfordern.
Egal womit du es realisierst, du läufst Gefahr, dir dein System zuballern zu lassen, und den Überblick komplett zu verlieren.
Grüße
Ronald
Danke Werner !
am 20.10.2015 - 21:06 Uhr
Danke Werner !
wie geht das ? ->
am 20.10.2015 - 21:11 Uhr
Danke Ronald !
wie geht das ? -> Erst Termin Node (unveröffentlicht mit chapta) erstellen und dann Registrierung ?
(Hört sich besser an.)
LG P
Es gibt immer Idioten, die Systeme aushebeln wollen.
Du kannst es aber vereinfachen, indem du den Termin anlegen lässt, die Bestätigung aber nur mit einer Anmeldung ermöglichst.
Dennoch brauchst du eine crongesteuerte Bereinigungsroutine, die alle nicht bestätigten Termine löscht.
Ein System, in dem User ohne Anmeldung etwas eingeben können, ist hochgradig problematisch, weil es schnell von irgendwelchen Bots gefunden und bombardiert wird.
In jedem Falle ist Honeypot anzuraten, damit zumindest die normalen Automaten scheitern.
Überlege dir lieber eine Organisation, dass du deine Kunden zur Registrierung bringst, ehe sie einen Termin anfordern.
Egal womit du es realisierst, du läufst Gefahr, dir dein System zuballern zu lassen, und den Überblick komplett zu verlieren.
Jaja, da gibts nichts
am 21.10.2015 - 08:51 Uhr
Jaja, da gibts nichts fertiges. It's Drupal Leute.
https://www.drupal.org/project/rules_link
Setzt allerdings eine vorhandene Anmeldung voraus.
Viele Grüße
Roger
Drupalentwickler München
CMS Frameworker Drupal @ Reinblau
dafür wirst du selbst ein Modul schreiben müssen,
am 21.10.2015 - 09:01 Uhr
das sich von einer rule triggern lässt, oder von cron aufgerufen wird.
Aber auch da musst du natürlich mit massenhaften Anmeldungen von Bots und Idioten rechnen.
Überlege nochmal, ob du deine Kunden/Interessenten nicht dazu bewegen kannst, zuerst die Registrierung und dann die Terminanfrage vorzunehmen.
Auch dann wirst du mit fakeregistrierungen umgehen müssen. Honeypot wird dir einen Großteil ausfiltern können, aber kann auch nur bestimmte Automaten ausfiltern.
Grüße
Ronald