Bernd Wurst commited on 2018-01-24 10:34:58
Zeige 2 geänderte Dateien mit 83 Einfügungen und 9 Löschungen.
... | ... |
@@ -76,6 +76,16 @@ function get_contacts() { |
76 | 76 |
return $ret; |
77 | 77 |
} |
78 | 78 |
|
79 |
+function have_mailaddress($email) |
|
80 |
+{ |
|
81 |
+ $cid = (int) $_SESSION['customerinfo']['customerno']; |
|
82 |
+ $result = db_query("SELECT id FROM kundendaten.contacts WHERE customer=? AND email=?", array($cid, $email)); |
|
83 |
+ if ($result->rowCount() > 0) { |
|
84 |
+ return true; |
|
85 |
+ } |
|
86 |
+ return false; |
|
87 |
+} |
|
88 |
+ |
|
79 | 89 |
|
80 | 90 |
function get_kundenkontakte() { |
81 | 91 |
$cid = (int) $_SESSION['customerinfo']['customerno']; |
... | ... |
@@ -87,6 +97,65 @@ function get_kundenkontakte() { |
87 | 97 |
return $ret; |
88 | 98 |
} |
89 | 99 |
|
100 |
+function save_emailaddress($id, $email) |
|
101 |
+{ |
|
102 |
+ // FIXME |
|
103 |
+} |
|
104 |
+ |
|
105 |
+function save_contact($c) |
|
106 |
+{ |
|
107 |
+ for ($i=0;array_key_exists($i, $c);$i++) { |
|
108 |
+ unset($c[$i]); |
|
109 |
+ } |
|
110 |
+ unset($c['state']); |
|
111 |
+ unset($c['lastchange']); |
|
112 |
+ unset($c['nic_id']); |
|
113 |
+ unset($c['nic_handle']); |
|
114 |
+ unset($c['email']); |
|
115 |
+ $c['customer'] = (int) $_SESSION['customerinfo']['customerno']; |
|
116 |
+ if ($c['id']) { |
|
117 |
+ // Kontakt bestaht schon, Update |
|
118 |
+ db_query("UPDATE kundendaten.contacts SET company=:company, name=:name, address=:address, zip=:zip, city=:city, country=:country, phone=:phone, mobile=:mobile, fax=:fax, pgp_id=:pgp_id, pgp_key=:pgp_key WHERE id=:id AND customer=:customer", $c); |
|
119 |
+ } else { |
|
120 |
+ unset($c['id']); |
|
121 |
+ // Neu anlegen |
|
122 |
+ db_query("INSERT INTO kundendaten.contacts (customer, company, name, address, zip, city, country, phone, mobile, fax, pgp_id, pgp_key) VALUES (:customer, :company, :name, :address, :zip, :city, :country, :phone, :mobile, :fax, :pgp_id, :pgp_key)", $c); |
|
123 |
+ $c['id'] = db_insert_id(); |
|
124 |
+ } |
|
125 |
+ return $c['id']; |
|
126 |
+} |
|
127 |
+ |
|
128 |
+ |
|
129 |
+function send_emailchange_token($id, $email) |
|
130 |
+{ |
|
131 |
+ if (! check_emailaddr($email)) { |
|
132 |
+ system_falure("Die E-Mail-Adresse scheint nicht gültig zu sein."); |
|
133 |
+ } |
|
134 |
+ $args = array("id" => (int) $id, |
|
135 |
+ "email" => $email, |
|
136 |
+ "token" => random_string(20)); |
|
137 |
+ |
|
138 |
+ db_query("INSERT INTO kundendaten.mailaddress_token (token, expire, contact, email) VALUES (:token, NOW() + INTERVAL 1 DAY, :id, :email)" , $args); |
|
139 |
+ DEBUG('Token erzeugt: '.print_r($args, true)); |
|
140 |
+ $message = 'Diese E-Mail-Adresse wurde angegeben als möglicher Domaininhaber oder Kundenkontakt bei schokokeks.org Hosting. |
|
141 |
+ |
|
142 |
+Bitte bestätigen Sie mit einem Klick auf den nachfolgenden Link, dass diese E-Mail-Adresse funktioniert und verwendet werden soll: |
|
143 |
+ |
|
144 |
+ '.config('webinterface_url').'/verify'.$args['token'].' |
|
145 |
+ |
|
146 |
+Wenn Sie diesen Link nicht innerhalb von 24 Stunden abrufen, wird Ihre Adresse gelöscht und nicht verwendet. |
|
147 |
+Sollten Sie mit der Verwendung Ihrer E-Mail-Adresse nicht einverstanden sein, so ignorieren Sie daher bitte diese Nachricht oder teilen Sie uns dies mit. |
|
148 |
+ |
|
149 |
+-- |
|
150 |
+schokokeks.org GbR, Bernd Wurst, Johannes Böck |
|
151 |
+Köchersberg 32, 71540 Murrhardt |
|
152 |
+ |
|
153 |
+https://schokokeks.org |
|
154 |
+'; |
|
155 |
+ # send welcome message |
|
156 |
+ mail($email, '=?UTF-8?Q?Best=C3=A4tigung_Ihrer_E-Mail-Adresse?=', $message, "X-schokokeks-org-message: verify\nFrom: ".config('company_name').' <'.config('adminmail').">\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\n"); |
|
157 |
+ |
|
158 |
+} |
|
90 | 159 |
|
91 | 160 |
function update_pending($contactid) { |
92 | 161 |
$contactid = (int) $contactid; |
... | ... |
@@ -57,17 +57,22 @@ $c['fax'] = maybe_null($_REQUEST['telefax']); |
57 | 57 |
|
58 | 58 |
// FIXME: PGP-ID/Key fehlen |
59 | 59 |
|
60 |
+// Zuerst Kontakt speichern und wenn eine Änderung der E-Mail gewünscht war, |
|
61 |
+// dann hinterher das Token erzeugen und senden. Weil wir für das Token die |
|
62 |
+// Contact-ID brauchen und die bekommen wir bei einer Neueintragung erst nach |
|
63 |
+// dem Speichern. |
|
60 | 64 |
|
61 |
-if ($c['email'] != $_REQUEST['email']) { |
|
65 |
+$id = save_contact($c); |
|
66 |
+$c['id'] = $id; |
|
62 | 67 |
|
68 |
+if ($c['email'] != $_REQUEST['email']) { |
|
69 |
+ if (have_mailaddress($_REQUEST['email'])) { |
|
70 |
+ save_emailaddress($c['id'], $_REQUEST['email']); |
|
71 |
+ } else { |
|
72 |
+ send_emailchange_token($c['id'], $_REQUEST['email']); |
|
73 |
+ } |
|
63 | 74 |
} |
64 |
- |
|
65 |
-// e-mail-Adresse geändert? |
|
66 |
-// -> token generieren / senden |
|
67 |
-// ... |
|
68 |
-// speichern |
|
69 |
- |
|
70 |
- |
|
71 |
- |
|
72 | 75 |
|
73 | 76 |
|
77 |
+if (! $debugmode) |
|
78 |
+ header("Location: list"); |
|
74 | 79 |