e747da2ec9ecf5610e6a0a54890e6d05cc7dc947
[misc/hallinta-vmail] / user.php
1 <?php
2
3
4 $buttons = <<<EOC
5 <p style="margin-top: 5px; margin-bottom: 4px; text-align: center;">
6 <button onclick="return passwd_delete()">Passwort löschen</button>
7 <button onclick="return passwd_set()">Passwort setzen</button>
8 </p>
9 EOC;
10
11 $jscode[] = <<<EOC
12 var post_save = user_post_save;
13
14 function user_post_save()
15 {
16   grid_update(grid);
17
18   if (!$('edit_id').value.length && !$('edit_forward').value.length)
19     alert("Bitte als nächstes ein Passwort setzen.\\nUnd danach direkt mit Mailprogram aktivieren.");
20 }
21
22 function passwd_delete_callback(data)
23 {
24     grid_update(grid);
25     info('Preis gespeichert');
26 }
27
28 function passwd_delete()
29 {
30     var eid = document.getElementById('edit_id');
31     if (!eid || !eid.value.length) return false;
32
33     var source = document.getElementById('source');
34     if (!source) return false;
35
36     var parms = 'source=' + source.innerHTML + '&callback=delete&';
37     parms += 'id=' + eid.value;
38
39     ajax_request('function', parms, passwd_delete_callback);
40
41     return false;
42 }
43
44 var passwd_popup = false;
45 function passwd_setpw_callback(data)
46 {
47     grid_update(grid);
48     info('Neues Passwort gespeichert');
49 }
50
51 function passwd_setpw()
52 {
53   passwd_popup.closePopup();
54
55   var pw1 = document.getElementById('pw_pass1');
56   var pw2 = document.getElementById('pw_pass2');
57
58   if (!pw1.value.length || !pw2.value.length || pw1.value != pw2.value) {
59     alert("Die Passwörter stimmen nicht überein!");
60     return false;
61   }
62
63   var source = document.getElementById('source');
64   var pw_id = document.getElementById('pw_id');
65   var pw_pass = document.getElementById('pw_pass1');
66
67   var parms = 'source=' + source.innerHTML + '&callback=setpw';
68   parms += '&id=' + pw_id.value;
69   parms += '&passwd=' + pw_pass.value;
70
71   ajax_request('function', parms, passwd_setpw_callback);
72
73   return false;
74 }
75
76 function passwd_set()
77 {
78   var edit_id = document.getElementById('edit_id');
79
80   if (!edit_id.value.length) return false;
81
82   var width = 245;
83   var height = 163;
84
85   if (!passwd_popup) {
86     var options = {hideOnClick: false, canDragFunc: true };
87     passwd_popup = new Rico.Popup(options);
88     passwd_popup.createWindow('<b>Neues Passwort setzen</b>','',height+'px',width+'px');
89     passwd_popup.contentDiv.style.backgroundColor='#e0e0e0';
90     passwd_popup.contentDiv.innerHTML = [
91                                          '<div class="form" style="margin-left: 10px; margin-right: 12px; padding-left: 10px; padding-bottom: 7px;">',
92                                          '<input type="hidden" name="pw_id" id="pw_id">',
93                                          '<label for="pw_email">E-Mail Adresse:</label><br>',
94                                          '<input type="text" name="pw_email" id="pw_email" size="23" readonly>',
95                                          '<div style="height: 5px;"></div>',
96                                          '<label for="pw_pass1">Neues Passwort:</label><br>',
97                                          '<input type="password" name="pw_pass1" id="pw_pass1" size="23">',
98                                          '<div style="height: 5px;"></div>',
99                                          '<label for="pw_pass2">erneut eingeben:</label><br>',
100                                          '<input type="password" name="pw_pass2" id="pw_pass2" size="23">',
101                                          '<div style="height: 5px;"></div>',
102                                          '<button onclick="return passwd_setpw()">Passwort setzen</button>',
103                                          '</div>',
104                                          ].join('');
105   }
106
107   var edit_username = document.getElementById('edit_username');
108   var edit_vmail_domain_id = document.getElementById('edit_vmail_domain_id');
109
110   var pw_id = document.getElementById('pw_id');
111   var pw_email = document.getElementById('pw_email');
112
113   pw_id.value = edit_id.value;
114   pw_email.value = edit_username.value + '@' + edit_vmail_domain_id.options[edit_vmail_domain_id.selectedIndex].innerHTML;
115
116   var x = Math.floor((RicoUtil.windowWidth()-width)/2);
117   var y = Math.floor((RicoUtil.windowHeight()-height)/2);
118   passwd_popup.openPopup(x,y);
119
120   var pw_pass1 = document.getElementById('pw_pass1');
121   pw_pass1.value = '';
122   var pw_pass2 = document.getElementById('pw_pass2');
123   pw_pass2.value = '';
124   pw_pass1.focus();
125
126   return false;
127 }
128 EOC;
129
130 $mask = array(
131               'table' => 'vmail_user',
132               'title' => 'Mailboxen und Weiterleitungen',
133               'join' => array('vmail_domain ON vmail_domain_id = vmail_domain.id'),
134               'list' => array(
135                               'id' => array(
136                                             'name' => 'ID',
137                                             'visible' => false,
138                                             'sql' => 'vmail_user.id',
139                                             ),
140                               'email' => array(
141                                             'name' => 'E-Mail',
142                                             'width' => 330,
143                                             'type' => 'text',
144                                             'sql' => "username || '@' || name",
145                                             'specs' => "filterUI: 't'",
146                                             ),
147                               'forward' => array(
148                                             'name' => 'Forward',
149                                             'width' => 330,
150                                             'specs' => "filterUI: 't'",
151                                             ),
152                               'pw' => array(
153                                             'name' => 'Pass',
154                                             'width' => 40,
155                                             'specs' => "ClassName: 'aligncenter'",
156                                             'control' => "new Rico.TableColumn.checkbox('t', 'f',0,1)",
157                                             'sql' => 'password IS NOT NULL AND length(password) > 0',
158                                             ),
159                               'active' => array(
160                                             'name' => 'on',
161                                             'width' => 40,
162                                             'specs' => "ClassName: 'aligncenter'",
163                                             'control' => "new Rico.TableColumn.checkbox(1, 0,0,1)",
164                                             ),
165                               ),
166               'edit' => array(
167                               'username' => array(
168                                             'name' => 'Usename',
169                                             'type' => 'text',
170                                             'size' => 21,
171                                             'required' => true,
172                                             ),
173                               'vmail_domain_id' => array(
174                                             'name' => 'Domain',
175                                             'type' => 'select',
176                                             'options' => 'SELECT id,name AS text FROM vmail_domain ORDER BY name',
177                                             'option_empty' => '-- select --',
178                                             'required' => true,
179                                             ),
180                               'forward' => array(
181                                             'name' => 'Forward',
182                                             'type' => 'text',
183                                             'size' => 21,
184                                             'null' => true,
185                                             ),
186 /*
187                               'password' => array(
188                                             'name' => 'Passwort',
189                                             'type' => 'passwd',
190                                             'size' => 21,
191                                             'null' => true,
192                                             'func' => 'passwd_encrypt',
193                                             ),
194 */
195                               'active' => array(
196                                             'name' => 'aktiviert',
197                                             'type' => 'boolean',
198                                             ),
199                               'buttons' => array(
200                                             'type' => 'html',
201                                             'code' => $buttons,
202                                             'sql' => false,
203                                             ),
204                               ),
205               'callbacks' => array(
206                                   'delete' => 'cb_delete',
207                                   'setpw' => 'cb_setpw',
208                                   ),
209               );
210
211 function passwd_encrypt($pw)
212 {
213   return md5($pw);
214 }
215
216 function cb_delete()
217 {
218   global $db;
219
220   $sql = sprintf("UPDATE vmail_user SET password = NULL WHERE id = %d", $_POST['id']);
221
222   $sth = $db->query($sql);
223
224   return true;
225 }
226
227 function cb_setpw()
228 {
229   global $db;
230
231   $sql = sprintf("UPDATE vmail_user SET password = '%s' WHERE id = %d",
232                  passwd_encrypt($_POST['passwd']),
233                  $_POST['id']);
234
235   $sth = $db->query($sql);
236
237   return true;
238 }
239
240 ?>