Frage die Zustimmung des Domaininhabers ab, wenn bei einem entsprechenden Handle die E-Mail-Adresse geändert wird und nutze dann designatedAgent in der API
Bernd Wurst

Bernd Wurst commited on 2018-01-30 18:32:15
Zeige 5 geänderte Dateien mit 46 Einfügungen und 1 Löschungen.

... ...
@@ -1,3 +1,5 @@
1
+var old_email;
2
+
1 3
 function populate_number(result) {
2 4
   var field = result.field;
3 5
   if (result.valid == 1) {
... ...
@@ -25,8 +27,23 @@ function check_number( field )
25 27
     }
26 28
 }
27 29
 
30
+function email_change() {
31
+    var new_email = $('#email').val();
32
+    if (new_email != old_email) {
33
+        $('#designated-row').show();
34
+    } else {
35
+        $('#designated-row').hide();
36
+    }
37
+}
38
+
28 39
 $(function() {
29 40
     $('#telefon').on("change paste", check_number("telefon") );
30 41
     $('#mobile').on("change paste", check_number("mobile") );
31 42
     $('#telefax').on("change paste", check_number("telefax") );
43
+    
44
+    if ($('#designated-row')) {
45
+        $('#designated-row').hide();
46
+        $('#email').on("change paste", email_change);
47
+        old_email = $('#email').val();
48
+    }
32 49
 });
... ...
@@ -40,6 +40,7 @@ if (! $new) {
40 40
     $c = get_contact($_REQUEST['copy']);
41 41
     $c['nic_handle'] = NULL;
42 42
 }
43
+$domains = domainlist_by_contact($c);
43 44
 
44 45
 $readonly = '';
45 46
 // Wenn das Handle beim NIC angemeldet ist, kann man Name und Land nicht mehr ändern
... ...
@@ -74,6 +75,11 @@ $odd = !$odd;
74 75
 $html .= '<tr class="'.($odd == true ? 'odd' : 'even').'"><td><label for="telefon">Telefax:</label></td><td><input type="text" name="telefax" id="telefax" value="'.$c['fax'].'"><span id="telefax_feedback"></span></td></tr>';
75 76
 $odd = !$odd;
76 77
 
78
+if ($domains) {
79
+    $html .= '<tr class="'.($odd == true ? 'odd' : 'even').'" id="designated-row"><td><label for="designated"><strong>Inhaberwechsel:</strong></label></td><td><input type="checkbox" name="designated" id="designated" value="yes"><label for="designated">Die Änderung der E-Mail-Adresse bewirkt rechtlich einen Inhaberwechsel. Ich bestätige, dass mir eine explizite Zustimmung des alten und neuen Inhabers für diese Änderung vorliegt. Eine Speicherung der Änderungen ist nur mit dieser Zustimmung möglich.</label></td></tr>';
80
+    $odd = !$odd;
81
+}
82
+
77 83
 $html .= '<tr class="even"><td>&nbsp;</td><td><input type="submit" value="Speichern" /></td></tr>';
78 84
 $html .= '</table>';
79 85
 
... ...
@@ -89,5 +96,14 @@ if (isset($_REQUEST['domainholder']) && $_REQUEST['domainholder'] == 1) {
89 96
 
90 97
 output(html_form('contacts_edit', 'save', 'id='.$_REQUEST['id']."&back=".urlencode($back).$domainholder, $html));
91 98
 
99
+if ($domains) {
100
+    output('<p>Folgende Domains sind von dieser Änderung betroffen:</p>
101
+            <ul>');
102
+    foreach ($domains as $dom) {
103
+        output('<li>'.$dom->fqdn.'</li>');
104
+    }
105
+    output('</ul>');
106
+}
107
+
92 108
 
93 109
 ?>
... ...
@@ -86,7 +86,8 @@ function upload_contact($c)
86 86
     $ac = contact_to_apicontact($c);
87 87
     if ($ac['id'] || $ac['handle']) {
88 88
         // Update
89
-        $data = array("contact" => $ac);
89
+        $data = array("contact" => $ac,
90
+                "actingAs" => "designatedAgent");
90 91
         $result = api_request('contactUpdate', $data);
91 92
         if ($result['status'] != 'success') {
92 93
             system_failure("Es gab ein Problem beim Hochladen der Adresse zum Domainregistrar. Das sollte nicht sein!");
... ...
@@ -151,6 +151,13 @@ if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'delete') {
151 151
         }
152 152
     }
153 153
 
154
+    $domains = domainlist_by_contact($c);
155
+    if ($domains) {
156
+        if ($c['email'] != $_REQUEST['email'] && !(isset($_REQUEST['designated']) && $_REQUEST['designated'] == 'yes')) {
157
+            system_failure("Sie müssen die explizite Zustimmung des Domaininhabers bestätigen um diese Änderungen zu speichern.");
158
+        }
159
+    }
160
+
154 161
     // Zuerst Kontakt speichern und wenn eine Änderung der E-Mail gewünscht war,
155 162
     // dann hinterher das Token erzeugen und senden. Weil wir für das Token die 
156 163
     // Contact-ID brauchen und die bekommen wir bei einer Neueintragung erst nach 
... ...
@@ -88,3 +88,8 @@ p.contact-usage {
88 88
 
89 89
 p.contact-actions {
90 90
 }
91
+
92
+tr#designated-row {
93
+    border: 2px solid red;
94
+}
95
+
91 96